Newsgroup: it.comp.lang.visual-basic
Titolo: mscomm32.ocx in terminal server

Salve a tutti,
ho questo problema. Ho sviluppato un'applicazione in VB6 che voglio far
girare su un terminal server Windows 2003. I client, collegandosi con
remote desktop connection, devono immettere i dati tramite un lettore
di barcode collegato alla porta seriale del client medesimo.
Ho configurato la sessione RDP in modo di avere il reindirizzamento dei
dati della seriale sul server. Ho fatto un test eseguendo nella
sessione RDP l'hyperterminal e leggendo un codice a barre e la stringa
è apparsa nella sua interezza.
A questo punto ho avviato la mia applicazione VB che utilizza l'ocx
MSCOMM32, ho letto il medesimo barcode constatando che nella proprietà
mscomm1.input la stringa mancava dei primi 13 caratteri. Ho provato
più volte, ma il risultato è sempre lo stesso: nell'hyperterminal il
barcode appare intero, nella proprietà input del MSCOMM32 mancano i
primi 15 caratteri.
Naturalmente sul mio laptop su cui ho sviluppato l'applicazione tale
problema non si verifica.
La porta è configurata con 9600 baud, 8 bit, no parity, 1 bit stop, no
controllo di flusso.
Qualcuno può aiutarmi.
Saluti.

 problema non si verifica.
Usi l'evento OnComm e appendi la .Input ad una variabile stringa, o 
esegui un ciclo di concatenazioni di .Input su una variabile stringa e 
ti fermi ad un terminatore?
Il tuo problema sembra quasi un utilizzo di OnComm senza 
concatenazione, ma con visualizzazione/utilizzo diretto della proprietà 
.Input.
Ciao
Alberto
-- 
Fabio Fazio: Se siamo alleati come mai nei nostri bar si vende Coca 
Cola e nei bar americani non si vende l'amaretto di Saronno?

Albe V° ha scritto:

Ho provato sia ciclando e concatenando in una variabile stringa il
contenuto di .input fino al raggiungimento del carattere <CR> di
.input, sia visualizzando, a titolo di prova, il contenuto di .input
direttamente in una textbox. ma il risultato non cambia.
Ho quasi il dubbio di una incompatibilita dell'ocx MSCOMM32 in windows
2003 server.
Ciao e grazie. Andrea

malanciuk ci ha detto :

No, ti posso garantire che funziona anche su 2003 server. E anche con 
la com remotata in rdp.
Posta il codice.
ciao
Alberto
-- 
La bellezza è opinabile, sulla bruttezza sono tutti d'accordo.

Albe V° ha scritto:

Private Sub Form_Load()
MSComm2.Settings = "9600,n,8,1"
MSComm2.CommPort = 2
MSComm2.PortOpen = True
End Sub
Private Sub MSComm2_OnComm()
Dim s_buffer As String
Dim s_input As String
s_input = MSComm2.Input
If InStr(s_input, Chr(13)) > 0 Then
   s_buffer = s_buffer & Left(s_input, InStr(s_input, Chr(13)) - 1)
   Me.Text1.Text = s_buffer
   s_buffer = ""
Else
   s_buffer = s_buffer & s_input
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSComm2.PortOpen = False
End Sub
Ciao. Andrea

 Ciao. Andrea
Ti faccio una modifica, ma il motivo poi lo devi scoprire tu:
Private Conteggio as Long
Private Sub Form_Load()
MSComm2.Settings = "9600,n,8,1"
MSComm2.CommPort = 2
MSComm2.RThreshold = 1
MSComm2.PortOpen = True
Conteggio=0
End Sub
Private Sub MSComm2_OnComm()
Dim s_buffer As String
Dim s_input As String
Conteggio=Conteggio+1
s_input = MSComm2.Input
If InStr(s_input, Chr(13)) > 0 Then
   s_buffer = s_buffer & Left(s_input, InStr(s_input, Chr(13)) - 1)
   Me.Text1.Text = CStr(conteggio) & "° Ricezione: " & s_buffer
   s_buffer = ""
Else
   s_buffer = s_buffer & s_input
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSComm2.PortOpen = False
End Sub
Ciao
Alberto
PS: se ti dico di fare un ciclo di concatenazioni, non dire che lo hai 
fatto, se poi ne fai una sola...
-- 
Alessandro Bergonzoni: Il tempo vola e noi no. Strano sarebbe se noi 
volassimo e il tempo no, il cielo sarebbe pieno di uomini con 
l'orologio fermo.

Albe V° ha scritto:

Effettivamente esegue due ricezioni successive.
Mi traeva in inganno il fatto che nel mio ambiente di sviluppo la
ricezione era unica.
Grazie 1000. Andrea