如何使用SerialPort.Write(String)将字符串写入串口

时间:2014-09-03 06:40:54

标签: c# string serial-port ascii

我试图使用SerialPort.Write(String)将字符串写入串行端口。 到目前为止,我试着跟着

我在构造函数中实例化串口对象。 编辑:设置端口参数解决了问题。

public CSerialPort()
{
    this._serialPort = new SerialPort("COM6",1200,Parity.None,8,StopBits.One);
    this._serialPort.DataReceived += OnSerialPortDataReceived;
}

我打开端口:

public void OpenSerialPort()
{
    try
    {
        _logger.DebugFormat("Trying to open Serial Port: {0}", this._serialPort.PortName);
        this._serialPort.Open();
        this.PortIsOpen = true;
    }
    catch (UnauthorizedAccessException ex)
    {
        _logger.DebugFormat("Trying to open Serial Port: {0}", ex);
    }
    catch (ArgumentOutOfRangeException ex)
    {
        _logger.DebugFormat("Trying to open Serial Port: {0}", ex);
    }
    catch (ArgumentException ex)
    {
        _logger.DebugFormat("Trying to open Serial Port: {0}", ex);
    }
    catch (InvalidOperationException ex)
    {
        _logger.DebugFormat("Trying to open Serial Port: {0}", ex);
    }
}

我尝试通过串口发送字符串的内容:

public void WriteToSerialPort(string writeBuffer)
{
    this._serialPort.Write(writeBuffer);
}

字符串的内容是:

this._serialPort.WriteToSerialPort("ABC");

我的问题是在接收方(另一台带有串口监控软件的PC)我没有收到“ABC”。 我收到的是“þ”,即ASCII字符代码254。

我尝试将Encoding属性更改为所有可用的编码,但这没有帮助。

任何人都可以告诉我如何使用串口类将任何字符串发送到串口? 我错过了什么或误解了什么?

1 个答案:

答案 0 :(得分:3)

尝试使用:

byte[] MyMessage = System.Text.Encoding.UTF8.getBytes(yourString);

MySerialPort.Write(MyMessage,0,MyMessage.Length);

您可能还想检查连接两侧的 BAUD率(这些必须相同)。