.NET 串口通信中断接收,包含0X1A(作为EOF)
2024-08-24 12:54:53
.NET串口通信中将`0X1A`当做EOF处理,.NET接收到EOF会触发一次接收中断,此时事件形参`SerialDataReceivedEventArgs`值为枚举 `Eof`,其他为`Chars`。
参考: stackoverflow 、MSDN
## 测试
.NET编程,中断方式接收,发送一串数据后等待回应,打印进中断次数;另外一端用串口助手来实现。通信用虚拟串口。
[TestClass]
public class EofByteSerialTest
{
private int _count = ;
private byte[] _receivedDataPacket;
SerialPort _serialPort = new SerialPort()
{
PortName = "COM5",
BaudRate = ,
DataBits = ,
StopBits = StopBits.One,
Parity = Parity.None
};
[TestMethod]
public void TestMethod1()
{
_serialPort.Open();
byte[] sendedData = { 0x01, 0x02, 0x03, 0x1a, 0x2a, 0x1a };
_serialPort.DataReceived += ComReceive;
_serialPort.Write(sendedData, , sendedData.Length);
Thread.Sleep();
//foreach (byte b in _receivedDataPacket)
//{
// Console.WriteLine(b);
//}
Console.WriteLine(_count);
}
private void ComReceive(object sender, SerialDataReceivedEventArgs e)
{
//if (e.EventType == SerialData.Eof)
//{
// //特殊处理
//}
_count++;
_receivedDataPacket = new byte[_serialPort.BytesToRead];
_serialPort.Read(_receivedDataPacket, , _receivedDataPacket.Length);
// 协议解析...
}
}
串口助手数据:
测试结果:
最新文章
- 自动判断应该Ajax还是return
- TimeUnit 使用
- 启动Tomcat服务器报错: Several ports (8005, 8080, 8009) required
- js+css立体旋转
- 黑盒测试用例设计方法&;理论联系实际->; 功能图法
- Basic REST API Design
- C primer plus 第五版十二章习题
- WebForm 控件(一)、连接数据库
- node.js学习系列(一)
- JUnit 3.8.1 源码学习
- mysql批量更新数据
- PageHelper 自动去掉排序参数问题
- Redis自学笔记:3.1入门-热身
- C#面向服务WebService从入门到精通
- Android——Activity去除标题栏和状态栏
- druid之监控设置及问题小记
- interrupt()方法的简单理解
- 160407、java实现多线程同步
- [Erlang05]gen_server怎么去写eunit?
- Uva 11600 期望DP