------------------------------ ----------------- __fastcall TDevFather :: ~ TDevFather () {}
// --------------------------------------------- ----------------- int __fastcall TDevFather :: link_on ()
{return 0;}
// --------------------------------------------- ----------------- int __fastcall TDevFather :: link_off ()
{return 0;}
// --------------------------------------------- -----------------// Функції для роботи з мостом
int __ fastcall TDevFather :: scan ()// Повертає ознака стану пристрою
{
//
return receiver_size;
}
// --------------------------------------------- ------------------------------
int __ fastcall TDevFather :: read ()// Якщо позитивне число, то це число прийнятих байт, якщо від'ємне, то це код помилки
{
//
return receiver_size;
}
// --------------------------------------------- ------------------------------
char * __ fastcall TDevFather :: get_receiver_ptr ()//
{
return receiver;
}
// --------------------------------------------- ------------------------------
int __ fastcall TDevFather :: write (char * chs, int size)
{
return size;
}
// --------------- TCom ----------------------------- -------------- __fastcall TCom :: TCom (char * comname, int baudrate)
{
//
TCom :: comname = comname;// = "COM1";
TCom :: baudrate = baudrate;// = 115200;
active = false;
}
// --------------------------------------------- ----------------- __fastcall TCom :: ~ TCom ()
{
//
if (active)
{
link_off ();
}
}
// --------------------------------------------- ----------------- int __fastcall TCom :: link_on ()
{
//
if (! active)
{
com_hndl = CreateFile (comname.c_str (), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0);
if (com_hndl == INVALID_HANDLE_VALUE)
{
// MessageBoxA (0, "Invalid handle value "," Simple_COM ", MB_OK);
active = false;
return -1;
}
// налаштування параметрів з'єднання
st_dcb.DCBlength = sizeof (DCB);
st_dcb.Parity = NOPARITY;// NOPARITY, ODDPARITY, MARKPARITY, EVENPARITY
st_dcb.StopBits = ONESTOPBIT;// ONESTOPBIT, ONE5STOPBITS, TWOSTOPBITS
st_dcb.ByteSize = 8;// 4-8
st_dcb.BaudRate = baudrate;// CBR_115200
SetCommState (com_hndl, & st_dcb);
if (com_hndl == INVALID_HANDLE_VALUE)
{
// MessageBoxA (0, "Invalid handle value "," Simple_COM ", MB_OK);
active = false;
return -1;
}
SetupComm (com_hndl, 40000, 40000) ;//розміри банків
if (com_hndl == INVALID_HANDLE_VALUE)
{
// MessageBoxA (0, "Invalid handle value "," Simple_COM ", MB_OK);
active = false;
return -1;
}
SetCommMask (com_hndl, EV_RXCHAR);
if (com_hndl == INVALID_HANDLE_VALUE)
{
// MessageBoxA (0, "Invalid handle value "," Simple_COM ", MB_OK);
active = false;
return -1;
}
active = true;
};
if (! active)
{
return -1;
} else {
return 0;
}
}
// --------------------------------------------- ----------------- int __fastcall TCom :: link_off ()
{
//
if (active)
{
active = false;
CloseHandle (com_hndl);
return 0;
}
else
{
active = false;
return -1;
}
}
// --------------------------------------------- ----------------- int __fastcall TCom :: scan ()// Повертає ознака стану пристрою
{
COMSTAT st;
unsigned long Err;
if (active)
{
if (ClearCommError (com_hndl, & Err, & St))
{
return st.cbInQue;
}
else
{
// MessageBoxA (0, "Com scan error "," Simple_COM ", MB_OK);
return -1;
}
}
else
{
return 0;
}
}
// --------------------------------------------- ----------------- int __fastcall TCom :: read ()// Якщо позитивне число, то це число пінятих байт, якщо від'ємне, то це код помилки
{
COMSTAT st;
unsigned long Err;
unsigned long readed_bytes;
//
readed_bytes = 0;
if (active)
{
if (ClearCommError (com_hndl, & Err, & St))
{
if ((Err & CE_BREAK)> 0)
{
// MessageBoxA (0, "Com read error: CE_BREAK "," Simple_COM ", MB_OK);
return -2;
}
if (0x1000> st.cbInQue)
{
if (! ReadFile (com_hndl, receiver, st.cbInQue, & readed_bytes, NU...