其他分享
首页 > 其他分享> > CodeGo.net>如何使用SerialPort.Write(String)将字符串写入串行端口

CodeGo.net>如何使用SerialPort.Write(String)将字符串写入串行端口

作者:互联网

我试图使用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属性更改为所有可用的编码,但这没有帮助.

有人可以告诉我使用串行端口类将任何字符串发送到串行端口该怎么做吗?
我想念或误解了吗?

解决方法:

尝试使用:

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

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

您可能还需要检查连接双方的BAUD费率(这些值必须相同).

标签:ascii,serial-port,string,c
来源: https://codeday.me/bug/20191121/2050802.html