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就一点问题没有 哪位大侠知道 这是为什么啊,怎么解决? 展开
定义一个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就一点问题没有 哪位大侠知道 这是为什么啊,怎么解决? 展开
2个回答
展开全部
如你上一个问题那样,可以定时向串口发送数据,然后使用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)
另外的方法就是在发送完成后,稍等一下再接收数据,如下:
serialport1.write(send_byte1)
System.Threading.Thread.Sleep(100)'暂停100ms再接收数据,时间可以根据实际需要调整
serialport1.read(receive_byte1,0,18)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询