【发布时间】:2016-09-26 09:44:21
【问题描述】:
我遇到错误
System.TimeoutException was unhandled The operation has timed out... etc
当我试图读取条形码时,我尝试了很多方法来解决它,但没有任何结果。
我多次检查了与 Windows 设备管理器匹配的 SerialPort 参数。
我尝试替换
String data = _serialPort.ReadLine();
与
String data = _serialPort.ReadByte().ToString();
如您所见,但它显示未知数字,例如 12 然后删除然后 26 等等。
我尝试更改编码,但是当我更改编码时,我得到了未知字符,例如空方块黑色三角形或扑克牌符号等。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
static SerialPort _serialPort;
private delegate void SetTextDeleg(string text);
private void Form1_Load(Object sender, EventArgs e)
{
_serialPort = new SerialPort("COM4", 9600, Parity.None, 8, StopBits.One);
_serialPort.Handshake = Handshake.None;
_serialPort.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
_serialPort.ReadTimeout = 500;
_serialPort.WriteTimeout = 500;
// Encoding
//_serialPort.Encoding = Encoding.ASCII;
_serialPort.Encoding = Encoding.Default;
_serialPort.Open();
}
private void btnStart_Click(Object sender, EventArgs e)
{
try
{
if (!_serialPort.IsOpen)
_serialPort.Open();
_serialPort.Write("SI\r\n");
}
catch (Exception ex)
{
MessageBox.Show("Error opening/writing to serial port :: " + ex.Message, "Error!");
}
}
void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Thread.Sleep(2000);
String data = _serialPort.ReadLine();
//String data = _serialPort.ReadByte().ToString();
this.BeginInvoke(new SetTextDeleg(si_DataReceived), new Object[] { data });
}
private void si_DataReceived(String data)
{
textBox1.Text = data.Trim().ToString();
//textBox1.Text = data;
//label1.Text = data;
}
}
【问题讨论】:
-
SerialPort 的参数是否与您的 Windows 设备管理器匹配?有时我设置了错误的波特率。
-
@c0d3b34n 是的,我检查了很多次,并尝试替换 String data = _serialPort.ReadLine();带字符串数据 = _serialPort.ReadByte().ToString();如您所见..但这向我显示了未知的数字,例如显示 12 然后删除然后删除 26 等
-
@PhillipH 这是他无法阅读的不同大小写我告诉你我可以阅读但我在阅读时遇到错误,当我更改编码时,我会收到未知字符.. 像黑色的空方块三角形或扑克牌符号等蚀刻
-
啊,关于你的实际症状的更多信息@useroo1oo :-)
标签: c# barcode barcode-scanner