C# 串口通信DataReceived事件触发时机
count初值为0,State初始值为false且只要执行ClientPort_DataReceived(),State就会被设为true,执行ClientPort.Wr...
count初值为0,State初始值为false 且只要执行ClientPort_DataReceived(),State就会被设为true,执行 ClientPort.Write(bytevoltage, 0, 10)后另一程序回将该10个字节回发;但是下面的程序为什么会先执行SendVoltage(Int16[] voltagevalue)里的while循环5次之后再执行ClientPort_DataReceived()五次,不能动态改变State的值。
部分代码如下: 展开
部分代码如下: 展开
2个回答
展开全部
1、State 设置这个变量的作用是什么?
2、while 为什么要同时循环 5 次给 5 个通道发数据?
3、while循环的时候,程序此时处于死循环状态,等while循环结束后,程序才会苏醒;
程序苏醒后,才会进行串口接收。
2、while 为什么要同时循环 5 次给 5 个通道发数据?
3、while循环的时候,程序此时处于死循环状态,等while循环结束后,程序才会苏醒;
程序苏醒后,才会进行串口接收。
更多追问追答
追问
其实是这样的,我总共有18帧数据,每发完一帧就让对方返回接收到的数据,然后发送程序根据校验结果来确定重发(重发5次还是错的就返回,报错)还是发送下一帧数据
追答
也就是说,你5次数据,是发送给同一台设备的?
那你就不敢使用 while 等循环执行的工程,你应该在你串口接收里面做处理;
每当发送数据后,发送处于等待状态,而不是连续发送,等到串口返回数据,接收后;
根据接收到的数据做分析,如果数据校验正确,接着发下一条指令数据,串口等待验证;
如果数据校验不正确,重发上次的指令数据,然后等待串口接收,验证是否正确。
能否将你的代码发给我(你现在代码的截图),我实际测一下
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询