【发布时间】:2014-01-14 10:51:07
【问题描述】:
我需要通过串行端口连接到传感器并从中读取一些数据。我连接到它并发送命令,但设备没有返回任何内容,而是引发了超时异常。 stackoverflow 上的类似问题使用 OnDataReceived 事件,我试过了,但没有用。我用来初始化的参数和我发送的命令在 Putty 上按预期工作。
--我在这里缺少什么
void Read()
{
SerialPort serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
try
{
serialPort.Handshake = Handshake.XOnXOff;
serialPort.Encoding = new ASCIIEncoding();
serialPort.ReadTimeout = 1000;
serialPort.WriteTimeout = 900;
serialPort.Open();
serialPort.WriteLine("TEMP");
MessageBox.Show("Reading");
MessageBox.Show(serialPort.ReadLine());
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
serialPort.Close();
}
}
谢谢
【问题讨论】:
-
它是否适用于命令行中的
echo test > com1:(或使用适当的终端应用程序)? Moveover(但这可能只是您的示例中的一个问题)您确定您的设备会按照ReadLine的预期回复 UNICODE 文本吗? -
您确定设备有响应吗?您是否使用terminal 确认了这一点?
-
是的,我通过 Putty.exe 测试了设备,我刚刚尝试了 echo test > com1,它没有返回任何内容
-
@Adriano 是的,我通过 Putty.exe 测试了设备,我刚刚尝试了 echo test > com1 ,它什么也没返回
-
如果 putty 也没有收到任何东西,那么问题出在设备上(波特率、握手等),不是吗?
标签: c# serial-port port