1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| //---------------------------------------------------------------------------
void __fastcall TPortComXXXMainForm::ComDataPacketEventHandler(System::TObject* Sender, const ComStringParam Str)
{
RawByteString RawStr = Str;
int BufSize = RawStr.Length();
char* Buffer = new char[BufSize * 2 + 1];
ZeroMemory(Buffer, BufSize * 2 + 1);
BinToHex(RawStr.c_str(), Buffer, BufSize);
String HexaStr = Buffer;
delete [] Buffer;
String Traduction;
TXXXCOMMessage Msg;
TXXXCOMMessageData MsgData;
if (CXXXCOMToolHelp::ParseXXXCOMResponse(Msg, MsgData, RawStr))
{
switch (Msg.Header.CodeCommand.Fourth4Bit)
{
case CC_POLLING :
Traduction = AnsiString("Polling - Liaison Clef : ") + ((((TXXXCOMMessageData*)Msg.Data.Value)->Polling.Recv.LiaisonClef == D_AIGUILLAGE_ESCLAVE) ? "Esclave" : "Maître");
Traduction += AnsiString(", Clef USB : ") + ((((TXXXCOMMessageData*)Msg.Data.Value)->Polling.Recv.ClefUSB == D_CLEF_USB_ACTIVE) ? "Active" : "Verrouillée");
Traduction += AnsiString( ", Code Clavier : ") + ((((TXXXCOMMessageData*)Msg.Data.Value)->Polling.Recv.CodeClavier == D_CODE_CLAVIER_MODIFIE) ? "Modifié" : "Usine");
break;
case CC_AIGUILLAGE :
Traduction = AnsiString("Aiguillage - ") + ((((TXXXCOMMessageData*)Msg.Data.Value)->Aiguillage.Recv.ACK == D_ACK) ? "ACK" : "NOK");
break;
case CC_VEROUILLAGE :
Traduction = AnsiString("Verouillage - ") + ((((TXXXCOMMessageData*)Msg.Data.Value)->Verrouillage.Recv.ACK == D_ACK) ? "ACK" : "NOK");
break;
case CC_CODE_CLAVIER :
Traduction = AnsiString("Code Clavier - ") + ((((TXXXCOMMessageData*)Msg.Data.Value)->CodeClavier.Recv.ACK == D_ACK) ? "ACK" : "NOK");
break;
default :
Traduction = "Type de Message Inconnu !";
}
}
else
Traduction = "Erreur de Parsage";
MemoCOMResponse->Lines->Add(HexaStr + " : " + Traduction);
} |
Partager