lammeBN
26-06-2008, 10:59
Ciao a tutti mi sto creando un programmino in Vb6 ed ho bisogno di gestire due porte seriali, sto usando il controllo mscomm ma sto trovando alcuni problemi.
Le porte sono aprte cosi
frm_main.seriale1.CommPort = Int(frm_main.txt_com1.Text)
frm_main.seriale1.RThreshold = 1
frm_main.seriale1.PortOpen = True
frm_main.seriale2.CommPort = Int(frm_main.txt_com2.Text)
frm_main.seriale2.RThreshold = 1
frm_main.seriale2.PortOpen = True
e tutto funziona bene
l'invio dei dati anche
frm_main.seriale2.Output = vBuffertx 'invio
ho alcuni problemi in ricezione, nel senso che so che mi vengono inviati un certo numero di byte e so che mi arrivano un due blocchi differenti dato che ho messo rtreshold a 1
la funzione di ricezione è questa
Private Sub seriale1_OnComm() 'ricezione su seriale numero 1
If seriale1.CommEvent = comEvReceive Then
Dim sInput As String, bInput() As Byte, n As Long
bInput = seriale1.Input
sInput = ""
For n = 0 To UBound(bInput)
sInput = sInput & Hex(bInput(n))
frm_main.lbl_ricevuto.Caption = frm_main.lbl_ricevuto.Caption & Hex(bInput(n)) & "_"
Next n
decodificamsg sInput
End If
End Sub
ora non dovrebbe "attivarsi in automatico ogni qual volta mi arriva un byte sulla seriale?
se ad esempio mi vengono inviati 5 byte io ne ricevo 3 credo che subito dopo dovrebbero arrivarmi i restanti, ma non funziona.....
spero di essermi spiegato grazie anticipate per l'aiuto
Le porte sono aprte cosi
frm_main.seriale1.CommPort = Int(frm_main.txt_com1.Text)
frm_main.seriale1.RThreshold = 1
frm_main.seriale1.PortOpen = True
frm_main.seriale2.CommPort = Int(frm_main.txt_com2.Text)
frm_main.seriale2.RThreshold = 1
frm_main.seriale2.PortOpen = True
e tutto funziona bene
l'invio dei dati anche
frm_main.seriale2.Output = vBuffertx 'invio
ho alcuni problemi in ricezione, nel senso che so che mi vengono inviati un certo numero di byte e so che mi arrivano un due blocchi differenti dato che ho messo rtreshold a 1
la funzione di ricezione è questa
Private Sub seriale1_OnComm() 'ricezione su seriale numero 1
If seriale1.CommEvent = comEvReceive Then
Dim sInput As String, bInput() As Byte, n As Long
bInput = seriale1.Input
sInput = ""
For n = 0 To UBound(bInput)
sInput = sInput & Hex(bInput(n))
frm_main.lbl_ricevuto.Caption = frm_main.lbl_ricevuto.Caption & Hex(bInput(n)) & "_"
Next n
decodificamsg sInput
End If
End Sub
ora non dovrebbe "attivarsi in automatico ogni qual volta mi arriva un byte sulla seriale?
se ad esempio mi vengono inviati 5 byte io ne ricevo 3 credo che subito dopo dovrebbero arrivarmi i restanti, ma non funziona.....
spero di essermi spiegato grazie anticipate per l'aiuto