我的控制台程序遇到了一些麻烦。我试图从条码扫描器的串行连接中检索数据。串口通讯问题C#
问题是: - 第一次阅读是完美的; - 第二次读取结果不正确,除非我等待大约一分钟。
下面是代码:
using System;
using System.IO.Ports;
class PortDataReceived
{
public static void Main()
{
SerialPort mySerialPort = new SerialPort("COM10");
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.RequestToSend;
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
mySerialPort.Open();
Console.WriteLine("Press any key to continue...");
Console.WriteLine();
Console.ReadKey();
mySerialPort.Close();
}
private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
Console.WriteLine("Data Received:");
Console.WriteLine(indata);
}
}
这里是2的结果,而不从第一等待足够的时间来第二次读取同一条码的读取:
Press any key to continue...
Data Received:
229000400718
Data Received:
2
Data Received:
2
Data Received:
9
Data Received:
0
Data Received:
0
Data Received:
0
Data Received:
4
Data Received:
0
Data Received:
0
Data Received:
7
Data Received:
1
Data Received:
8
有什么建议?
提前致谢!
你试过port.DtrEnable = true? – 2014-11-21 14:52:46
看起来像您的条形码扫描器首次发送条形码号码,然后通过字符相同的条形码字符。您是否尝试过使用一些串口监视器来查看扫描仪实际发送的内容? – Reniuz 2014-11-21 14:52:47
我已经试过port.DtrEnable = true,没有任何变化。 我也使用HyperTerminal进行监控,并且没有问题:我正确接收每个字符串。 – 2014-11-21 15:42:21