String in hex umwandeln?
-
Moin!
Mein Problem sieht wie folgt aus:
ich habe ein prog zu Com-Kommunikation und will damit daten mit einem Chipkartenleser austauschen. Ich muß die Daten als hex-bytes schicken. Wie kann ich z.B. "60 05 22 05 3F E0 10 8D" diese 8 Hex-bytes senden. Bis jetzt kann mein prog nur strings senden:void CTest::OnTest() { DCB PortConfig; hCom = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if(GetCommState(hCom,&PortConfig) == 0) { //hier fehlerbehandlung MessageBox("1.Senden nicht möglich!"); return; } PortConfig.BaudRate = CBR_9600; PortConfig.StopBits = ONESTOPBIT; PortConfig.Parity = NOPARITY; PortConfig.ByteSize = 8; if(SetCommState(hCom,&PortConfig) == 0) { //hier error; MessageBox("2.Senden nicht möglich!"); } //SENDEN unsigned long length = 0; CString sDaten = "60 05 22 05 3F E0 10 8D"; if(WriteFile(hCom, sDaten, sDaten.GetLength(), &length,NULL) == 0) { //hier fehlerbehandlung MessageBox("3.Senden nicht möglich!"); return; } CloseHandle(hCom); }
-
tach auch,
mittels strtol(..) müsstest du arbeitem können ..
-
Guck dir das mal an: http://www.c-plusplus.net/forum/viewtopic.php?t=71870&postdays=0&postorder=asc&highlight=string+hex&start=10
-
Bullach schrieb:
Moin!
Mein Problem sieht wie folgt aus:
ich habe ein prog zu Com-Kommunikation und will damit daten mit einem Chipkartenleser austauschen. Ich muß die Daten als hex-bytes schicken. Wie kann ich z.B. "60 05 22 05 3F E0 10 8D" diese 8 Hex-bytes senden. Bis jetzt kann mein prog nur strings senden:[cpp]
void CTest::OnTest()
{DCB PortConfig;
hCom = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if(GetCommState(hCom,&PortConfig) == 0)
{
//hier fehlerbehandlung
MessageBox("1.Senden nicht möglich!");
return;
}
PortConfig.BaudRate = CBR_9600;
PortConfig.StopBits = ONESTOPBIT;
PortConfig.Parity = NOPARITY;
PortConfig.ByteSize = 8;
if(SetCommState(hCom,&PortConfig) == 0)
{
//hier error;
MessageBox("2.Senden nicht möglich!");
}//SENDEN
unsigned long length = 0;
CString sDaten = "600522053FE0108D";
if(WriteFile(hCom, sDaten, sDaten.GetLength(), &length,NULL) == 0)
{
//hier fehlerbehandlung
MessageBox("3.Senden nicht möglich!");
return;
}
CString sDaten = 0x03
if(WriteFile(hCom, sDaten, sDaten.GetLength(), &length,NULL) == 0)
{
//hier fehlerbehandlung
MessageBox("3.Senden nicht möglich!");
return;
}
CloseHandle(hCom);
}[/cpp]

Hat jetzt fnktioniert!!

End of Text hat gefehlt. Die hex-bytes kann man wie oben schicken. COOL