【发布时间】:2020-05-06 08:03:11
【问题描述】:
我在这里有一个 BarcodeScanner,我告诉它为我制作一张照片。 我将命令作为字节发送到扫描仪,等待响应,然后我尝试读取它。
如果我只是使用串行监视器并手动发送字节,它工作得很好,我得到我的整个 jpeg 并且我很高兴。
如果我在 C# 中尝试它,我会尝试用一种简单的方法读取字节(是我在谷歌上找到的面包和黄油方法。我使用的是正常的(serialport.ReadExisting() 以同样的方式崩溃)。
这是整个活动:
public void serial_datareceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
usescanner = (SerialPort)sender;
if (sender is SerialPort)
{
string port = ((SerialPort)sender).PortName;
int count = ((SerialPort)sender).BytesToRead;
int returnAscii = 0;
string message = "";
while (count > 0)
{
returnAscii = ((SerialPort)sender).ReadByte();
message = message + Convert.ToChar(returnAscii);
count--;
}
ScanPort sport = new ScanPort(port, true);
scanner.ScannerPort = sport;
}
((SerialPort)sender).Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
我 总是 得到 4096 个字节来读回。然后我可以读到大约 70-90 个字节,所以是的,我的消息字符串那么长,所以它确实有效!只是简单地在它中间崩溃。
扫描仪不是问题,因为我长时间使用扫描仪。我可以来回发送数据。我还在制造商交给我的演示程序上对其进行了测试,所以它确实有效。
有什么想法吗?也许我只是不知道如何读取字节。
感谢您的帮助
【问题讨论】:
-
哪一行会抛出这个错误?你有一些奇怪的演员阵容,我猜你选错了。
-
Castin 是正确的,发送方是 SerialPort,所以我只使用正在接收数据的端口并将其用作 SerialPort。我也在读字节,它只是在某个端口蓝屏让我。我不明白,我要求读取字节,在串行端口监视器(ext 程序)中,我看到了我正在读取的整个字符串,但在某个时刻它只会让我的整个电脑崩溃
标签: c# serial-port blue-screen-of-death