一、关于DataReceive事件。
主程序必须有
outserialPort.DataReceived +=new SerialDataReceivedEventHandler(outserialPort_DataReceived);//注册received事件
创建 SerialDataReceivedEventHandler 委托即把接受数据的时间关联到相应的事件去。否则接收事件发生时无法触发对应的方法。
+=表示增加注册一种方法,而-=则相反。

二、读取串口数据的两种方法
第一种是采用read方法读取           
            int n = outserialPort.BytesToRead;
            byte[] buf = new byte[n];
            outserialPort.Read(buf, 0, n);
            string receivedata = System.Text.Encoding.ASCII.GetString(buf);
第二种是采用readline方法读取
            string receivedata = outserialPort.ReadLine();
注意:
1、ReadLine()方法一直会读到有一个新的行才会返回,所以如果发送数据中没有换行符则该方法不会返回,会一直停留在readline程序里不会执行之后的程序,而read()是调用者自己定义一个byte数组来接收串口中缓存里的数据,byte多长就读多长
参考:http://bbs.csdn.net/topics/330233058

2、 string receivedata=System.Text.Encoding.ASCII.GetString(buf);
注意串口接收的编码是ASCII型而不是Unicode否则无法读出接收的数据

三、Invoke的两种书写方法:

第一种

this.Invoke(new EventHandler(delegate

            {

                //要委托的代码

             }));

第二种

delegate void mydelegate(object sender, System.EventArgs e);  

mydelegate interfaceUpdateHandle;

然后再在主线程中

interfaceUpdateHandle = new mydelegate(button1_Click);  //实例化委托对象   

在附属线程中则

this.Invoke(interfaceUpdateHandle, null, null);

其中,invoke的参数数量应该要和声明的时候一致即和delegate后的函数参数数量一致。而且mydelegate这个名称可以自取。

四、如何知道当前电脑有哪个串口


方法1:comboBox1.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());

方法2:string[] portList = System.IO.Ports.SerialPort.GetPortNames();

for (int i = 0; i < portList.Length; ++i)
            {
                string name = portList[i];
                comboBox1.Items.Add(name);
            }

参考:http://blog.csdn.net/cy757/article/details/4474930

五、参考资料:

1、C#串口操作系列教程:http://blog.csdn.net/wuyazhe/article/category/695097

2、C# SerialPort运行方式:(关于如何读取接收数据)http://www.cnblogs.com/lzjsky/archive/2011/04/07/2008089.html

C#利用SerialPort控件进行串口编程小记的更多相关文章

  1. 利用 SerialPort 控件实现 PC 串口通信

    整理参考自<Visual C#.NET 串口通信及测控应用典型实例>1.3 节 以及 一篇博文:C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子. 硬件部分 如果是两个串 ...

  2. MSComm控件进行串口编程的基本步骤

    Visual C++为我们提供了一种好用的ActiveX控件Microsoft Communications Control(即MSComm)来支持应用程序对串口的访问,在应用程序中插入MSComm控 ...

  3. C/S模式开发中如何利用WebBrowser控件制作导航窗体

    原文:C/S模式开发中如何利用WebBrowser控件制作导航窗体 转自: CSDN 相信不少同学们都做过MIS系统的开发,今天这里不讨论B/S模式开发的问题.来谈谈winform开发.用过市面上常见 ...

  4. 在Winform开发框架中,利用DevExpress控件实现数据的快速录入和选择

    在实际的项目开发过程中,有好的控件或者功能模块,我都是想办法尽可能集成到我的WInform开发框架中,这样后面开发项目起来,就可以节省很多研究时间,并能重复使用,非常高效方便.在我很早之前的一篇博客& ...

  5. DELPHI XE10,JSON 生成和解析,再利用INDYHTTP控件POST

    Delphi XE10,Json 生成和解析,再利用indyhttp控件Post 年09月20日 :: 阅读数: --不多说,直接上代码 procedure TFrmMain.Brand; var J ...

  6. winform利用ImageList控件和ListView控件组合制作图片文件浏览器

    winform利用ImageList控件和ListView控件组合制作图片文件浏览器,见图,比较简单,实现LISTVIEW显示文件夹图片功能. 1.选择文件夹功能代码: folderBrowserDi ...

  7. serialport控件的详细用法

    http://www.cnblogs.com/jerry-bian/archive/2012/01/10/2317861.html 最近在做通讯协议,关于SerialPort类 DataReceive ...

  8. SPCOMM控件对串口参数的设置

    对于串口来说,一般大家都了解波特率,校验码,数据位之类的参数.然而在实际的数据传输中,有些参数也会影响数据的传输.现总结如下,以便大家查询.在对串口进行编程时,可用portman对串口参数进行跟踪,提 ...

  9. 利用activeX控件在网页里自动登录WIN2003远程桌面并实时控制

    首先要自己配置并打开受控端的WEB远程桌面服务,这个在“添加/删除windows组件”里有,我只在windows 2003 server里试过,没试过XP.下面我们在客户端安装微软提供的远程桌面客户端 ...

随机推荐

  1. LOJ-10108(欧拉回路+并查集)一个图至少用几笔画成

    题目链接:传送门 思路: 用并查集统计出每个区块奇数个节点的个数x,每个区块对笔画的贡献是max(x/2,1): 然后每个区块求和即可. #include<iostream> #inclu ...

  2. (转)Flex 布局教程:

    这个博客的内容比较新,多看看 http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html [语法篇] http://www.ruanyifeng. ...

  3. python_day1_程序交互

    程序交互 在编写程序过程中总会有程序与用户交互的场景出现,这里面提到python会使用一个方法:input 用法: 例如:请用户输入一个账号 input"Please input your ...

  4. Pattern Design - Strategy Pattern

    If you can disassemble code  and  you want to apply one method of an object in another object that t ...

  5. Word中的段落

    Word文档中的块级内容的最基本单位是段落,段落用<p>元素进行存储.段落定义在新行中开始,段落可以包含三方面的信息:可选的段落属性.内嵌的内容(通常为文本)和用于比较两个文档的内容的一组 ...

  6. 学习tableauhttps://www.tableau.com/zh-cn/learn/training

    入门教程不错: https://www.tableau.com/zh-cn/learn/training

  7. Centos7部署Kubernetes集群

    目录贴:Kubernetes学习系列 1.环境介绍及准备: 1.1 物理机操作系统 物理机操作系统采用Centos7.3 64位,细节如下. [root@localhost ~]# uname -a ...

  8. Buffer cache hit ratio性能计数器真的可以作为SQL Server 内存瓶颈的判断指标吗?

    SQL Server中对于Buffer cache hit ratio的理解: Buffer cache hit ratio官方是这么解释的:“指示在缓冲区高速缓存中找到而不需要从磁盘中读取的页的百分 ...

  9. 分享Azure DevOps技术,来微信群吧!

    现在QQ用户越来越少,基本上都转移到微信上了. 讨论问题,动不动就来一个微信群.下面这样几百人的微信群,专门讨论Azure DevOps (TFS)技术,你加入了么? 还等什么,扫描吧!

  10. 背水一战 Windows 10 (88) - 文件系统: 操作文件夹和文件

    [源码下载] 背水一战 Windows 10 (88) - 文件系统: 操作文件夹和文件 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 创建文件夹,重命名文件夹,删除文件夹, ...