Отчет по практике: Разработка программы контроля изделий и подготовка программной документации
pTarget[4] = (unsigned char) type;
*(int*)(pTarget + 0x05) = BaseAddress;
version = 0;
SHsum=0x0;
for ( i=3; i<=8; i++ ){SHsum+=pTarget[i];} //подсчёт КС
// MessageBox(NULL, AnsiString(SHsum).c_str(), "Контрольная сумма", MB_OK);
pTarget[9]=(unsigned char)(SHsum);//младший байт
pTarget[10]=(unsigned char)(SHsum>>8);//старший байт
ComPort->write(pTarget, 3+MessageSize+2);
delete [] pTarget;
Sleep(100);
i = ComPort->read();
if(i>0)
{
// MessageBox(NULL, AnsiString(i).c_str(), "Принято байт", MB_OK);
pReceived = ComPort->get_receiver_ptr(); //считываем полученное значение
if ( pReceived[0] != 0x55 || pReceived[1] != 0xAA) {
MessageBox(NULL, pReceived, "Ошибка", MB_OK);
return 0;
}
// наложение масок
switch (type) {
case 1:
version = (unsigned int) (*( char* )(pReceived + 5))&0x000000FF;
break;
case 2:
version = (unsigned int) (*( short* )(pReceived + 5))&0x0000FFFF;
break;
case 4: