基本传递方法:RS232传输要有1位起始位,8位数据位、1位校验位、1位停止位,也就是说传一个字节要用时11位的时间.
举例:6个字节要6*11=66位时间。每位1/9600秒,共用66/9600=0.006875秒。
虚拟串口软件
当我们没有设备时我们可以用虚拟串口软件来模拟串口操作。下面我来介绍一款软件VSPD虚拟串口软件。大家可以去天空软件站下载。
下载来安装成功后如下图所示: 然后你就点击添加端口,我上图中的COM2和COM3就是VSPD添加的,这个时候你把COM2和Com3看做是一个真实的串口,然后用两个软件连接,就相当于一个串口了(我们可以用一个收,一个发),我用一个串口测试器和我们自己编写的软件进行测试: 如下图所示,我们的串口测试器(网上搜下载简便串口测试)已经连接到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#串口编程实例。希望对大家有帮助。