所有
如果这是一个不明智的问题并且缺乏我到目前为止尝试做的详细例子,请提前道歉 - 我在这个主题上发现的所有材料似乎超出了我正在尝试的范围要做的,或者它刚好超过我的头脑(欢迎学习资源!!)。
我本来要做的是构建一个小程序,区分用于在我的Lenovo Win10机器上创建用户输入的输入设备,该设备可以在后台运行并在满足某些条件时触发脚本。在我的例子中,输入设备是通用无线/ USB键盘,以及充当HID键盘的USB条形码扫描仪(条形码扫描仪直接插入机器,而不是通过键盘)。
我需要区分输入的原因是,例如,如果每次从扫描的条形码打印星号时都运行脚本我希望用户仍然能够从键盘输入星号而不触发脚本 - 我限制使用Code 128条形码,所以我也不能通过在条形码中添加字符来触发键盘上没有的脚本来绕过这个问题。
在伪代码中基本上是
Dim barcodescanner As SerialPort
barcodescanner = New SerialPort()
barcodescanner.PortName = "COMx"
barcodescanner.BaudRate = 9600
barcodescanner.Parity = Parity.None
barcodescanner.DataBits = 8
barcodescanner.StopBits = StopBits.One
Dim barcode As String
barcodescanner.Open()
barcode = barcodescanner.ReadLine()
barcodescanner.Close()
最初我尝试在VB中执行此操作,使用以前用于侦听COM端口的一些代码来记录arduino的输出 -
{{1}}
- 除了我以外的原因,我无法成功地使用虚拟COM端口进行扫描并以这种方式记录数据,我还尝试使用来自http://www.ftdichip.com/FTDrivers.htm的驱动程序创建虚拟COM端口,但这无济于事。
从一些调查中我发现了一些C#类,即; InputEventArgs,InputDevice,RoutedEventArgs,好像它们可以用来解析输入/事件中的设备ID,这可能允许利用我可以用来充实的一些信息并构建上面的伪IF THEN ELSE循环 - 但是我努力使用这些类并实际构建任何可用的代码。
有没有人对如何做到这一点有任何建议?
在一个完美的世界中,如果我可以为条形码扫描器创建一个虚拟COM端口,并使用VB来理解它,那将是理想的 - 但如果没有,是否有人可以建议在C#中执行此操作的方法或指向另一种方法?
答案 0 :(得分:2)
问题是键盘模拟扫描仪和键盘的工作方式相同,Windows不允许您找出实际发送击键的设备。
一种方法是(如果可能的话,你的扫描仪):
然后,您可以根据需要实际打开COM端口并与扫描仪通信 - 但是,如果需要,您需要自己将扫描的字符串放入文本字段中。
第二种可能的解决方案(如果适用于您的设备):