一、关于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. 【轻松前端之旅】CSS盒子模型

    盒子模型,也叫框模型,在CSS里是很重要的概念. 每个元素都可以看做一个盒子.盒子包含四个部分:外边距(margin).边框(border).内边距(padding).元素内容(element con ...

  2. qhfl-7 结算中心

    结算中心,即从购物车前往支付前的确认页面,这里要开始选择优惠券了 """ 前端传过来数据 course_list 课程列表 redis 中将要存放的结算数据 { sett ...

  3. abaqus6.14导出网格inp以及导入inp以建模

    建好part,组装后,划分网格,然后建立job,之后write input就可以在工作目录生成刚才新建网格的单元和节点编号信息了. *Heading ** Job name: buildmodel M ...

  4. TensorFlow --playground游乐场

    TensorFlow游乐场官网http://playground.tensorflow.org(国内需要梯子才能访问) 游乐场的神经网络结构有三层,第一层为输入层,输入的是特征向量(描述问题特征的向量 ...

  5. Vuejs——(6)Vuejs与form元素

    版权声明:出处http://blog.csdn.net/qq20004604   目录(?)[+]   资料来于官方文档: http://cn.vuejs.org/guide/forms.html 本 ...

  6. 锚接口(上)——hashchange api 和 $.uriAnchor

    概述 这是我在单页Web应用这本书上看到的方法,并深入的研究了一下,把结果记录在下面,供以后开发时参考,相信对其它人也有用. 说明一下,这个方法已经过时了,H5有更新的方法:history api,我 ...

  7. Shell-17--break-exit-continue-shift

    echo -n 表示不换行 break 会退出当前循环 break 2 ,可以指定退出几层循环 continue 退出当次循环

  8. Window安装Erlang环境

    最近学习RabbitMQ,下载rabbitmq-server后,安装提示,需要erlang环境,接着又下载erlang安装包. 仅在这里提供下安装文件和环境配置方法. 1.rabiitmq-serve ...

  9. 深度学习笔记(七)SSD 论文阅读笔记

    一. 算法概述 本文提出的SSD算法是一种直接预测目标类别和bounding box的多目标检测算法.与faster rcnn相比,该算法没有生成 proposal 的过程,这就极大提高了检测速度.针 ...

  10. LeetCode--No.003 Longest Substring Without Repeating Characters

    Longest Substring Without Repeating Characters Total Accepted: 167158 Total Submissions: 735821 Diff ...