Программирование ЛИР-917
Добавлено: 29 июл 2008, 15:25
Добрый день!
Пытаюсь управлять работой ЛИР-917 из Дельфи.
1. Инициализация проходит успешно (SI_SUCCESS):
if uHandle<>0 then
status := SI_Close(uHandle);
if status=SI_SUCCESS then
MessageDlg('Close: SI_SUCCESS',mtInformation,[mbYes],0)
else if status=SI_INVALID_HANDLE then
MessageDlg('SI_INVALID_HANDLE',mtInformation,[mbYes],0);
2. Количество устройств определяется верно (1):
status := SI_GetNumDevices(NumDevices);
s:=IntToStr(NumDevices);
MessageDlg('Количество устройств:'+s,mtInformation,[mbYes],0);
3. Выбираю последнее устройство, как описано в примере на диске ЛИР-917:
DeviceNum := NumDevices - 1; // подключаемся к последнему устройству
4. Пытаюсь открыть устройство - ошибка "SI_INVALID_PARAMETER":
status := SI_Open(DeviceNum, uHandle);
s:=IntToStr(status);
MessageDlg('Результат открытия:'+s,mtInformation,[mbYes],0);
if status=SI_SUCCESS then
MessageDlg('SI_SUCCESS',mtInformation,[mbYes],0)
else if status=SI_DEVICE_NOT_FOUND then
MessageDlg('SI_DEVICE_NOT_FOUND',mtInformation,[mbYes],0)
else if status=SI_INVALID_HANDLE then
MessageDlg('SI_INVALID_HANDLE',mtInformation,[mbYes],0)
else if status=SI_INVALID_PARAMETER then
MessageDlg('SI_INVALID_PARAMETER',mtInformation,[mbYes],0)
else if status=SI_READ_ERROR then
MessageDlg('SI_READ_ERROR',mtInformation,[mbYes],0)
else if status=SI_RX_QUEUE_NOT_READY then
MessageDlg('SI_RX_QUEUE_NOT_READY',mtInformation,[mbYes],0)
else if status=SI_WRITE_ERROR then
MessageDlg('SI_WRITE_ERROR',mtInformation,[mbYes],0)
else if status=SI_RESET_ERROR then
MessageDlg('SI_RESET_ERROR',mtInformation,[mbYes],0)
else if status=SI_INVALID_PARAMETER then
MessageDlg('SI_INVALID_PARAMETER',mtInformation,[mbYes],0)
else if status=SI_INVALID_REQUEST_LENGTH then
MessageDlg('SI_INVALID_REQUEST_LENGTH',mtInformation,[mbYes],0)
else if status=SI_DEVICE_IO_FAILED then
MessageDlg('SI_DEVICE_IO_FAILED',mtInformation,[mbYes],0)
else if status=SI_INVALID_BAUDRATE then
MessageDlg('SI_INVALID_BAUDRATE',mtInformation,[mbYes],0)
else if status=SI_FUNCTION_NOT_SUPPORTED then
MessageDlg('SI_FUNCTION_NOT_SUPPORTED',mtInformation,[mbYes],0)
else if status=SI_GLOBAL_DATA_ERROR then
MessageDlg('SI_GLOBAL_DATA_ERROR',mtInformation,[mbYes],0)
else
MessageDlg('Результат неясен:'+s,mtInformation,[mbYes],0);
В чем может быть ошибка?
Пытаюсь управлять работой ЛИР-917 из Дельфи.
1. Инициализация проходит успешно (SI_SUCCESS):
if uHandle<>0 then
status := SI_Close(uHandle);
if status=SI_SUCCESS then
MessageDlg('Close: SI_SUCCESS',mtInformation,[mbYes],0)
else if status=SI_INVALID_HANDLE then
MessageDlg('SI_INVALID_HANDLE',mtInformation,[mbYes],0);
2. Количество устройств определяется верно (1):
status := SI_GetNumDevices(NumDevices);
s:=IntToStr(NumDevices);
MessageDlg('Количество устройств:'+s,mtInformation,[mbYes],0);
3. Выбираю последнее устройство, как описано в примере на диске ЛИР-917:
DeviceNum := NumDevices - 1; // подключаемся к последнему устройству
4. Пытаюсь открыть устройство - ошибка "SI_INVALID_PARAMETER":
status := SI_Open(DeviceNum, uHandle);
s:=IntToStr(status);
MessageDlg('Результат открытия:'+s,mtInformation,[mbYes],0);
if status=SI_SUCCESS then
MessageDlg('SI_SUCCESS',mtInformation,[mbYes],0)
else if status=SI_DEVICE_NOT_FOUND then
MessageDlg('SI_DEVICE_NOT_FOUND',mtInformation,[mbYes],0)
else if status=SI_INVALID_HANDLE then
MessageDlg('SI_INVALID_HANDLE',mtInformation,[mbYes],0)
else if status=SI_INVALID_PARAMETER then
MessageDlg('SI_INVALID_PARAMETER',mtInformation,[mbYes],0)
else if status=SI_READ_ERROR then
MessageDlg('SI_READ_ERROR',mtInformation,[mbYes],0)
else if status=SI_RX_QUEUE_NOT_READY then
MessageDlg('SI_RX_QUEUE_NOT_READY',mtInformation,[mbYes],0)
else if status=SI_WRITE_ERROR then
MessageDlg('SI_WRITE_ERROR',mtInformation,[mbYes],0)
else if status=SI_RESET_ERROR then
MessageDlg('SI_RESET_ERROR',mtInformation,[mbYes],0)
else if status=SI_INVALID_PARAMETER then
MessageDlg('SI_INVALID_PARAMETER',mtInformation,[mbYes],0)
else if status=SI_INVALID_REQUEST_LENGTH then
MessageDlg('SI_INVALID_REQUEST_LENGTH',mtInformation,[mbYes],0)
else if status=SI_DEVICE_IO_FAILED then
MessageDlg('SI_DEVICE_IO_FAILED',mtInformation,[mbYes],0)
else if status=SI_INVALID_BAUDRATE then
MessageDlg('SI_INVALID_BAUDRATE',mtInformation,[mbYes],0)
else if status=SI_FUNCTION_NOT_SUPPORTED then
MessageDlg('SI_FUNCTION_NOT_SUPPORTED',mtInformation,[mbYes],0)
else if status=SI_GLOBAL_DATA_ERROR then
MessageDlg('SI_GLOBAL_DATA_ERROR',mtInformation,[mbYes],0)
else
MessageDlg('Результат неясен:'+s,mtInformation,[mbYes],0);
В чем может быть ошибка?