原文:http://www.cnblogs.com/vsdot/archive/2013/04/23/3263348.html

 
基本传递方法:RS232传输要有1位起始位,8位数据位、1位校验位(可选)、1位停止位,也就是说传一个字节要用时11位的时间.
 
举例:6个字节要6*11=66位时间。每位1/9600秒,共用66/9600=0.006875秒。

虚拟串口软件

当我们没有设备时我们可以用虚拟串口软件来模拟串口操作。下面我来介绍一款软件VSPD虚拟串口软件。大家可以去天空软件站下载。

下载来安装成功后如下图所示: 然后你就点击添加端口,我上图中的COM2和COM3就是VSPD添加的,这个时候你把COM2和Com3看做是一个真实的串口,然后用两个软件连接,就相当于一个串口了(我们可以用一个收,一个发:比如你的程序在接收com2,那么你用串口测试软件连接com1发送,不能连接com2,会失败的,因为这是虚拟的;串口测试软件中要发送的数据是16进制的,以空格为分界不管有几个空格,如果要发空格要发0A,注意不区分大小写),我用一个串口测试器和我们自己编写的软件进行测试:如下图所示,我们的串口测试器(网上搜下载简便串口测试)已经连接到COM3上了,

监听串口程序

直接上代码,在控制台程序中添加如下源码就可以直接运行了:

using System;

using System.IO.Ports;

using System.Text;

namespace PortDataReceived

{

class PortDataReceived

{

public static void Main()

{

SerialPort mySerialPort = new SerialPort("COM2");

mySerialPort.BaudRate = 9600;

mySerialPort.Parity = Parity.None;

mySerialPort.StopBits = StopBits.One;

mySerialPort.DataBits = 8;

mySerialPort.Handshake = Handshake.None;

mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

mySerialPort.Open();

Console.WriteLine("Press any key to continue...");

Console.WriteLine();

Console.ReadKey();

mySerialPort.Close();

}

private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)

{

SerialPort sp = (SerialPort)sender;

string indata = sp.ReadExisting();

Console.WriteLine("Data Received:");

Console.Write(StrToHex(indata));

}

public static string StrToHex(string mStr) //返回处理后的十六进制字符串

{

return BitConverter.ToString(ASCIIEncoding.Default.GetBytes(mStr)).Replace("-", " ");

}

}

}

   

运行结果如下图: 数据完全正确,发出的数据和接受的数据都一样,而且此时VSDM的界面有简单变化: 总结:本文写了一个用虚拟串口软件编写的C#串口编程实例。希望对大家有帮助。

using System;

using System.Collections.Generic;

using System.Text;

using System.IO.Ports;

namespace 串口收发测试

{

class Program

{

static void Main(string[] args)

{

SerialPort mySerialPort = new SerialPort("COM2");

mySerialPort.BaudRate = 9600;

mySerialPort.Parity = Parity.None;

mySerialPort.StopBits = StopBits.One;

mySerialPort.DataBits = 8;

mySerialPort.Handshake = Handshake.None;

mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

mySerialPort.Open();

//mySerialPort.WriteLine("A"); //这是发送,com1收到41 0A

mySerialPort.Write("A"); //这是发送,com1收到41

Console.WriteLine("串口COM2已打开,按任意键关闭程序... ...");

Console.WriteLine();

Console.ReadKey();

mySerialPort.Close();

}

private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)

{

SerialPort sp = (SerialPort)sender;

string indata = sp.ReadExisting();

Console.WriteLine("Data Received 1:"+indata);

Console.WriteLine("Data Received 2:" + StrToHex(indata));

}

public static string StrToHex(string mStr) //返回处理后的十六进制字符串

{

//先专为10进制,在专为16进制

return BitConverter.ToString(ASCIIEncoding.Default.GetBytes(mStr)).Replace("-", " "); //

}

}

}

转载于:https://www.cnblogs.com/qqhfeng/p/3561546.html

C#串口编程测试收发相关推荐

  1. C语言串口编程收发数据 并实现AT指令的收发 可变参数控制串口属性 树莓派4G模块

    文章目录 一. Linux下串口编程的流程 1.打开串口 2. 串口初始化 2.1 常用函数总览 2.2 初始化 3. 串口的读写 4. 串口关闭 二.代码--串口编程实现自发自收 三.可变参数控制串 ...

  2. Wince C++串口编程

    C# 串口操作系列:http://blog.csdn.net/wuyazhe/article/category/695097 在windows程序设计与开发过程中,特别是涉及到开发嵌入式软硬件系统时, ...

  3. Linux 串口编程四 串口设备程序开发

    Linux 串口编程和程序相对来说是很简单的,之所以用博客连载来展示,主要是想在学会使用的基础上掌握相关背景,原理以及注意事项.相信在遇到问题的时候,我们就不会对于技术的概念和 API 的使用浅尝辄止 ...

  4. Python学习之道-串口编程TEMI880温箱控制

    Python学习之道-串口编程&TEMI880温箱控制 一.环境准备 安装pyserial库 pyserial库常用函数介绍 参考例程 二.开发实践 1.实践项目 2.协议介绍 2.1 一般的 ...

  5. java rxtx version_RXTX实现JAVA串口编程

    给大家分项下用RXTX库实现JAVA串口编程. 一 准备工作 1.1 下载资源文件 首先下载RXTX库对应的资源文件.下载地址 http://fizzed.com/oss/rxtx-for-java ...

  6. C——Linux下的串口编程

    原 C--Linux下的串口编程 2017年06月06日 19:30:50 C_Aya 阅读数:11537 <span class="tags-box artic-tag-box&qu ...

  7. Linux下串口编程

    文章目录 串口 驱动 安装 设备文件 测试代码 编译运行 引用 串口 电平之类的就不说了,串口使用的一般包括rs232全双工,rs422四线全双工,rs485两线半双工,rs485四线全双工几种模式, ...

  8. JAVA实现RS-485串口编程

    近期开发过程中遇到需要读取底层传感器串口数据的问题,也是从无到有的一个过程,爬了不少帖子在这里记录一下,也给后来的朋友们一点小小的帮助吧. 下载链接在文末 串口介绍 如图所示就是一种串口转换器: Ja ...

  9. RXTX实现JAVA串口编程

    给大家分项下用RXTX库实现JAVA串口编程. 一 准备工作 1.1 下载资源文件 首先下载RXTX库对应的资源文件.下载地址 http://fizzed.com/oss/rxtx-for-java ...

  10. Qt 多线程串口编程

    一.问题 以前串口编程使用第三方的CnComm.h编程,CnComm作者博客链接,使用起来还蛮好的,不过既然用qt了就想着用qt自带的QSerialPort,移植性更好一些,结果折腾了好几天,主要遇到 ...

最新文章

  1. poj3096(set的应用)
  2. expdp / impdp 用法详解
  3. 学生电脑哪个牌子好_贺州腻子粉哪个牌子好
  4. deepin终端编译c程序_Deepin Linux安装使用Visual Studio Code(VSCode)调试C++
  5. 电影推荐之《哈利·波特与火焰杯》 隐私策略(Privacy policy)
  6. stm32时钟树_先学STM8,还是学STM32?
  7. 靶形数独(信息学奥赛一本通-T1447)
  8. hdu Train Problem I 栈的基本应用
  9. 利用Python将excel或csv文件导入到mysql数据库中
  10. 修正统计的 5 个方法
  11. c语言试题 函数选择,(C语言函数章节选择题.doc
  12. webrtc QOS方法一.2(接收端NACK流程实现)
  13. 《高效阅读——20分钟读懂一本书》读书总结
  14. 美国eb1a移民费用有哪些
  15. 【数学】点到平面距离推导
  16. 宁夏最新建筑施工电工(建筑特种作业)机考题库及建筑电工模拟试题
  17. Nginx代理Partainer
  18. Linux常用命令总结(Ubuntu)
  19. android硬编解码MediaCodec
  20. suse linux 桌面效果,suse linux enterprise 10.3 3d桌面特效

热门文章

  1. 转载Java 反射机制
  2. iMazing Mac2平台上最好的iPhone、iPad和iPod设备管理器 详细功能介绍
  3. 简单的图书馆系统 LibrarySystem(OC模拟)
  4. 打造最舒适的webview调试环境 1
  5. 卧槽!jmeter 竟然这么牛逼,压测爽歪歪~
  6. 别乱提交代码了,你必须知道的 Git 分支开发规范!
  7. 程序员别再迷茫,赚钱,方法比你想得更多
  8. “干活的干不过写PPT 的”:新东方年会神曲刷屏背后:这3点值得我们思考
  9. 从Face ID说起,浅析人脸识别之刷脸技术
  10. 为什么有那么多人选择Python,真的有那么好吗?