如何发送字节到USB到并行端口来控制LED?

我有一个USB到25针并行端口电缆。 我连接到笔记本电脑,并得到一个端口在/ dev / usb / lp0,如果我连接并行端口的pin1 / pin25与+/- LED灯亮。

现在我将LED的+引脚移动到并行端口的引脚2,并尝试发送字节到端口,它应该点亮,但不是。

我使用命令outb(0xff,port) ,其中端口是0x378 。 我在这里错过了什么?

这是我完整的程序:

 #include<stdlib.h> #include<stdio.h> #include<sys/io.h> void main(void){ int port=0x378; outb(0xff,port); outb(0x01,port+2); sleep(1); outb(0x00,port+2); printf("‌​End"); } 

我也检查了port=0x3bc但没有工作。 我甚至通过连接LED的引脚来检查频闪引脚1,它总是点亮但不会变低。 端口地址有问题吗?

端口0x378是旧的ISA并行端口所在的I / O位置。 USB连接的并行端口不会显示在那里。 它不能。 对于如何与OHCI / UHCI / EHCI / xHCI作品交流的低级细节,我并不了解,但是我知道你所做的一切都必须通过USB主机控制器。 因此,在最低级别上,您需要查询USB总线,找到您的设备的VID,打开某种通信方式,设置通信模式,然后一次发送/接收字节。

尝试将数据直接写入/dev/usb/lp0 ,看看会发生什么。 您可能需要先做一些事情来改变ECP模式,可能是一些特殊的ioctl 。 您可能需要深入挖掘该驱动程序的源代码,才能真正了解要执行的操作。

否则,看看你是否能为你的笔记本电脑获得一个码头。 如果您的笔记本电脑碰巧是一个商务类笔记本电脑,我注意到可用码头通常有他们的传统端口,他们工作,因为你正在尝试在这里使用它们。