
VB中PC机与单片机通信
单片机中的数据是:0001020304'每发送一次指令,触发下面事件,返回数据串PrivateSubMSComm1_OnComm()DimInbyte()AsByteDi...
单片机中的数据是:00 01 02 03 04'每发送一次指令,触发下面事件,返回数据串Private Sub MSComm1_OnComm() Dim Inbyte() As Byte Dim buffer As String Dim max_minstr As String '读取仪表返回数据串 Select Case MSComm1.CommEvent Case comEvReceive Inbyte = MSComm1.Input ’将收到是字符放在 Inbyte中 For i = LBound(Inbyte) To UBound(Inbyte) '将收到的数据以字符形式显示,LBound是第一个字符,UBound是最后一个 buffer = buffer + Hex(Inbyte(i)) + Chr(32) buffer此时的值是16进制数+空格 Next i hhh = 1 Case comEvSend End Select '从右边开始取30个字符 max_minstr = Right(buffer,30) txtFields(1).Text = Val("&H" & Mid(max_minstr, 1) ‘从第一个值开始取,取全部字符 txtFields(2).Text = Val("&H" & Mid(max_minstr, 1, 1) ‘从第一个值开始取,取1个字符 txtFields(3).Text = Val("&H" & Mid(max_minstr, 2, 10) ‘从第2个值开始取,取10个字符 End Sub最后VB返回的值是 txtFields(1).Text 返回 64txtFields(2).Text 返回 4 txtFields(3).Text 返回 0请问为什么会这样?用串口调试精灵都没什么问题啊。
展开
2016-05-24
展开全部
设个断点,看看在退出comEvSend时,
buffer里存了什么数据,
Inbyte()里存了什么数据。
是单片机发送上来的么。
buffer里存了什么数据,
Inbyte()里存了什么数据。
是单片机发送上来的么。
更多追问追答
追问
对,我单片机存储器里面的数据是00 01 02 03 04 ,我想这些数字返回到VB的界面里面,txtFields(1).Text 返回的是64。改为 00 01 02 04 05,txtFields(1).Text 返回80,改为00 01 02 05 06,txtFields(1).Text 返回96 。好像每+1,VB里面显示的值就+16。
追答
可否把buffer放到个文本框里显示一下?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |