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 46 47 48
| FComPort = new TComPort(NULL);
TComDataPacket *TmpComDataPacket = new TComDataPacket(FComPort);
TmpComDataPacket->ComPort = FComPort;
TmpComDataPacket->StartString = (char)02;
TmpComDataPacket->StopString = (char)0x0d;
TmpComDataPacket->IncludeStrings = true;
TmpComDataPacket->OnPacket = ComDataPacketEventHandler;
FComPort->Port = FConf->Port;
if (FConf->Baud == 9600)
{
FComPort->BaudRate = br9600;
FComPort->DataBits = dbSeven;
FComPort->Parity->Bits = prEven;
FComPort->StopBits = sbOneStopBit;
}
else
{
FComPort->BaudRate = br19200;
FComPort->DataBits = dbEight;
FComPort->Parity->Bits = prNone;
FComPort->StopBits = sbOneStopBit;
}
FComPort->Open();
}
//---------------------------------------------------------------------------
void __fastcall ...::ComDataPacketEventHandler(System::TObject* Sender, const ComStringParam Str)
{
// Code pour déboguer un binaire en hexa
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;
OutputDebugString(HexaStr.c_str());
... ici sufffit de parser RawStr en mode binaire ou texte selon le protocole ...
} |
Partager