gpt4 book ai didi

c# - 使用C#通过RS232发送数据

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:22 25 4
gpt4 key购买 nike

<分区>

我有一个可以通过 RS232 通信的设备。它带有访问数据的通信协议(protocol)。

我正在编写一个简单的 c# 程序来连接设备并从设备获取状态,但我不太确定我是否走在正确的道路上。

下面是他们给出的样本。

命令 50:状态请求

status request命令用于请求注册响应包,后面没有可能改变系统状态的 Action 。

0 1 2 3 4 5 6 7 8 9 10 11 12 13
STX 地址 地址 CMOD “5” “0” “0” “3” TKN1 TKN0 类型 CHKL CHKH 0X0D

STX = 帧的起始字节 (0x02)

ADDR = TE550逻辑地址[2字节]

CMOD = CMOD 引用 [1 字节]
TKN1/0 = 帧标识字节 [2 个字节]

TYPE = 自定义框的选择字节 (RiqA/B)* [1 字节]

CHKH/L = 校验和 [2 个字节]

END = 帧的结束字节 (0x0D)

例子:从 PC 到 TE550(地址 01)的状态请求,CMOD 1, token 01,类型 1

[0x02]0115003011EE[0x0D]

我可以使用串行端口连接到 com 端口。

我指的是 DesMy 的回答“RS232 serial port communication c# win7 .net framework 3.5 sp1

到目前为止,一旦写入 COM 端口,我就没有收到任何信号。但是我不太确定我是否向 com 端口发送了正确的数据。目前我正在发送如下数据

comPort.Write("20115003011EE3");

任何帮助/示例代码等将不胜感激。

public void ConnectRS232()

    {
try
{
SerialPort mySerialPort = new SerialPort("COM1");

mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.None;
mySerialPort.ReadTimeout = 2000;
mySerialPort.WriteTimeout = 500;

mySerialPort.DtrEnable = true;
mySerialPort.RtsEnable = true;

mySerialPort.Open();



mySerialPort.DataReceived += DataReceivedHandler;

mySerialPort.Write("20115003011EE3");

}
catch (Exception ex)
{
textBox1.Text = ex.Message;
}

}

public void DataReceivedHandler(object sender,SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
System.Threading.Thread.Sleep(500);
string indata = sp.ReadExisting();
this.BeginInvoke(new SetTextDeleg(DisplayToUI), new object[] { indata });


}

private void DisplayToUI(string displayData)
{
textBox1.Text += displayData.Trim();


}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com