WinForms应用程序中的条形码扫描仪集成:返回错误的特殊字符

时间:2018-12-18 10:25:54

标签: c# winforms unicode codepages

我有一个模拟键盘的条形码扫描仪。一旦我扫描了条形码,位于前台的窗口(我的应用程序的窗口)就会注册多个KeyDown事件。

如果我扫描条形码并且记事本处于活动状态,则会得到以下条形码:

7777777;123456;XX/XXXX;1.0

如果我的窗口在前台,则相同的条形码返回以下文本:

7777777¼123456¼XX7XXXX¼1¾0

所有特殊字符均已替换为其他字符。我该怎么办?如何转换字符串,以便像记事本一样处理它?<​​/ p>

    protected string CapturedKeys = "";
    protected string acceptChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/.;" + (char)Keys.OemPeriod + (char)Keys.OemSemicolon + (char)Keys.Oemcomma;

    private bool isValidChar(char c)
    {
        return acceptChars.Contains(c.ToString());
    }

    private void frmBarcodeScan_KeyDown(object sender, KeyEventArgs e)
    {
       if (isValidChar((char)e.KeyCode))
       {
          CapturedKeys = CapturedKeys + (char)e.KeyCode;

          Trace.WriteLine("OK: " + ((char)e.KeyCode));
       }
       else
       {
          Trace.WriteLine("ERR: " + ((char)e.KeyCode));
       }

       if (e.KeyCode == Keys.Return)
       {
          MessageBox.Show("Scanned: " + CapturedKeys);
       }
   }

0 个答案:

没有答案