|
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