gpt4 book ai didi

c# - 使用 USB 条码扫描仪读取条码并忽略键盘数据输入,而扫描仪产品 ID 和供应商 ID 未知

转载 作者:可可西里 更新时间:2023-11-01 08:41:50 26 4
gpt4 key购买 nike

有没有办法在忽略键盘并且不知道 USB 扫描仪的 PID 或 VID 的情况下从 USB 条形码阅读器读取?我知道有一种方法可以通过使用 USB 扫描仪的 VID 和/或 PID 来区分 USB 扫描仪输入和键盘输入;这是使用 http://nicholas.piasecki.name/blog/2009/02/distinguishing-barcode-scanners-from-the-keyboard-in-winforms/ 中的代码完成的但是是否有另一种解决方案来区分键盘和 USB 扫描仪,而无需将扫描仪的 VID 或 PID 放入配置文件(或源代码)中?不想将各种 VID 或 PID 放在配置文件中的原因是,正在开发的应用程序将部署在许多笔记本电脑上,并附有任意类型的扫描仪。

此外,我不想使用将要输出的开始和/或结束序列配置扫描仪,因为扫描仪也被同一台机器上的其他软件使用,我不想必须更改其他软件上的代码。出于前面提到的相同原因,我不想将条形码阅读器编程为串行模式。

最佳答案

有一种方法可以区分键盘和USB条码阅读器


从以下假设开始:

  1. 条形码阅读器扫描的代码长度至少为 4 个字符
  2. 条形码阅读器扫描的代码以“ENTER”键结束
  3. 传输整个条码不到 50 毫秒

这个使用 VS2005 VB 的简单表单包含:

  1. 文本框1
  2. 文本框2
  3. 文本框3
  4. 按钮1
  5. Timer1“时间间隔设置为50ms”

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

关于c# - 使用 USB 条码扫描仪读取条码并忽略键盘数据输入,而扫描仪产品 ID 和供应商 ID 未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/615036/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com