我试图使用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属性更改为所有可用的编码,但这没有帮助。
任何人都可以告诉我如何使用串口类将任何字符串发送到串口? 我错过了什么或误解了什么?
答案 0 :(得分:3)
尝试使用:
byte[] MyMessage = System.Text.Encoding.UTF8.getBytes(yourString);
MySerialPort.Write(MyMessage,0,MyMessage.Length);
您可能还想检查连接两侧的 BAUD率(这些必须相同)。