Hallo zusammen.
Mein Problem, ich weis nicht wie ich es angehen soll. Zwar lese ich Binärdaten von einem Comprt ein. Ich weiß den Aufbau sowie die Länge der Message.
Jetzt lese ich jedes einzelne Zeichen ein und schreibe es in ein char Array. Dieses klappt für einige Message einwandfrei.
Nun das konkrete Problem. Sobald das eingelesen Zeichen eine binäre Null ( '\0') entspricht, macht er das Array zu. Wie kann ich das Umgehen. Kann mir einer Helfen Hier mal mein code der das einlesen übernimmt.
Kann mir da einer weiterhelfen! Bitte Bitte
Mein Problem, ich weis nicht wie ich es angehen soll. Zwar lese ich Binärdaten von einem Comprt ein. Ich weiß den Aufbau sowie die Länge der Message.
Jetzt lese ich jedes einzelne Zeichen ein und schreibe es in ein char Array. Dieses klappt für einige Message einwandfrei.
Nun das konkrete Problem. Sobald das eingelesen Zeichen eine binäre Null ( '\0') entspricht, macht er das Array zu. Wie kann ich das Umgehen. Kann mir einer Helfen Hier mal mein code der das einlesen übernimmt.
HTML:
INT i=0, n=0;
CHAR ch;
// Lese Laenge --> Länge der Nachricht steht in Byte 2 ,3 ,4
for ( i=2; i<5; i++)
{
ch = m_CComPort.ComGetch();
if (m_CComPort.m_iComError != COM_OK)
return 0;
s[i] = ch;
}
// Berechne Laenge, da diese in Hex Zahlensystem gelierfert wird
n = CSNSBaseUtil::hexToInt(s[2])*256 + CSNSBaseUtil::hexToInt(s[3])*16 + CSNSBaseUtil::hexToInt(s[4]) ;
// Lese Body --> holen des Bodys der Nachricht
for ( i=5; i<(n+5); i++) //n+5 da hier die ersten 5 Zeichen mit berechnet werden müssen
{
ch = m_CComPort.ComGetch();
if (m_CComPort.m_iComError != COM_OK)
return 0;
s[i] = ch; //und genau hier hackt es, sobald die binäre Null drin steht ist das Array dicht
if(ch=='\0'){
CString str = "Binäre Null";
AfxMessageBox(str);
}
}
Kann mir da einer weiterhelfen! Bitte Bitte