(ParamStr (1), & Module, index, & modules_counter);
if (index == -1) {
PostMessage (Form1-> Handle, WM_CLOSE, 0,0);
return;
}
mes = AnsiString ("Перевірка версії приладу:") + ParamStr (1);
}
if (item_type == 2) {
GetModule (ParamStr (1), & Module, index);
if (index == -1) {
PostMessage (Form1-> Handle, WM_CLOSE, 0,0);
return;
}
mes = AnsiString ("Перевірка версії модуля: ") + ParamStr (1);
modules_counter = 1;
}
msg ("");
msg ("");
msg (mes.c_str ());
logmsg (mes.c_str ());
// перекладати висновок в режим налагоджувальної (0x01 0x02) або звітної (0x01 0x01) інформації
received_data [0] = 0x01; received_data [1] = 0x02;
res = mWrite (m_Disp, received_data, 2, & Wrtd);
if (res! = 0x0)
{
// sprintf (received_data, "Помилка % D при перекладі виведення в режим налагоджувальної інформації ", res);
// MessageBox (NULL, received_data, "Помилка", MB_OK);
}
// вивід результатів тестування з кожного модуля
for (i = 0; i
// назва модуля
msg ("");
msg (Module [i]. name.c_str ());
logmsg ("");
logmsg (Module [i]. name.c_str ());
for (j = 0; j
received_version = get_version ((unsigned int) (Module [i]. baseaddress + Module [i]. version [j] -> address), Module [i]. Version [j] -> type);
// якщо версії збігаються, то НОРМА, якщо не збігаються, то ненорми
if (received_version == Module [i]. Version [j] -> value) {
mes = AnsiString ("") + Module [i]. Version [j] -> description + AnsiString ("0x") + IntToHex ((int) Module [i]. Version [j] -> value, Module [i]. Version [j] -> type) + AnsiString (": HOPMA");
msg (mes.c_str ());
logmsg (mes.c_str ());
}
else {
mes = AnsiString ("") + Module [i]. Version [j] -> description + AnsiString ("0x") + IntToHex ((int) received_version, Module [i]. Version [j] -> type) + AnsiString (": HEHOPMA") + AnsiString ("(повинно бути 0x ") + IntToHex ((int) Module [i]. Version [j] -> value, Module [i]. Version [j] -> type) + AnsiString (")");
msg (mes.c_str ());
logmsg (mes.c_str ());
error + = 1;
}
}
}
// перекладати висновок в режим налагоджувальної (0x01 0x02) або звітної (0x01 0x01) інформації
received_data [0] = 0x01; received_data [1] = 0x01;
res = mWrite (m_Disp, received_data, 2, & Wrtd);
if (res! = 0x0)
{
// sprintf (received_data, "Помилка % D при перекладі виведення в режим звітної інформації ", res);
// MessageBox (NULL, received_data, "Помилка", MB_OK);
}
// загальний результат тестування
if (error) {
msg ("");
msg ("Результат: ненорми");
logmsg ("");
logmsg ("Результат: ненорми");
}
else {
msg ("");
msg ("Результат: НОРМА");
logmsg ("");
logmsg ("Результат: НОРМА");
}
// звільняємо динамічно виділену пам'ять
if (item_type == 1) {
delete [] Module;
}
else delete Module;
delete [] Correction;
if (mClose! = NULL)
{
// відключити канали обміну
mClose (m_Disp);
}
ProgExchCl_FreeLibrary ();
CoUninitialize ();
PostMessage (Form1-> Handle, WM_CLOSE, 0,0);
}
// --------------------------------------------- -----------------
# ifndef Unit1H
# define Unit1H
// --------------------------------------------- ----------------- # include p> # include
# include
# include
# include
# include
# include
# include
// --------------------------------------------- -----------------
typedef struct _SVersion {
unsigned int address;// адреса регістра версії
unsigned int value;// лічену значення версії
unsigned int type;// розрядність версії
AnsiString description ;//опис версії
} TVersion, * PVersion;
typedef struct _SModule {
AnsiString name;// ім'я модуля
unsigned int baseaddress;// базовий адреса модуля
int version_count ;//кількість версій у модуля
PVersion version [10];// масив версій модуля
} TModule, * PModule;
typedef struct _SCorrection {
AnsiString name;
AnsiString new_name;
} TCorrection, * PCorrection;
class TForm1: public TForm
{
__published:// IDE-managed Components
TXMLDocument * XMLDocument1;
TMemo * LogText;
...