C#串口编程测试收发
原文: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#串口编程测试收发相关推荐
- C语言串口编程收发数据 并实现AT指令的收发 可变参数控制串口属性 树莓派4G模块
文章目录 一. Linux下串口编程的流程 1.打开串口 2. 串口初始化 2.1 常用函数总览 2.2 初始化 3. 串口的读写 4. 串口关闭 二.代码--串口编程实现自发自收 三.可变参数控制串 ...
- Wince C++串口编程
C# 串口操作系列:http://blog.csdn.net/wuyazhe/article/category/695097 在windows程序设计与开发过程中,特别是涉及到开发嵌入式软硬件系统时, ...
- Linux 串口编程四 串口设备程序开发
Linux 串口编程和程序相对来说是很简单的,之所以用博客连载来展示,主要是想在学会使用的基础上掌握相关背景,原理以及注意事项.相信在遇到问题的时候,我们就不会对于技术的概念和 API 的使用浅尝辄止 ...
- Python学习之道-串口编程TEMI880温箱控制
Python学习之道-串口编程&TEMI880温箱控制 一.环境准备 安装pyserial库 pyserial库常用函数介绍 参考例程 二.开发实践 1.实践项目 2.协议介绍 2.1 一般的 ...
- java rxtx version_RXTX实现JAVA串口编程
给大家分项下用RXTX库实现JAVA串口编程. 一 准备工作 1.1 下载资源文件 首先下载RXTX库对应的资源文件.下载地址 http://fizzed.com/oss/rxtx-for-java ...
- C——Linux下的串口编程
原 C--Linux下的串口编程 2017年06月06日 19:30:50 C_Aya 阅读数:11537 <span class="tags-box artic-tag-box&qu ...
- Linux下串口编程
文章目录 串口 驱动 安装 设备文件 测试代码 编译运行 引用 串口 电平之类的就不说了,串口使用的一般包括rs232全双工,rs422四线全双工,rs485两线半双工,rs485四线全双工几种模式, ...
- JAVA实现RS-485串口编程
近期开发过程中遇到需要读取底层传感器串口数据的问题,也是从无到有的一个过程,爬了不少帖子在这里记录一下,也给后来的朋友们一点小小的帮助吧. 下载链接在文末 串口介绍 如图所示就是一种串口转换器: Ja ...
- RXTX实现JAVA串口编程
给大家分项下用RXTX库实现JAVA串口编程. 一 准备工作 1.1 下载资源文件 首先下载RXTX库对应的资源文件.下载地址 http://fizzed.com/oss/rxtx-for-java ...
- Qt 多线程串口编程
一.问题 以前串口编程使用第三方的CnComm.h编程,CnComm作者博客链接,使用起来还蛮好的,不过既然用qt了就想着用qt自带的QSerialPort,移植性更好一些,结果折腾了好几天,主要遇到 ...
最新文章
- poj3096(set的应用)
- expdp / impdp 用法详解
- 学生电脑哪个牌子好_贺州腻子粉哪个牌子好
- deepin终端编译c程序_Deepin Linux安装使用Visual Studio Code(VSCode)调试C++
- 电影推荐之《哈利·波特与火焰杯》 隐私策略(Privacy policy)
- stm32时钟树_先学STM8,还是学STM32?
- 靶形数独(信息学奥赛一本通-T1447)
- hdu Train Problem I 栈的基本应用
- 利用Python将excel或csv文件导入到mysql数据库中
- 修正统计的 5 个方法
- c语言试题 函数选择,(C语言函数章节选择题.doc
- webrtc QOS方法一.2(接收端NACK流程实现)
- 《高效阅读——20分钟读懂一本书》读书总结
- 美国eb1a移民费用有哪些
- 【数学】点到平面距离推导
- 宁夏最新建筑施工电工(建筑特种作业)机考题库及建筑电工模拟试题
- Nginx代理Partainer
- Linux常用命令总结(Ubuntu)
- android硬编解码MediaCodec
- suse linux 桌面效果,suse linux enterprise 10.3 3d桌面特效