嗨,我正在用 c# 编写一个应用程序,以通过 rs232(com) 端口连接到设备。我需要发送一个“读取”命令来从中读取数据,并发送一个“写入”命令来向它发送一些数据。
我在这里和其他一些网站上阅读了一些文章,并且我知道在 C# 中定义串行端口时有一些方法。
但我的问题是,我应该关注 DTR、RTS、...吗?它们是干什么用的?我该如何使用它们?
嗨,我正在用 c# 编写一个应用程序,以通过 rs232(com) 端口连接到设备。我需要发送一个“读取”命令来从中读取数据,并发送一个“写入”命令来向它发送一些数据。
我在这里和其他一些网站上阅读了一些文章,并且我知道在 C# 中定义串行端口时有一些方法。
但我的问题是,我应该关注 DTR、RTS、...吗?它们是干什么用的?我该如何使用它们?
只是为了给你一个想法,这是一个非常简单的函数,它将命令作为byte
数组写入串行并从串行端口读取相应的输入(在此示例中,我仅读取从串行端口读取的值的第四个字节):
private string ReadFromSerial()
{
try
{
System.IO.Ports.SerialPort Serial1 = new System.IO.Ports.SerialPort("COM1", 9600, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
Serial1.DtrEnable = true;
Serial1.RtsEnable = true;
Serial1.ReadTimeout = 3000;
var MessageBufferRequest = new byte[8] { 1, 3, 0, 28, 0, 1, 69, 204 };
var MessageBufferReply = new byte[8] { 0, 0, 0, 0, 0, 0, 0, 0 };
int BufferLength = 8;
if (!Serial1.IsOpen)
{
Serial1.Open();
}
try
{
Serial1.Write(MessageBufferRequest, 0, BufferLength);
}
catch (Exception ex)
{
logEx(ex);
return "";
}
System.Threading.Thread.Sleep(100);
Serial1.Read(MessageBufferReply, 0, 7);
return MessageBufferReply[3].ToString();
}
catch (Exception ex)
{
logEx(ex);
return "";
}
}
这是 MSDN 文档的链接,您应该会发现它对您很有帮助:文档. 有一些你正在寻找的属性和一些很好的例子。