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);
你没有等待你的秤回答,你读取result
的值比它被填满的数据快得多。
使用SerialPort进行通信的一个好方法是使用ReadLine和WriteLine,检查NewLine是否根据您的设备编程手册正确设置(如果您正在询问有关特定设备的问题,这将很好地添加到问题中)。
RS232通信常见故障处理:
- 检查波特率和所有其他串口配置
- 检查什么是EOL(行结束)字符,并使用它来终止写入语句,并知道如何停止读取输入消息(或使用ReadLine和WriteLine)
- 使用TeraTerm或其他串行终端手动检查通信