正如我在标题中所说,我在使用Lubuntu上的并行端口时遇到了一些麻烦..(我使用的是USB转PARALLEL适配器) 我写了一些在我的其他Linux PC(具有parport)上工作正常的代码:
#include <stdio.h>
#include <unistd.h> //sleep()
#include <sys/io.h> //outb() ioperm()
#define LPT1 0x0378
#define HIGH 255
#define LOW 0
int main()
{
if (ioperm(LPT1,1,1) == -1) //set LPT permissions
{
printf("PORTE CHIUSE, ESCO!\n");
return -1;
}
printf("PORTE APERTE SU %d\n", LPT1);
while (1)
{
outb(HIGH, LPT1); //LED blinking on D0-D7
sleep(5);
outb(LOW, LPT1);
sleep(5);
}
return 0;
}
不幸的是,这个代码在使用适配器的PC上无法运行..我认为这是由于虚拟parport与物理地址的不同地址,但无论如何我不知道如何寻址虚拟端口.. 那么,我应该在代码中进行哪些更改以使其与适配器一起使用?我应该把什么地址(如果有的话)放入costant&#34; LPT1&#34;?
先谢谢大家! ;) 晚上好,Matteo。
答案 0 :(得分:0)
由于您的计算机上没有实际的并行端口,因此I / O地址0x0378没有任何内容。由于您使用的是USB并行适配器,因此并行端口是适配器,而不是PC。对于Linux内核,您的USB适配器看起来像标准的USB打印机设备。要访问,您需要通过内核的USB打印机设备驱动程序。不幸的是,我不知道它是否提供了您正在寻找的低级访问权限。您可以通过向它发送数据流来使用它来打印,但我认为您不能操纵各个引脚的状态。
在查看USB Printer Class Specification后,它似乎无法以您想要的方式操作数据引脚。