繁体   English   中英

通过USB适配器(LINUX)在并行端口上进行C,C ++写入

[英]C,C++ write on parallel port via USB adapter (LINUX)

正如我在标题中所说的那样,使用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与物理IP地址不同的原因,但是无论如何我都不知道如何寻址虚拟端口。 ,我应该在代码中进行哪些更改以使其与适配器一起工作? 我应该把哪个地址(如果有的话)放到主要的“ LPT1”中?

在此先感谢大家! ;)晚上好,Matteo。

由于您的计算机上没有实际的并行端口,因此I / O地址0x0378上没有任何内容。 由于您使用的是USB转并行适配器,因此并行端口是适配器,而不是PC。 对于Linux内核,您的USB适配器看起来像是标准的USB打印机设备。 要访问,您需要通过内核的USB打印机设备驱动程序。 不幸的是,我不知道它是否提供您正在寻找的低级别访问权限。 您可以通过发送数据流来使用它来打印内容,但是我认为您无法操纵各个引脚的状态。

看完USB打印机类规范后 ,它似乎没有提供任何以所需方式操纵数据引脚的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM