vb.net 串口收发数据有问题

我定义了两个字节数组,每个里面存了18字节的数据定义一个timer每一秒发送一次给串口然后立即读取串口返回的13字节的数据dimsend_byte1(0to17)asby... 我定义了两个字节数组,每个里面存了18字节的数据
定义一个timer每一秒发送一次给串口 然后立即读取串口返回的13字节的数据
dim send_byte1(0 to 17) as bytes
dim receive_byte1(0 to 12) as bytes
dim send_byte2(0 to 17) as bytes
dim receive_byte2(0 to 12) as bytes
serialport1.write(send_byte1)
serialport1.read(receive_byte1,0,18)
serialport1.write(send_byte2)
serialport1.read(receive_byte2,0,18)
我觉得理论上没问题的 我用串口监测软件监控,发送是没问题的,接收的时候出问题,应该接收13个连续的字节,但是串口是分开接收的 ,先接收1个字节 再接收12个字节 我不知道错在了哪里,如果去掉send_byte2和receive_byte2就一点问题没有 哪位大侠知道 这是为什么啊,怎么解决?
展开
 我来答
恭华清幸含
2020-02-15 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:35%
帮助的人:582万
展开全部
不知道你是不是用51单片机往串口发数据,是的话那是因为51的sbuf最多存放8个字节,所以你发12个字节会分成两次发完。还有在接收的时候最好定义好通信协议,比如加一个侦头,一个侦尾,通过这两个字节的内容来接收数据。
老兄,提问还是给点悬赏分嘛,不要吝啬哪点分,知识是无价的,你给得越多,回答你的人才会越多。
麒麟中国China
2014-07-12 · TA获得超过244个赞
知道小有建树答主
回答量:300
采纳率:0%
帮助的人:117万
展开全部
如你上一个问题那样,可以定时向串口发送数据,然后使用SerialPort1_DataReceived事件接受数据,只需要设置SerialPort1.ReceivedBytesThreshold=13就可以(即串口接收13个字节触发SerialPort1_DataReceived事件),然后在SerialPort1_DataReceived事件中加入serialport1.read函数,处理接收的数据即可。
另外的方法就是在发送完成后,稍等一下再接收数据,如下:
serialport1.write(send_byte1)
System.Threading.Thread.Sleep(100)'暂停100ms再接收数据,时间可以根据实际需要调整
serialport1.read(receive_byte1,0,18)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式