Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 串行条形码读取器超时异常_C#_Serial Port - Fatal编程技术网

C# 串行条形码读取器超时异常

C# 串行条形码读取器超时异常,c#,serial-port,C#,Serial Port,霍尼韦尔条形码阅读器有问题 我有一个驱动程序和一个配置,使其作为COM串行端口工作(通过SerialPort.GetPortNames()检测) 我设法打开它,当我扫描一张卡时,事件DataReceived事件被正确发送。 但是,在本例中,当我尝试serialPort.ReadLine()时要获取存储在条形码阅读器内存中的值,我有一个超时异常 我不明白为什么它不工作,它应该是相当基本的代码。你有什么提示可以帮我吗 public class ScannerHandler { public

霍尼韦尔条形码阅读器有问题

我有一个驱动程序和一个配置,使其作为COM串行端口工作(通过
SerialPort.GetPortNames()
检测)

我设法打开它,当我扫描一张卡时,事件
DataReceived
事件被正确发送。
但是,在本例中,当我尝试
serialPort.ReadLine()时
要获取存储在条形码阅读器内存中的值,我有一个超时异常

我不明白为什么它不工作,它应该是相当基本的代码。你有什么提示可以帮我吗

public class ScannerHandler
{
    public SerialPort _serialPort;

    public ScannerHandler()
    {
        var serialPortArray = SerialPort.GetPortNames();
        _serialPort = new SerialPort("COM5", 19200, Parity.None, 8, StopBits.One);
        _serialPort.Handshake = Handshake.None;
        _serialPort.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
        _serialPort.ReadTimeout = 500;
        _serialPort.WriteTimeout = 500;
        _serialPort.Open();
    }

    void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        Thread.Sleep(1000);
        var bufferSize = _serialPort.ReadBufferSize;
        var dataBytes = _serialPort.DataBits;
        String data = _serialPort.ReadLine();
    }
}

提前谢谢

ReadLine将等待CR/LF进入-您确定设备发送了吗?是的,我将其设置为后缀。那么,您选择了什么作为“后缀”?它实际上与换行符设置匹配吗?您甚至不知道是否获得了正确的数据,请改用ReadExisting()开始调试。