VB 串口通信 二进制方式 事件驱动 由于协议里面8个字节是一条完整的信息,可否接收8个字节数据触发事件?
再者,协议的第一字节(低位)和第二字节(高位)代表地址编号(从001到999),如何把接收到的二进制数据转换成我们想要的十进制数据,程序该怎么写????(财富值不够不好意...
再者,协议的第一字节(低位)和第二字节(高位)代表地址编号(从001到999),如何把接收到的二进制数据转换成我们想要的十进制数据,程序该怎么写????(财富值不够不好意思)
展开
展开全部
可以,设置触发阀值即可,但不建议这样,
建议收到数据就接收(阀值为1),用一个buffer保存接收到的数据再处理,那样不会因为本地处理耗时导致丢包
建议收到数据就接收(阀值为1),用一个buffer保存接收到的数据再处理,那样不会因为本地处理耗时导致丢包
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1 只要有数据传来就会触发事件,这个是改不了的
2 收到的数据,截取固定长度,在前面加上 &H,用cint或clng转化成整数
2 收到的数据,截取固定长度,在前面加上 &H,用cint或clng转化成整数
更多追问追答
追问
哦 知道了 谢谢 想问你下如何截取固定的长度呢 比如我串口接收到64个字节(一条完整的信息 ) 怎么截取最开始的8个字节呢????
追答
'1. 截取很简单,下面先收取数据
dim sA as string
sA = oCom.Read
Do While sA ""
sA = oCom.Read
Loop
'2. 不过为了保证收到正确的数据,数据应该有自己的格式定义,有开始码和截止码.
‘应该对上面收到的数据判断开始码和截止码.
dim ia as integer
dim ib as integer,
dim sData as string
ia= instr(1,sa,"开始码")
ib= instr(1,sa,"截止码")
’3 去掉开始码和截止码,剩下数据
if ia>0 and ib>0 then
sdata=mid(sa,ia+len("开始码"),ib-ia-len("开始码"))
oCom.send "FF" 这里应该发送收到完整数据的回复消息
end if
'4 根据数据 ,截取想要的数据就简单了
dim lA as long
if sdata>"" then
la=clng("&h" & mid(sdata,1,8) )
end if
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询