Ошибка записи () параллельного порта vxWorks - PullRequest
0 голосов
/ 16 декабря 2011

Я пытаюсь записать в параллельный порт в первый раз, используя драйвер 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

1 Ответ

0 голосов
/ 09 января 2012

Конфигурация ядра имела номер порта, отличный от BIOS, поэтому я обновил конфигурацию ядра для соответствия. Это тогда показало, что statusReg установлен в 0x78, указывая, что 1. порт был занят и 2. ошибка отсутствия бумаги. Поскольку ничего не было подключено к параллельному порту, он показывал 0x78 в качестве состояния по умолчанию. У меня все еще нет оборудования для тестирования порта, но поддержка Wind River показала аналогичные результаты без подключенного устройства, которое затем было исправлено, когда что-то было подключено к порту. Спасибо Бенуа за ответ, который заставил меня снова двигаться.

...