使用C#通过RS232发送数据

时间:2014-08-11 02:21:37

标签: c# serial-port

我有一个可以通过RS232进行通信的设备。它附带了访问数据的通信协议。

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

以下是他们提供的样本。

命令50:状态请求

status request命令用于请求注册响应包,而不会在以后执行可能会改变系统状态的操作。

0 1 2 3 4 5 6 7 8 9 10 11 12 13
STX ADDR ADDR CMOD" 5" " 0" " 0" " 3" TKN1 TKN0 TYPE 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,令牌01,类型1的状态请求

[0×02] 0115003011EE [0X0D]

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

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

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

comPort.Write(" 20115003011EE3&#34);

非常感谢任何帮助/示例代码等。

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();


    }

1 个答案:

答案 0 :(得分:2)

处理低级别端口I / O时,字符不是字节

不要发送字符串。创建一个包含正确字符的字节流并发送。

[.NET字符是短裤,而不是字节。没关系。使用字节。]