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 に答える