VB 串口通信 二进制方式 事件驱动 由于协议里面8个字节是一条完整的信息,可否接收8个字节数据触发事件?

再者,协议的第一字节(低位)和第二字节(高位)代表地址编号(从001到999),如何把接收到的二进制数据转换成我们想要的十进制数据,程序该怎么写????(财富值不够不好意... 再者,协议的第一字节(低位)和第二字节(高位)代表地址编号(从001到999),如何把接收到的二进制数据转换成我们想要的十进制数据,程序该怎么写????(财富值不够不好意思) 展开
 我来答
dotma
2013-02-26 · 超过20用户采纳过TA的回答
知道答主
回答量:95
采纳率:100%
帮助的人:32.8万
展开全部
可以,设置触发阀值即可,但不建议这样,
建议收到数据就接收(阀值为1),用一个buffer保存接收到的数据再处理,那样不会因为本地处理耗时导致丢包
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱栀竹的人
2013-02-20 · TA获得超过1352个赞
知道大有可为答主
回答量:1743
采纳率:0%
帮助的人:1002万
展开全部
1 只要有数据传来就会触发事件,这个是改不了的
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
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式