Этот код работает везде
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено lamerok 01 сентября 2004 г. 17:02
В ответ на: Определение конца передачи по СОМ-порту под Виндой отправлено CTAC 01 сентября 2004 г. 12:33


int Tx(HANDLE FHandle,char *transmit_bufer, int transmit_byte_count)
{
int transmitted_bytes = 0;
DWORD FEventMask=EV_TXEMPTY;
BYTE nullbyte = 0x0;
OVERLAPPED os ;
BOOL WaitEventResult=false;

memset( &os, 0, sizeof( OVERLAPPED ) ) ;
os.hEvent = CreateEvent( NULL,TRUE,FALSE,NULL ) ;


transmit_bufer[transmit_byte_count++] = nullbyte;

PurgeIn(FHandle);
//Сброс выходного буфера
PurgeOut(FHandle);

//while(!IfCD(HartPort)); //Carrier Detect Определние занятости HART канала?

//Сигнализируем о начале передачи
if(RTSMode==RTSManual) SetRTSState(FHandle,true);

// SetRTSState(FHandle,1);
//Проталкиваем фрейм
transmitted_bytes = WriteCom(FHandle,transmit_bufer, transmit_byte_count,os);

WaitEventResult=WaitCommEvent(FHandle, &FEventMask, &os );
if (GetLastError() == ERROR_IO_PENDING)
WaitEventResult=(WaitForSingleObject(os.hEvent,1000)==WAIT_OBJECT_0);

ResetEvent(os.hEvent);
CloseHandle(os.hEvent) ;
//ДЛя 98 Винды
if(RTSMode==RTSManual)
{
Sleep(10);
SetRTSState(FHandle,false);
}
return (transmitted_bytes);
}

<\pre>

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru