我想從USB掃描儀讀取條形碼。C#中的USB條形碼閱讀器#
使用SerialPort連接時,我得到的代碼如héà&"à')&'_h
或qà&é"'(èq
。
有沒有解碼這個值的方法?
private void Form1_Load(Object sender, EventArgs e)
{
_serialPort = new SerialPort("COM1", 19200, Parity.None, 8, StopBits.One);
_serialPort.Handshake = Handshake.None;
_serialPort.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
_serialPort.ReadTimeout = 500;
_serialPort.WriteTimeout = 500;
_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(500);
String data = _serialPort.ReadLine();
this.BeginInvoke(new SetTextDeleg(si_DataReceived), new Object[] { data });
}
private void si_DataReceived(String data)
{
textBox1.Text = data.Trim().ToString();
}
感謝
當您打開記事本並掃描某些內容時,您是否測試過USB掃描儀的功能?如果您使用的是最新的掃描儀,它已經將讀取的值作爲字符串返回:如果掃描條形碼中顯示'00000','00000'會插入記事本中。如果是這樣,你不必花費很多精力來閱讀輸入。 – Stefan
檢查端口設置。嘗試幾種不同的波特率。你收到的ASCII應該是人類可讀的 – axon
如果它不是人類可讀的,並且你有正確的端口設置,你可能仍然能夠找出編碼。嘗試將字節視爲無符號16位整數或您的應用程序通用 – axon