下面代码是我使用C#开发串口通信写的代码,在实现串口通信过程中,在数据接收线程中, 未加这条语句Thread.Sleep(50);我使用串口工具调试 ,串口通信正常,但是在与实际单片机通信过程中,出现数据不完整现象,经过多方查询,发现模拟状态下串口通信速率是理想状态,但是在实际通信过程中,串口通信并不是理想状态,有速率限制。

因此在接收串口通信时应该有一定的延时,这样给予串口充足时间接收收据,这样读取到的数据是完整的。

private delegate void DisplayDelegate(String ReceiveData);
private DisplayDelegate displayDelegate;//绑定委托方法
displayDelegate = new DisplayDelegate(ReceiveDataHandle);
//串口接收数据事件绑定
this.serialPort1.DataReceived += new  SerialDataReceivedEventHandler(serialPort1_DataReceived);private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{String ComRead=null;//串口通信过程中,串口实际传输速率并没有模拟的串口速率快,因此需要一定的延时等待传输完成,然后再在缓存中接收数据Thread.Sleep(50);//接收数据ComRead = comOperation.Com_Read(this.serialPort1, "ASCII");// LoggingFactory.SGetLog("LanShengIOT").OperationFormat(true, "接收数据为:{0}", ComRead);//利用委托处理接收的数据并更新UIthis.BeginInvoke(displayDelegate, ComRead);}
//ReceiveData  接收到的字符串数据
public void ReceiveDataHandle(String ReceiveData)
{//根据需要写处理代码
}
public String Com_Read(SerialPort serialPort, String EncodingRead)
{//开辟接收缓冲区byte[] ReDatas = new byte[serialPort.BytesToRead];//从串口读取数据serialPort.Read(ReDatas, 0, ReDatas.Length);//返回字符串return AddData(ReDatas, EncodingRead);}public String AddData(byte[] data,String EncodingRead)
{String ReadText = null; //设置发送编码格式switch (EncodingRead){//16进制case "HEX":StringBuilder sb = new StringBuilder();for (int i = 0; i < data.Length; i++){sb.AppendFormat("{0:x2}" + " ", data[i]);}ReadText=sb.ToString().ToUpper();break;//ASCII码case "ASCII":ReadText=new ASCIIEncoding().GetString(data);break;//UTF8case "UTF8":ReadText=new UTF8Encoding().GetString(data);break;case "Unicode":ReadText=new UnicodeEncoding().GetString(data);break;default:StringBuilder st = new StringBuilder();for (int i = 0; i < data.Length; i++){st.AppendFormat("{0:x2}" + " ", data[i]);}ReadText=st.ToString().ToUpper();break;}return ReadText;
}

C#串口通信数据不完整相关推荐

  1. (RS485 232串口通信数据解析实用干货(1)

    文章目录 (RS485 232串口通信数据解析实用干货(1) 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 ...

  2. 串口---串口通信数据位长度对传输数据的影响

    文章来源:https://blog.csdn.net/petershina/article/details/8612357 针对串口通信,关于设置数据位长度对通信的影响,如图: 在串口数据通信中,会看 ...

  3. 串口通信数据位长度对传输数据的影响

    http://blog.csdn.net/petershina/article/details/8612357 针对串口通信,关于设置数据位长度对通信的影响,如图: 在串口数据通信中,会看到串口参数设 ...

  4. 安卓与串口通信-数据分包的处理

    前言 本文是安卓串口通信的第 5 篇文章.本来这篇文章不在计划内,但是最近在项目中遇到了这个问题,正好借此机会写一篇文章,在加深自己理解的同时也让大伙对串口通信时接收数据可能会出现分包的情况有所了解. ...

  5. C# 解决串口接收数据不完整

    使用缓存机制完成.首先通过定义一个成员变量List<byte> buffer = new List<byte> (4096);用来存放所有的数据,在接收函数里,通过buffer ...

  6. stm32 串口通信数据移位寄存器_STM32串口接RS485丢码问题已解决*_*

    static void Rs4851Send(unsigned char *p,unsigned char length) { ///TIM_SetCounter(TIM(RS4851_TIM_NO) ...

  7. labview接收串口通信数据不正常的解决办法

    在昨天我写了采用挨个数发送的方法获得了正常的上位机数据. 但是在上位机中,数据显示并不正常. 如:1234会依次显示1234:1:2:3:4: 我的解决办法是:在接收到的数据之后加一个选择结构,如果接 ...

  8. electron+node+node-serialport nodeJs向串口发送数据,自定义收银客显设备

    文章目录 一.前言 二.了解客显设备 三.开始操作 index.html main.js 一.前言 electron+node+node-serialport 实现串口通信+electron-buil ...

  9. 串口通信学习(GPS模块)2021.5.10

    GPS串口通信学习实践 2021.5.10 1.串口通信简介 1.1 波特率 1.2 数据位 1.3 停止位 1.4 奇偶校验位 2.GPS模块串口通信配置 2.1 驱动安装 2.2 插入GPS模块 ...

最新文章

  1. 【转载】混合高斯模型(Mixtures of Gaussians)和EM算法
  2. 市场忽略了糖价的爆发力
  3. 高清还原破损视频,参数和训练时间减少三分之二,台大这项研究登上了BMVC 2019...
  4. 表单开发(二):获取单选按钮,多行文本框,下拉菜单,捆绑元素数据,用户注册
  5. 干货整理及PPT下载福利 2017(上海)人工智能产品经理大会
  6. CUDA学习----sp, sm, thread, block, grid, warp概念
  7. 计算机成绩表及格率怎么算,卫生资格人机对话如何考试如何评分?成绩如何核算?...
  8. python水平_如何在python中水平透视表
  9. python参数传递方法_【python学习笔记】函数参数传递方法
  10. theme vscode 护眼_vscode的颜色设置(护眼模式)
  11. javaSE基础之字符串
  12. 软件测试周刊(第25期):不要成天到晚地找意义
  13. Jimmy Nilsson-应用领域驱动设计和企业应用架构模式-UMLChina讲座-音频和幻灯
  14. 【Linux学习笔记04】Linux常用命令
  15. 如何使用Transformers和Tokenizers从头开始训练新的语言模型
  16. 201871010134-周英杰《面向对象程序设计(Java)》第四周学习总结
  17. 疫情下绩效管理和奖金激励怎么做
  18. 关于下拉框select和option默认值选定
  19. 计算机实验adda转换心得体会,dsp实验ADDA
  20. 解决uniapp微信开发小程序背景本地图片渲染层网络层错误问题

热门文章

  1. 【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块
  2. 看看人家用三天写出来的完整项目,直接惊艳了面试官!
  3. 一年中的最后一天说说_新的一年又开始了说说 年底最后一天的心情说说
  4. 航嘉电源的通病维修方法!!
  5. 解决:电脑主机一会儿自动关闭又自动启动又自动关闭...这样循环往复怎么办?主机用着用着突然关机怎么回事?
  6. 麒麟操作系统基于linux哪个版本_中国为什么有这么多麒麟Linux系统?
  7. ext4magic恢复工具ext4
  8. sdk编译文件报错conflicting types for ‘kill‘
  9. 小米MIUI 360wifi掉线解决方案 落雨
  10. linux mysql 邮件_linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(二)-基于mysql的虚拟账户登陆收发邮件...