Problemas de procesamiento de datos de retorno de transmisión del puerto serie de VB.net
Usar procesamiento delegado:
Public?Class?Form1
Dim?mSTR?As?String
Dim?strData?As? Cadena
Dim?strDat?As?String
Dim?mRecvByte()?As?Byte
Dim?Hexsj?As?String
Dim?form2?As?Form
¿Privado?Objeto, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs)?SerialPort1.BytesToRead
ReDim?mRecvByte(mSize?-? 1)
SerialPort1.Read(mRecvByte,?0,?mSize)
BeginInvoke(New?EventHandler(AddressOf?ONMLoadA),?SerialPort1.BytesToRead())? Mostrar la cadena recibida usando un delegado
End?Sub
Sub?ONMLoadA(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs) ? Delegado
strDat?=?""
TextBox1.Text?=?""
Dim?i?As?Integer
For?i?=?0?To?UBound(mRecvByte)?' mSize?-?1
strData?=?strData??"
Siguiente
Dim?sj?As?Byte
For?i?=?1?To?Len(strData)?' se trata como un carácter ASCII
sj?=?Val(" &H"?Mid(strData,?i,?2))
Si?sj?lt;?32?Or?sj?gt;?128?Entonces?'Cuando hay un Chr(0) en el byte recibido, los caracteres siguientes se cortan
strDat?=?strDat?
Else
strDat?=?strDat?amp ;?Chr(sj )
Fin?Si
Siguiente
TextBox1.Text?=?strDat?'Mostrar caracteres
TextBox2 .Text?=? strData?' se muestra como hexadecimal
TextBox3.Text?=?Len(strData)?/3
Fin?