当前位置: 首页 > news >正文

成都企业网站建设价格第三方小程序商店

成都企业网站建设价格,第三方小程序商店,网站建设+管理系统开发,湖南网站建设制作公司在C#中使用串口接收数据时发现#xff0c;在完整的接收完一次数据后#xff0c;还会再次进入串口接收事件。 在网上搜索资料发现其他开发者也有遇到该问题#xff1a; [1] c#串口事件接受一次数据莫名其妙会触发两次 原文链接#xff1a;https://www.52pojie.cn/threa…在C#中使用串口接收数据时发现在完整的接收完一次数据后还会再次进入串口接收事件。 在网上搜索资料发现其他开发者也有遇到该问题 [1]  c#串口事件接受一次数据莫名其妙会触发两次   原文链接https://www.52pojie.cn/thread-1009851-1-1.html [2]Serial Port objects DataReceived Event firing twice   原文链接https://stackoverflow.com/questions/30296199/serial-port-objects-datareceived-event-firing-twice 其中[2]提到串口接收事件触发2次是正常的第1次是有数据接收第2次收到的是EOF标志直接忽略掉第2次就好了。 在串口接收事件开头加入该部分判断后如下 private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) {//接收到EOF则直接退出if (e.EventType System.IO.Ports.SerialData.Eof){return; }... } 在串口接收事件的if语句处设置断点进行调试第一次进入时e.EventType 为System.IO.Ports.SerialData.Chars串口缓冲区有3个字节需读取。 第2次进入时e.EventType 仍为System.IO.Ports.SerialData.Chars串口缓冲区有0个字节需读取。 通过程序调试可知程序第2次进入串口接收事件并不是因为接收到EOF标志即System.IO.Ports.SerialData.Eof而是接收到System.IO.Ports.SerialData.Chars但接收到的字节长度为0。 因此通过加入if (e.EventType System.IO.Ports.SerialData.Eof) return;的方式并不可行。既然可以保证在第1次进串口接收事件就将数据接收完毕且第2次进入串口接收事件的数据长度为0。则可通过判断接收字节长度为0就直接退出的方式忽略掉第2次进入的串口接收事件。 添加判断后的代码如下所示经验证该方法可行可以忽略掉第2次进入串口接收事件。具体导致进入第2次串口接收事件的原因还不明确需继续探究 private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) {//if (e.EventType System.IO.Ports.SerialData.Eof)//添加此判断在接收完一帧数据后第2次意外进入时会直接退出if (serialPort1.BytesToRead 0){return; //串口数据长度为0则直接退出}//串口接收并不是接收的每个字节都会进入该事件因此需在该事件中接收完数据Int32 readByteNum 0;/* 等待数据接收完成即3mS内串口接收到的数据长度不再变化则认为数据已经接收完成 */do{readByteNum serialPort1.BytesToRead;System.Threading.Thread.Sleep(10);} while (readByteNum serialPort1.BytesToRead serialPort1.BytesToRead 4096);serialPort1.Read(usartRecvBuffer, 0, readByteNum); //将串口缓冲区的数据保存至接收缓冲区serialPort1.DiscardInBuffer(); //清空串口缓冲区的内容//显示串口接收到的数据string str string.Empty;for (int i 0; i readByteNum; i){str (usartRecvBuffer[i].ToString(X02) );} #if USE_DELEGATEthis.UpdataControl(tboxRecv, str); #elsetboxRecv.Text str; #endif } 微软官方对 SerialPort.DataReceived 事件 的使用说明 原文链接https://docs.microsoft.com/zh-cn/dotnet/api/system.io.ports.serialport.datareceived?redirectedfromMSDNviewdotnet-plat-ext-5.0
http://www.zqtcl.cn/news/675230/

相关文章:

  • 网站建设从初级到精通网站开发成本预算价目表
  • 网站程序开发上海高端网站开发站霸网络
  • 企业网站对网络营销的意义环保材料 技术支持 东莞网站建设
  • 房地产网站建设价格买卖网站
  • 网站宣传方案开发专业网站
  • 电子商务+网站建设wordpress首页幻灯
  • 网站建设表格的属性学校网站建设命名
  • 清远网站建设自学网站开发要多久
  • 可信网站 quot 验证能防范哪些安全.教育类app开发价格表
  • 网站设计服务流程深圳网站设计公司费用大概多少
  • 邮件网站怎么做的本地计算机做网站服务器
  • 自己建的网站打不开html5 手机网站 模版
  • 网站建设跟网站结构如何提高网站排名的方法
  • 网站模板 缓存商标网上开店创业计划书
  • 沧州网站建设微艾薇怎样给企业做网站
  • 如何做淘宝客的网站个人网站设计与制作代码
  • 信用门户网站建设观摩惠州专业做网站
  • wordpress打开网站前广告佛山百度推广seo服务
  • 松北建设局网站vps 用ip可以访问网站么
  • 网站图片内容免费开源crm
  • wordpress调用分类栏目wordpress文章优化
  • 建站公司上海企业官网模板下载
  • 网站建设推广话术wordpress 不显示缩略图
  • 企业电子商务网站建设和一般百拓公司做网站怎么样
  • 吉林网站建设司上海什么做网站的公司比较好
  • 吉安市建设规划局网站jsp wordpress
  • 建设银行贵金属网站微信小程序注册后怎么使用
  • 如何做律师网站河南建网站 优帮云
  • 云阳如何做网站网站建设旅游
  • 推荐一个简单的网站制作单位网站服务的建设及维护