背景

App需要串口进行通讯,在此做个记录和简要说明。

正文

  1. 添加命名空间
using System.IO.Ports;
  1. 实例化串口
SerialPort serialPortO = new SerialPort();
  1. 设置SerialPort参数
// 获取当前所有的COM口讯息
String[] serialPort1Array = SerialPort.GetPortNames();
if (serialPort1Array != null && serialPort1Array.Length != 0)
{
// 对串口进行排序
Array.Sort<String>(serialPort1Array);
// 选择首个串口
serialPortO.PortName = serialPort1Array[0];
// 波特率 9600
serialPortIn.BaudRate = 9600;
// 数据位为 8 位
serialPortO.DataBits = 8;
// 停止位为 1 位
serialPortO.StopBits = StopBits.One;
// 无奇偶校验位
serialPortO.Parity = Parity.None;
// 读取串口超时时间为1000ms
serialPortO.ReadTimeout = 1000;
}
  1. 打开串口
if(serialPortO.IsOpen)
{
serialPortO.Close();
}
try
{
serialPortO.Open();
}
catch (Exception ex)
{ // 捕捉异常
Console.Write(ex);
}
  1. 往串口写入数据
if((serialPortO != null) && (serialPortO.IsOpen))
{
byte[] buf = new byte[2];
buf[0] = 0x01;
buf[1] = 0x02; try
{
// 参数1:发送数据的缓存位置
// 参数2:缓存数据位置的偏移值
// 参数3:发送数据字节大小
serialPortO.Write(buf, 0, 2);
}
catch (Exception ex)
{ // 捕捉异常
Console.Write(ex);
}
}
  1. 从串口读数据

    SerialPort类有一个数据接收事件,可如下注册数据接收事件,
//serialPortIn_DataReceived便是数据接收事件处理函数
serialPortIn.DataReceived += serialPortIn_DataReceived;

参考MSDN文档SerialPort.DataReceived EventDataReceived事件的描述,当接收到eof字符时,就算没有达到ReceivedByteThreshold的阈值条件,DataReceived事件也会产生,并且DataReceived事件并不能保证每次都能在接收条件均符合时能准确的产生DataReceived事件,由此可见,在DataReceived事件处理函数中,不能直接处理接收到的数据,因为有可能没有接收完全,因此在该事件函数中应该只可对数据进行压栈处理,然后另外开一个线程出栈并处理这些数据才更为稳妥。

//读函数如下
if((serialPortO != null) && (serialPortO.IsOpen))
{
byte[] revbuf = new byte[2]; try
{
// 参数1:读取数据的缓存位置
// 参数2:缓存读取据位置的偏移值
// 参数3:读取数据字节大小
serialPortO.Read(revbuf, 0, 2);
}
catch (Exception ex)
{ // 捕捉异常
Console.Write(ex);
}
}

至此记录完毕。

参考链接

记录时间:2017-5-9

记录地点:深圳WZ

