-------------------------------------------------------
/ / Important: Methods and properties of objects in VCL can only be
/ / used in a method called using Synchronize, for example:
/ / / / Synchronize (UpdateCaption);
/ / / / where UpdateCaption could look like:
/ / / / void __ fastcall SerialLink :: UpdateCaption ()
/ / {
/ / Form1-> Caption=«Updated in a thread»;
/ /}
/ / ---------------------------------------------------------------------------
__fastcall SerialLink :: SerialLink (bool CreateSuspended)
: TThread (CreateSuspended)
{= true;=tpIdle;
}
//---------------------------------------------------------------------------__fastcall SerialLink :: DecodePacket (void)
{= ((Buffer [0] >> 8) & 0x000f) * 0.1 + ((Buffer [1] >> 8) & 0x000f) * 0.01;=( (Buffer [3] >> 8) & 0x000f) * 0.1 + ((Buffer [4] >> 8) & 0x000f) * 0.01;=((Buffer [6] >> 8) & 0x000f) * 0.1 + ((Buffer [7] >> 8) & 0x000f) * 0.01;=((Buffer [8] >> 8) & 0x000f) * 0.1 + ((Buffer [ 9] >> 8) & 0x000f) * 0.01;=((Buffer [11] >> 8) & 0x000f) * 0.1 + ((Buffer [12] >> 8) & 0x000f ) * 0.01;=((Buffer [14] >> 8) & 0x000f) * 0.1 + ((Buffer [15] >> 8) & 0x000f) * 0.01;=((Buffer [0] >> 4) & 0x000f) * 1 + ((Buffer [1] >> 4) & 0x000f) * 0.1 + ((Buffer [2] >> 4) & 0x000f) * 0.01 ;=((Buffer [5] >> 4) & 0x000f) * 1 + ((Buffer [6] >> 4) & 0x000f) * 0.1 + ((Buffer [7] >> 4) & 0x000f) * 0.01;=((Buffer [8] >> 4) & 0x000f) * 10 + ((Buffer [9] >> 4) & 0x000f) * 1 + (( Buffer [10] >> 4) & 0x000f) * 0.1;=(Buffer [0] & 0x000f) * 1000 + (Buffer [1] & 0x000f) * 100 + (Buffer [2] & 0x000f ) * 10 + Buffer [3] &0x000f;=(Buffer [5] & 0x000f) * 100 + (Buffer [6] & 0x000f) * 10 + Buffer [7] &0x000f; ((Buffer [10 ] >> 8) * 0x0003)
{0:=«ЯЖ»;; 1:=«Ж»;; 2:=«З»;;
} (Buffer [4] * 0x0003)
{0:=50;; 1:=25;; 2:=75;;
} ((Buffer [5] >> 8) * 0x0001)
{0:=«ні»;; 1:=«так»;;
}
}
//---------------------------------------------------------------------------__fastcall SerialLink :: Execute ()
{
/ / ---- Place thread code here ---- dcb; hCom; TimeOuts; dwError; fSuccess; index=0;=CreateFile («COM1», _READ,
, / * comm devices must be opened w / exclusive-access * /, / * no security attrs * / _EXISTING, / * comm devices must use OPEN_EXISTING * /
, / * not overlapped I / O * / / * hTemplate must be NULL for comm devices * /
); (hCom == INVALID_HANDLE_VALUE)
{= GetLastError ();/* Handle error * /;
}
/ *
* Omit the call to SetupComm to use the default queue sizes.
* Get the current configuration.
* /=GetCommState (hCom, & dcb); (! fSuccess)