VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • vb.net2010的serialport问题

在vb.net2010里使用serialport,
问题1:在DataReceive事件中调用控件显示数据,跨线程调用如何使用多个控件显示?图片中的委托定义是参考的,只可以在一个控件显示,小弟想把不同的数值显示在不同的控件,该如何做?
问题2:数据接收结果:当发送十六进制数123456时显示18.0,3.0,64.0,86.0对应取值12,03,40,56。这是什么原因?小弟理想中是发送12345678然后收到12、34、56、78对应的十进制数。
Dim inDataLen As Integer = SerialPort.BytesToRead() '获取接收缓冲区中数据的字节数
If inDataLen > 0 Then
Dim inBytes(inDataLen - 1) As Byte, bytes As Byte
Dim strHex As String = ""
SerialPort.Read(inBytes, 0, inDataLen)
For Each bytes In inBytes
strHex = strHex + [String].Format("{0:X2} ", bytes) '16进制
Next

If Len(Trim(strHex)) = 8 Then
datastring(1) = Mid(Trim(strHex), 1, 1)
datastring(2) = Mid(Trim(strHex), 2, 1)
datastring(3) = Mid(Trim(strHex), 3, 1)
datastring(4) = Mid(Trim(strHex), 4, 1)
datastring(5) = Mid(Trim(strHex), 5, 1)
datastring(6) = Mid(Trim(strHex), 6, 1)
datastring(7) = Mid(Trim(strHex), 7, 1)
datastring(8) = Mid(Trim(strHex), 8, 1)
End If
datatemp(1) = (Val("&H" & datastring(1)) * (16 ^ 1) + Val("&H" & datastring(2)) * (16 ^ 0))
TextBoxRecieve.Invoke(RecieveRefresh, Format$(datatemp(1), "0.0"))
datatemp(2) = (Val("&H" & datastring(3)) * (16 ^ 1) + Val("&H" & datastring(4)) * (16 ^ 0))
TextBoxRecieve.Invoke(RecieveRefresh, Format$(datatemp(2), "0.0"))
datatemp(3) = (Val("&H" & datastring(5)) * (16 ^ 1) + Val("&H" & datastring(6)) * (16 ^ 0))
TextBoxRecieve.Invoke(RecieveRefresh, Format$(datatemp(3), "0.0"))
datatemp(4) = (Val("&H" & datastring(7)) * (16 ^ 1) + Val("&H" & datastring(8)) * (16 ^ 0))
TextBoxRecieve.Invoke(RecieveRefresh, Format$(datatemp(4), "0.0"))


相关教程