最近遇到一个计数器/计米器/光栅表串口数据读取的小case,查询借鉴修改了些资料,简单记录下实现代码。
主要思路是使用System.IO.Ports.SerialPort类
- 初始化SerialPort类,设置相关参数及绑定事件
AddData为根据返回的数据进行的相应业务处理 - 数据发送
private void sendSerialPortData(string data)
{
openSerialPort();
byte[] sendData = null;
sendData = strToHexByte(data);
if (this.SendData(sendData))//发送数据成功计数
{
}
else
{
MessageBox.Show("数据发送失败", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void openSerialPort()
{
if (ComDevice.IsOpen == false)
{
try
{
ComDevice.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
}
}
/// <summary>
/// 发送数据
/// </summary>
/// <param name="sender"></param>
/// <param name="data"></param>
public bool SendData(byte[] data)
{
try
{
ComDevice.Write(data, 0, data.Length);//发送数据
return true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
return false;
}
参考:
[C#] Microsoft .Net框架SerialPort类的用法与示例
C#串口通讯中常用的16进制的字节转换
winform 窗体中 Time 控件的用法
c# 16进制转10进制
c#截取字符串的方法Substring()
如何去掉C#字符串中的所有空格