第一步:实例化串口通讯类
SerialPort sp = new SerialPort();
第二步:设置串口信息并打开串口
//串口设置
public void SetSP(string PortName,string BaudRate,string DataBits,string StopBits,string Command)
{
sp.Close();
sp.PortName = PortName;//串口号
sp.BaudRate = int.Parse(BaudRate);//波特率
sp.DataBits = int.Parse(DataBits);//数据位
sp.StopBits = (StopBits)int.Parse(StopBits);//停止位
sp.ReadTimeout = 500;//读取数据的超时时间,引发ReadExisting异常
bntSwitchSP_Click(Command);//开串口
}
//打开串口
private void bntSwitchSP_Click(string command)
{
if (sp.PortName!= "" && sp.BaudRate!= "" && sp.DataBits!= "" && sp.StopBits!= "")
{
try
{
if (sp.IsOpen)
{
sp.Close();
sp.Open();//打开串口
}
else
{
sp.Open();//打开串口
}
ToSendMessage(command);
}
catch (Exception ex)
{
MessageBox.Show("错误:" + ex.Message, "C#串口通信");
}
}
else
{
MessageBox.Show("请先设置串口!", "RS232串口通信");
}
}
第三步:发送指令
//发送数据
public void ToSendMessage()
{
if (sp.IsOpen)
{
try
{
sp.Encoding = System.Text.Encoding.GetEncoding("GB2312");
string Command = "100110010001111101";
//发送数据(类型:十六进制)
sp.Write(strToHexByte(Command ), 0, strToHexByte(Command ).Length);
发送数据(类型:字符串)
//sp.Write(SerialCommand);
//发送成功!
}
catch (Exception ex)
{
MessageBox.Show("错误:" + ex.Message);
}
}
else
{
MessageBox.Show("串口未打开!");
}
}
// 字符串转换成16进制编码
private byte[] strToHexByte(string hexString)
{
hexString = hexString.Replace(" ", "");
if ((hexString.Length % 2) != 0) hexString += " ";
byte[] returnBytes = new byte[hexString.Length / 2];
for (int i = 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?