有键盘和USB条形码阅读器来区分的方式
你可以依靠这些事实:
- 通过条码阅读器在minmum 4个字符扫描码
- 通过扫描QR码条码阅读器以RETURN“ENTER”结尾
- 扫描孔条码需要不到50毫秒的时间
这是使用VS2005 VB一个简单的形式包含:
- TextBox1中
- TextBox2中
- textbox3
- Button1的
- 定时器1 “的时间间隔设置为50” MS”
Public Class Form1
Dim BarcodeStr As String = ""
Dim IsBarcodeTaken As Boolean = False
Dim Str As String = ""
Dim str3 As String = ""
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If Timer1.Enabled = False Then
Str = TextBox1.Text
str3 = TextBox3.Text
End If
End Sub
Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
If Timer1.Enabled = False Then
Timer1.Enabled = True
End If
BarcodeStr = BarcodeStr & e.KeyChar
If Asc(e.KeyChar) = 13 And Len(BarcodeStr) >= 4 Then
IsBarcodeTaken = True
TextBox2.Text = BarcodeStr
End If
End Sub
Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
If IsBarcodeTaken = True Then
TextBox1.Text = Str
TextBox1.Select(Len(TextBox1.Text), 0)
Str = ""
TextBox3.Text = str3
TextBox3.Select(Len(TextBox3.Text), 0)
str3 = ""
End If
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
BarcodeStr = ""
IsBarcodeTaken = False
Timer1.Enabled = False
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox2.Text = ""
End Sub
End Class
由于我没有足够的代表来编辑其他人的帖子,请让我为你翻译:“假设扫描仪至少输入4个字符,以ENTER键结束,并采用50ms以下的操作。”这听起来对我来说是个好主意,但也许你应该让时间为100ms。 – MiffTheFox 2009-06-18 12:03:16
恐怕,这是不正确的。您可以**通过使用[原始输入](https://msdn.microsoft.com/en-us/library/windows/desktop/ms645536.aspx)告诉哪个设备生成输入。您不需要知道VID和PID,因为USB扫描仪具有指定的* UsagePage *和* Usage *条目。 – IInspectable 2017-01-09 16:21:00