Visual studio之C# 串口通讯SerialPort的更多相关文章

  1. Android Studio的串口通讯开发

    基于android-serialport-api实现 前言RS232标准接口UARTRS232与UART转接下载 NDK 和构建工具创建支持 C/C++ 的新项目编译C/C++代码串口通讯原理关于校验 ...

  2. (c#2.0)serialPort串口通讯

    原文:(c#2.0)serialPort串口通讯 using System; using System.Collections.Generic; using System.ComponentModel ...

  3. .NET Core 跨平台 串口通讯 ,Windows/Linux 串口通讯,flyfire.CustomSerialPort 的使用

    目录 1,前言 2,安装虚拟串口软件 3,新建项目,加入 flyfire.CustomSerialPort 4,flyfire.CustomSerialPort 说明 5,开始使用 flyfire.C ...

  4. 用Visual Studio 2015成功编译、发布UMDF驱动到目标机!!

    开发工具:Visual Studio 2015企业版 主      机:windows10 X64企业版,主机是安装了Visual Studio 2015的操作系统,主要进行驱动开发和调试. 目  标 ...

  5. C#串口通讯实例

    本文参考<C#网络通信程序设计>(张晓明  编著) 程序界面如下图: 参数设置界面代码如下: using System; using System.Collections.Generic; ...

  6. Java利用Rxtx进行串口通讯

    最近在做传感器数据采集的工作,底层是基于Zigbee的无线传感网络,所有数据采集到Zigbee协调器上然后通知上位机数据采集完成,上位机通过USB转串口去读取数据就可以了.那么问题来了,如何进行串口通 ...

  7. Qt5 FOR WINCE7, Visual Studio 2008环境的搭建

    Qt5 FOR WINCE7, Visual Studio 2008环境的搭建 Qt5发布时,试过配置Qt5 for wince的环境,原因是暂时不支持WINCE.前几天意外发现官方博客说明已经开始支 ...

  8. Visual Studio 2017 新特性

    全新的安装体检 VS2017更好的支持了按需安装的特点,用户可以仅选择需要的功能安装,节省了不少的Disk 最小的安装仅有几百兆,但也支持20多种编程语言的编辑和源码管理 支持创建自定义的离线安装包 ...

  9. 开源纯C#工控网关+组态软件(九)定制Visual Studio

    一.   引子 因为最近很忙(lan),很久没发博了.不少朋友对那个右键弹出菜单和连线的功能很感兴趣,因为VS本身是不包含这种功能的.   大家想这是什么鬼,怎么我的设计器没有,其实这是一个微软黑科技 ...

随机推荐

  1. BZOJ 4883 [Lydsy2017年5月月赛]棋盘上的守卫(最小生成环套树森林)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4883 [题目大意] 在一个n*m的棋盘上要放置若干个守卫. 对于n行来说,每行必须恰好 ...

  2. git远程仓库创建及权限管理(一)单个项目

    最近接手公司git权限管理,既然负责此事个人觉得应该深入学习下,不仅为当前工作也为进一步发展.网上查找了一番,找到了完整的教程,所以这里不再一步一步描述,具体链接已给出,本文只对操作过程中遇到的问题的 ...

  3. [转]xxx.hbm.xml文件配置详解

    潜龙写 xml代码: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibe ...

  4. php 自动补位

    1  sprintf("%06d", 2); 2  str_pad();

  5. MDD:使用模型驱动开发方式进行快速开发(多图预警)

    相信很多人跟我一样,不喜欢数据展示.列表分页.数据的增.删.改.查,这种简单又烦琐的搬砖活. 所以网上出现很多开源的代码生成工具,在多年前我也写过,根据模版生成简单的View.Action.Servi ...

  6. 嵌入式学习之Nand Flash

    转:http://m.blog.csdn.net/blog/woshixiongge/9017149 Nand Flash是flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提 ...

  7. ER TO SQL语句

    ER TO SQL语句的转换,在数据库设计生命周期的位置如下所示. 一.转换的类别 从ER图转化得到关系数据库中的SQL表,一般可分为3类: 1)转化得到的SQL表与原始实体包含相同信息内容.该类转化 ...

  8. quartz做集群配置较短的时间间隔会重复执行任务的问题

    quartz.properties org.quartz.jobStore.misfireThreshold = 60000 这个参数(单位为毫秒)设置了以后就是超时1min的就不执行,小于1min会 ...

  9. 【SQL Sever】安装过程

    下载了sql sever,如下: 首先把iso解压,如下: 1.点击 2.打开页面后 3. 接下来直接下一步下一步 完成之后,需要重启计算机才能使用! 4. 重启之后,进入配置工具 将所有的端口号更改 ...

  10. spring webflow

    最近看了一段时间的spring-webflow,说一下自己的见解吧. 首先说一下关于spring-webflow的技术文档太少了,网上就只有一个入门篇,讲的比较笼统,但还是推荐一下, Spring W ...