C#port.write(ENQ),缩放关闭并接收null

时间:2016-11-17 16:33:22

标签: c# serial-port port scale

我尝试通过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);

1 个答案:

答案 0 :(得分:0)

你不是在等待你的音阶来回答,你读取result的价值要快得多,然后就会充满数据。

使用SerialPort进行通信的一种好方法是使用ReadLineWriteLine,根据您的设备编程手册检查NewLine是否已正确设置(最好添加到如果您询问有关特定设备的问题,请提出问题。)

RS232通信的一些常规故障排除:

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