2011-12-12 140 views
0

我想联系一个USB条码扫描器作为串行端口,使用他的虚拟COM端口名称和串行端口类。c#与一个USB端口通信

我试图这样做的原因是为了避免使用扫描仪作为键盘楔子,因为即使在隐藏窗体时我需要扫描的可能性。

问题是,当我连接条码扫描器到USB端口,并运行“GetPortNames”函数时,我得到一个空列表。任何建议为什么?谢谢

+0

您正在使用什么操作系统?你已经检查过操作系统,看看扫描仪是否已经在com端口注册后,你已经插入? – ChrisBD

回答

1

通常,许多USB条形码扫描仪只会显示为虚拟键盘设备 - 而不是虚拟COM端口。这将解释为什么它没有出现。

您的扫描仪是否支持某种串行仿真模式?您可能需要对其进行配置或安装不同的驱动程序来启用此功能。它是否显示为设备管理器中的串行端口? (查看端口树下)

顺便说一句:

看看这个问题,如果您发现“键盘模式”是支持的只有一个: Reading a barcode using a USB barcode scanner along with ignoring keyboard data input while scanner product id and vendor id are not known

这个问题是指这篇文章提供了大量有关键盘钩子和过滤扫描条形码的良好信息: http://nicholas.piasecki.name/blog/2009/02/distinguishing-barcode-scanners-from-the-keyboard-in-winforms/

+0

我没有在指南中找到任何对串行仿真模式的引用,所以我认为它不存在,但我确实发现有关键盘的文章很有趣,但我觉得它相当复杂。你可能会向我发送我需要的原始代码来执行任何操作?提前致谢 –

+0

博客页面有一个链接,用于下载示例应用程序(附带源代码)。我会看看那个,并从那里开始 - 这应该足以开始。 – Lummo

0

我不能保证它可以与您的特定设备一起工作,但我看过一次解决类似问题的代码。解决方案是在注册表中查找端口名称。

它的代码可以在开源项目ez430chronosnet中找到;一个.NET库,可通过USB加密狗访问TI的EZ430 Chronos手表。

您需要查看在注册表中寻找名称的PortName.cs file(它至少指向您右侧的按键)以及用SerialPort进行实际端口打开的Chronos.cs file