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的值。
部分代码如下:
展开
 我来答
cjj796
推荐于2016-05-16 · TA获得超过8709个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:3453万
展开全部
1、State 设置这个变量的作用是什么?
2、while 为什么要同时循环 5 次给 5 个通道发数据?
3、while循环的时候,程序此时处于死循环状态,等while循环结束后,程序才会苏醒;
程序苏醒后,才会进行串口接收。
更多追问追答
追问
其实是这样的,我总共有18帧数据,每发完一帧就让对方返回接收到的数据,然后发送程序根据校验结果来确定重发(重发5次还是错的就返回,报错)还是发送下一帧数据
追答
也就是说,你5次数据,是发送给同一台设备的?
那你就不敢使用 while 等循环执行的工程,你应该在你串口接收里面做处理;
每当发送数据后,发送处于等待状态,而不是连续发送,等到串口返回数据,接收后;

根据接收到的数据做分析,如果数据校验正确,接着发下一条指令数据,串口等待验证;
如果数据校验不正确,重发上次的指令数据,然后等待串口接收,验证是否正确。

能否将你的代码发给我(你现在代码的截图),我实际测一下
hongqiazi
2013-09-07
知道答主
回答量:34
采纳率:100%
帮助的人:17.7万
展开全部
正在学习中,我也帮你顶一下, mark
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式