C、 通过USB适配器(LINUX)在并行端口上编写C++
C,C++ write on parallel port via USB adapter (LINUX)
正如我在标题中所说,我在使用Lubuntu上的并行端口时遇到了一些问题。。(我使用的是USB转并行适配器)我写了一些代码,在我的另一台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 %dn", LPT1);
while (1)
{
outb(HIGH, LPT1); //LED blinking on D0-D7
sleep(5);
outb(LOW, LPT1);
sleep(5);
}
return 0;
}
不幸的是,此代码在带有适配器的电脑上不起作用。。我认为这是由于虚拟端口和物理端口的地址不同,但无论如何,我不知道如何寻址虚拟端口。。那么,我应该在代码中更改什么以使其与适配器一起工作呢?我应该在合作伙伴"LPT1"中输入什么地址(如果有的话)?
提前感谢大家!;)晚上好,马泰奥。
由于您的计算机上没有实际的并行端口,因此I/O地址0x0378处没有任何内容。由于您使用的是USB到并行适配器,所以并行端口是适配器,而不是您的PC。对于Linux内核,您的USB适配器看起来像一个标准的USB打印机设备。要访问,您需要通过内核的USB打印机设备驱动程序。不幸的是,我不知道它是否提供了您想要的低级别访问。你可以通过向它发送数据流来打印东西,但我认为你不能操纵单个引脚的状态。
在查看了USB打印机类规范之后,它似乎没有提供任何方法来以您想要的方式操作数据引脚。
相关文章:
- Qt Q串行端口未编程设备未关闭
- 如何在C++(VS2010)中设置超时读取USB端口?
- AWS IoT 开发工具包:通过 TCP 端口 443 使用 MQTT
- 在 linux c++ 中没有通过串行端口发送的数据
- 检查串行端口Linux中是否有传入数据(cbInQue for linux)
- 在不传输的情况下更改 Win32 中的串行端口波特率
- 如何将值写入 DIO 模块 AUTOSAR 中的端口?
- grpc 的 ServerBuilder::AddListeningPort() 总是返回 TCP 端口零
- 增强 ASIO 和串行端口异步读取
- 串行端口写入究竟如何从缓冲区实际写入数据?
- 为什么我的 arduino 按钮在 0 和 1 以外的端口上不起作用?
- 如何将参数这些串行端口传递到函数中
- 如何在 Windows 中通过 SSL 端口枚举域控制器
- 无法将套接字绑定到 IPv4 和 IPv6 中的端口
- 并发::并行端口开销和性能命中率(经验法则)
- C、 通过USB适配器(LINUX)在并行端口上编写C++
- 与jnpout32pkg/jnpout32 reg的并行端口通信
- 将文件写入并行端口挂起
- 读取并行端口状态(简单的Push开关)
- Visual c++并行端口控制