0

我第一次尝试使用 vxWorks lptDrv 驱动程序写入并行端口,但对 write() 的调用似乎总是返回 -1。这是我正在使用的代码:

#define PARALLEL_PORT "/lpt/0"

/* Create a device for the parallel port */
lptDevCreate(PARALLEL_PORT,0)

/*open the parallel port*/
parallelPortFD = open(PARALLEL_PORT,  O_CREAT|O_WRONLY, 0))

LOCAL UINT32 watchdogBit = 0x01;
if (write(parallelPortFD, (char*) watchdogBit, sizeof(UINT32)) == -1)
{
    /* Always hits this block */
}

对 lptDevCreate 和 open 的调用都可以返回。我目前没有将硬件插入并行端口,因此很难测试,但我认为这也不会导致写入失败。

有关更多信息,我可以调用 lptShow(),但我不确定我在看什么:

controlReg        = 0xff
statusReg         = 0xff
created           = TRUE
autofeed          = TRUE
inservice         = FALSE
normalInt         = 0
defaultInt        = 0
retryCnt          = 1
busyWait   (loop) = 10000
strobeWait (loop) = 10000
timeout    (sec)  = 1
intLevel   (IRQ)  = 7
4

1 回答 1

0

内核配置的端口号与 BIOS 不同,因此我更新了内核配置以匹配。然后显示 statusReg 设置为 0x78,表明 1. 端口忙,2. 缺纸错误。由于没有插入并行端口,因此默认状态显示为 0x78。我仍然没有测试端口的硬件,但是风河支持在没有插入设备的情况下看到了类似的结果,然后当有东西连接到端口时得到纠正。感谢 Benoit 的回应让我再次感动。

于 2012-01-09T19:04:37.743 回答