作者: Blue_Pen
查看: 13857|回复: 23
打印 上一主题 下一主题

[源码] 【C#串口通讯加强版】BinGoo系列之串口通讯加强版

[复制链接]
跳转到指定楼层
楼主
Blue_Pen 发表于 2014-11-7 15:42:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
查看: 13857|回复: 23
本帖最后由 Blue_Pen 于 2014-11-7 15:44 编辑

BinGoo系列之《串口通讯加强版 》

* 名称:串口通讯


* 功能:串口通讯,接收、发送串口数据


* 特点:解决接收数据不全,数据丢失,按照协议解析数据


源码案例下载在最底下
下面贴出接收数据的代码:
[C#] 纯文本查看 复制代码
/// <summary>
        /// 串口接收数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void SpDataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            //根据不同协议更改协议长度和针头针尾数据
            //这里以FF FE XX XX XX XX XX AA为例
            //针头为:FF FE,针尾为:AA
            try
            {
                int n = MySerialPort.BytesToRead; //记录缓存数据的长度
                byte[] buf = new byte[n]; //声明一个临时数组存储当前来的串口数据  
                MySerialPort.Read(buf, 0, n); //读取缓冲数据  
                BufferList.AddRange(buf);//将本次接收到的缓存数据添加到BufferList列表数据中
                //当BufferList缓存列表数据大于或等于协议数据长度时开始处理数据
                while (BufferList.Count >= 8)
                {
                    //查找数据头(重要,防止数据丢失或不全)
                    if (BufferList[0] != 0xFF || BufferList[1] != 0xFE || BufferList[7] != 0xAA)
                    {
                        //若针头针尾没有达到协议标准则移除BufferList第一位,继续下一轮判断
                        BufferList.RemoveAt(0);
                        continue;
                    }
                    //若前面数据验证成功则将数据取出
                    StringBuilder myStringBuilder = new StringBuilder(MySerialPort.ReadBufferSize*2);
                    for (int i = 0; i < 8; i++)
                    {
                        myStringBuilder.Append(String.Format("{0:X2}", Convert.ToInt32(BufferList[i])) + " ");
                    }
                    //移除BufferList列表中已处理的数据
                    BufferList.RemoveRange(0, 8); //从缓存中删除错误数据  
                    Invoke(new ShowDataCallback(ShowData), myStringBuilder.ToString());
                }
            }
            catch (Exception ex)
            {
                //最好写日志文件,保存起来
                //MessageBox.Show(ex.Message);
            }
        }


运行效果图:


这里源码下载:


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏12 转播转播
回复 论坛版权

使用道具 举报

沙发
hhjj3388 发表于 2014-11-12 13:58:14 | 只看该作者
不错支持下·!!!
板凳
qewen0920 发表于 2015-2-6 09:12:19 | 只看该作者
谢谢要了
回复

使用道具 举报

地板
高博 发表于 2015-2-6 13:32:44 | 只看该作者
不错!最近在研究这些!
5#
工会发的 发表于 2015-3-23 18:22:04 | 只看该作者
学习学习111111111111111111
6#
zz82103 发表于 2015-6-24 09:04:23 | 只看该作者
要用到了,下载下来看看,稳定快速就好
7#
zjwzcx 发表于 2016-1-25 10:45:27 | 只看该作者
看着不错,支持了。
8#
杨员外 发表于 2016-11-18 10:04:39 | 只看该作者
串口的必须用到,收藏备用
9#
潇潇君子哥 发表于 2017-1-18 16:30:25 | 只看该作者
好,做项目,刚好可以参考下。
10#
kingzgh 发表于 2017-2-24 15:57:58 | 只看该作者
刚好可以参考下
您需要登录后才可以回帖 登录 | 加入CSkin博客

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|CSkin ( 粤ICP备13070794号

Powered by Discuz! X3.2  © 2001-2013 Comsenz Inc.  Designed by ARTERY.cn
GMT+8, 2024-11-22 21:17, Processed in 0.587678 second(s), 31 queries , Gzip On.

快速回复 返回顶部 返回列表