c# port.write(ENQ), scale关闭,接收null

本文关键字:scale 关闭 接收 null port write ENQ | 更新日期: 2023-09-27 18:18:31

我尝试通过rs232电缆连接到规模。当我尝试写"ENQ"端口,然后缩放关闭,接收不到任何东西。这是我的代码。对不起,我的英语不好。

class ScaleCAS
{
            private SerialPort port = new SerialPort("COM4", 9600, Parity.None, 8, StopBits.One);
            public string result = null;
            public ScaleCAS()
            {
                port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
                port.Open();
            }
            private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                this.result = port.ReadExisting();
            }
}

在另一个类中,我尝试写入端口
Scale.port.write("ENQ");
Console.Write(Scale.result);

c# port.write(ENQ), scale关闭,接收null

你没有等待你的秤回答,你读取result的值比它被填满的数据快得多。

使用SerialPort进行通信的一个好方法是使用ReadLine和WriteLine,检查NewLine是否根据您的设备编程手册正确设置(如果您正在询问有关特定设备的问题,这将很好地添加到问题中)。

RS232通信常见故障处理:

  • 检查波特率和所有其他串口配置
  • 检查什么是EOL(行结束)字符,并使用它来终止写入语句,并知道如何停止读取输入消息(或使用ReadLine和WriteLine)
  • 使用TeraTerm或其他串行终端手动检查通信