我在Windows窗体textbox1
和textbox2
中有两个文本框,我试图使用两个条形码扫描仪将值发送到每个文本框。
如果我从条形码扫描仪1 扫描任何东西,它应该将值发送到textbox 1
而无需单击它! 。
如果我从 Barcode Scanner 2 扫描任何东西,它应该将值发送到textbox 2
而无需单击它! 。
有没有办法做到这一点?
答案 0 :(得分:1)
USB条形码扫描仪使用HID或人机界面设备。通常,这些是人类用来直接控制计算机系统操作的设备。
Microsoft提供了该技术的完整分类,希望我可以加载PDF。我讨厌张贴网址,因为它们可能会过时; https://docs.microsoft.com/en-us/windows-hardware/drivers/hid/introduction-to-hid-concepts
您可以研究一些API,可以在上面找到,我将对此进行调查:
设备发现和设置 以下列表标识了应用程序可用于以下目的的HID API:标识HID设备的属性以及与该设备建立通信。此外,应用程序可以使用其中一些API来识别顶级集合。
HidD_GetAttributes
HidD_GetHidGuid
HidD_GetIndexedString
HidD_GetManufacturerString
HidD_GetPhysicalDescriptor
HidD_GetPreparsedData
HidD_GetProductString
HidD_GetSerialNumberString
HidD_GetNumInputBuffers
HidD_SetNumInputBuffers
数据移动 以下列表标识了应用程序可用来在应用程序和选定设备之间来回移动数据的HID API。
HidD_GetInputReport
HidD_SetFeature
HidD_SetOutputReport
ReadFile
WriteFile
另一种方法是查看条形码扫描器是否可以模拟串行端口。这将通过comm端口指示哪个扫描仪是哪个。
答案 1 :(得分:0)
为此用途,有POS for.NET或OPOS。
两者都是UnifiedPOS的一部分。
Document -- retail/17-07-32 (UnifiedPOS Retail Peripheral Architecture, Version 1.14.1)
这里有信息并可以下载。
POS for .NET v1.14.1 SDK Documentation
Download Microsoft Point of Service for .NET v1.14.1 (POS for.NET)
由于实际控制扫描仪的程序是由扫描仪供应商提供的,因此您将获得它。
使用它们,您需要为每个扫描仪创建控制对象。
哪个对象负责由Open方法的DeviceName参数指定哪个扫描程序。 DeviceName通过配置文件或注册表数据与USB VID / PID或连接的COM端口关联。
可以通过对该对象执行Open,Claim,DeviceEnabled = true,DataEventEnabled = true从扫描仪读取条形码。
DataEvent通知对象已读取条形码。
应用程序可以为每个对象注册一个单独的事件处理程序,或者通过注册相同的事件处理程序并确定事件通知的sender参数,可以识别从哪个扫描仪读取条形码。
应用程序可以从相应对象的属性读取条形码数据,并将其写入相应的TextBox中。