2013-06-13 123 views
1

我想從USB掃描儀讀取條形碼。C#中的USB條形碼閱讀器#

使用SerialPort連接時,我得到的代碼如héà&"à')&'_hqà&é"'(è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(); 
     } 

感謝

+0

當您打開記事本並掃描某些內容時,您是否測試過USB掃描儀的功能?如果您使用的是最新的掃描儀,它已經將讀取的值作爲字符串返回:如果掃描條形碼中顯示'00000','00000'會插入記事本中。如果是這樣,你不必花費很多精力來閱讀輸入。 – Stefan

+0

檢查端口設置。嘗試幾種不同的波特率。你收到的ASCII應該是人類可讀的 – axon

+0

如果它不是人類可讀的,並且你有正確的端口設置,你可能仍然能夠找出編碼。嘗試將字節視爲無符號16位整數或您的應用程序通用 – axon

回答

0

謝謝你的幫助,我終於找到了我的條形碼掃描器給我這樣的編碼。實際上,當我開啓我的鎖定帽時,一切都很好。它也可以和記事本一起工作。

+0

只是簡單的LOL ... – Smartis

1

使用一個串口級的成員。

_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; 
// Encoding 
_serialPort.Encoding = Encoding.ASCII; 

_serialPort.Open(); 
+0

嗨,謝謝,但它不會工作 – boularouk