
本人想写一个简单的用C#写的serialport串口通信代码,请会的帮写下代码发我邮件,感激不尽,具体功能如下
具体功能为:发送一个发送码给下位机,然后就接收下位机发送来的一个数字,判断其是否发送完毕,数据格式要正确。接收到做点提示,最好给点注释。谢谢。万分感激,好人一生平安!邮箱...
具体功能为:发送一个发送码给下位机,然后就接收下位机发送来的一个数字,判断其是否发送完毕,数据格式要正确。接收到做点提示,最好给点注释。谢谢。万分感激,好人一生平安!邮箱为1123352008@qq.com
没有分了哦,这是我能给的所有的分了,望见谅 展开
没有分了哦,这是我能给的所有的分了,望见谅 展开
展开全部
我给你写到一个类里了;
public class ComPort
{
//串口通讯对象
SerialPort taxPort;
//端口号默认是COM1
private string portName = "COM1";
//波特率默认是9600
private int baudRate = 115200;
//接收超时时间默认为1000
private double timeOut = 1000;
//数据位
private int dataBit = 8;
#region 构造函数
public ComPort()
{
taxPort = new SerialPort(portName);
taxPort.BaudRate = baudRate;
taxPort.DataBits = dataBit;
taxPort.Parity = System.IO.Ports.Parity.None;
taxPort.ReceivedBytesThreshold = 1;
taxPort.DataReceived += new SerialDataReceivedEventHandler(DataReceived);
}
#endregion
#region 析构函数
~ComPort()
{
this.Dispose(false);
}
public void Dispose()
{
Dispose(true);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
//释放托管资源
taxPort.Dispose();
}
//释放非托管资源先关闭再释放
Close();
taxPort.Dispose();
if (disposing)
{
// 对象会被 Dispose 方法释放.
// 调用GC.SupressFinalize将此对象从释放队列中清除
// 防止终结器对此对象重复释放。
GC.SuppressFinalize(this);
}
}
#endregion
#region 串口打开与关闭
/// <summary>
/// 打开串口
/// </summary>
/// <returns>是否成功</returns>
public bool Open()
{
try
{
if (taxPort.IsOpen != true)
{
taxPort.Open();
}
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 关闭串口
/// </summary>
public void Close()
{
if (taxPort.IsOpen == true)
{
taxPort.Close();
}
}
#endregion
/// <summary>
/// 发送数据
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public bool Send_Data(byte[] data)
{
try
{
if (Open() == false)
{
Mess.ShowMessage("串口打开失败!请检查串口是否被占用!", 1);
return false;
}
TY_Method.delay(500);
taxPort.Write(data, 0, data.Length);
return true;
}
catch (Exception ex)
{
// Mess.ShowMessage("此次通讯错误!" + ex);
Close();
return false;
}
}
}
这是我自己程序里的通信类!
public class ComPort
{
//串口通讯对象
SerialPort taxPort;
//端口号默认是COM1
private string portName = "COM1";
//波特率默认是9600
private int baudRate = 115200;
//接收超时时间默认为1000
private double timeOut = 1000;
//数据位
private int dataBit = 8;
#region 构造函数
public ComPort()
{
taxPort = new SerialPort(portName);
taxPort.BaudRate = baudRate;
taxPort.DataBits = dataBit;
taxPort.Parity = System.IO.Ports.Parity.None;
taxPort.ReceivedBytesThreshold = 1;
taxPort.DataReceived += new SerialDataReceivedEventHandler(DataReceived);
}
#endregion
#region 析构函数
~ComPort()
{
this.Dispose(false);
}
public void Dispose()
{
Dispose(true);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
//释放托管资源
taxPort.Dispose();
}
//释放非托管资源先关闭再释放
Close();
taxPort.Dispose();
if (disposing)
{
// 对象会被 Dispose 方法释放.
// 调用GC.SupressFinalize将此对象从释放队列中清除
// 防止终结器对此对象重复释放。
GC.SuppressFinalize(this);
}
}
#endregion
#region 串口打开与关闭
/// <summary>
/// 打开串口
/// </summary>
/// <returns>是否成功</returns>
public bool Open()
{
try
{
if (taxPort.IsOpen != true)
{
taxPort.Open();
}
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 关闭串口
/// </summary>
public void Close()
{
if (taxPort.IsOpen == true)
{
taxPort.Close();
}
}
#endregion
/// <summary>
/// 发送数据
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public bool Send_Data(byte[] data)
{
try
{
if (Open() == false)
{
Mess.ShowMessage("串口打开失败!请检查串口是否被占用!", 1);
return false;
}
TY_Method.delay(500);
taxPort.Write(data, 0, data.Length);
return true;
}
catch (Exception ex)
{
// Mess.ShowMessage("此次通讯错误!" + ex);
Close();
return false;
}
}
}
这是我自己程序里的通信类!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询