[an error occurred while processing this directive]
|
Посылает корректно, прибор отвечает максимум через секунду (на осцильнике видно).
Прога выдает, что ничего не пришло.
Вот куски кода:
!!!!!!!!!!!!!!!!
ИНИЦИАЛИЗАЦИЯ
!!!!!!!!!!!!!!!!!
DCB dcb;
HANDLE hCOM;
OVERLAPPED oCOMRead = { 0 };
OVERLAPPED oCOMWrite = { 0 };
hCOM = CreateFile( "COM2",
GENERIC_READ | GENERIC_WRITE,
0, // comm devices must be opened w/exclusive-access
NULL, // no security attributes
OPEN_EXISTING, // comm devices must use OPEN_EXISTING
FILE_FLAG_OVERLAPPED, // not overlapped I/O
NULL // hTemplate must be NULL for comm devices
);
if (hCOM == INVALID_HANDLE_VALUE)
{
printf("FATAL ERROR: INVALID_HANDLE_VALUE\n");
getch();
exit(0);
}
if (!GetCommState(hCOM, &dcb))
{
printf("FATAL ERROR: GET COMM STATE FAILED\n");
getch();
exit(0);
}
dcb.BaudRate = 115200;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
if (!SetCommState(hCOM, &dcb))
{
printf("FATAL ERROR: SET COMM STATE FAILED\n");
getch();
exit(0);
}
oCOMWrite.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
oCOMRead.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
!!!!!!!!!!!!!!!!!!!!!
ПОСЫЛАЮ НЕЧТО - ВСЕ ОК
!!!!!!!!!!!!!!!!!!!!!
RS232_write_string(message, 6);
!!!!!!!!!!!!!!!!!!!!!!!
ЖДУ ОТВЕТА
!!!!!!!!!!!!!!!!!!!!!!!!!!!
BYTE buffer[128];
DWORD dwBytesRead = 0;
DWORD dwRes = 0;
printf("read file returned %d\n", ReadFile(hCOM, buffer, sizeof(buffer), &dwBytesRead, &oCOMRead) );
printf("bytes read %d\n", dwBytesRead);
dwRes = WaitForSingleObject(oCOMRead.hEvent, 2000);
printf("wait for object issued\n");
Sleep(3000);
switch(dwRes)
{
// Read completed.
case WAIT_OBJECT_0:
GetOverlappedResult(hCOM, &oCOMRead, &dwBytesRead, FALSE);
printf("Bytes read %d\n",dwBytesRead);
break;
case WAIT_TIMEOUT:
printf("ERROR: Timeout elapsed, nothing received\n");
break;
default:
printf("ERROR: Some other problems\n");
break;
}
CancelIo(hCOM);
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Выдается сообщение "Bytes Read 0"
E-mail: info@telesys.ru