Ich bins mal wieder...
...denn ich habe Probleme bei der Weiterverarbeitung meiner einzelnen char[65]-Felder, sobald ein Byte davon ein 0x00 ist. Dort bricht der Rechner die Verarbeitung der weiteren Zeichen ab - ist ja auch logisch. Dummerweise benötige ich aber immer diese exakt 64 Byte großen Stücken - und 0x00 ist bei insgesamt 256kB zu lesender Daten auch oft dabei.
Wie aber kann ich dem abhelfen?
Mein funktionierendes Programmstück hatte ich in diesem Tread bereits als Abschluss gepostet, der Übersicht halber schreib ich es aber noch mal rein:
Kann ich die eingelesenden Zeichen auch direkt in ihrem Hex-Code benutzen und handeln? Ich hatte bereits eine BYTE - Deklaration der Variable cominhalt probiert, allerdings mit gleichem Ergebnis. Sobald eine Hex-Null im 64Byte langen Eingelesenen ist wird er an der Stelle als abgeschlossen behandelt. :/
Die 64 Byte selbst liest er aber vollständig ein, das kann ich mittels m_bytes nachvollziehen.
...denn ich habe Probleme bei der Weiterverarbeitung meiner einzelnen char[65]-Felder, sobald ein Byte davon ein 0x00 ist. Dort bricht der Rechner die Verarbeitung der weiteren Zeichen ab - ist ja auch logisch. Dummerweise benötige ich aber immer diese exakt 64 Byte großen Stücken - und 0x00 ist bei insgesamt 256kB zu lesender Daten auch oft dabei.
Wie aber kann ich dem abhelfen?
Mein funktionierendes Programmstück hatte ich in diesem Tread bereits als Abschluss gepostet, der Übersicht halber schreib ich es aber noch mal rein:
Code:
char cominhalt[65]="\0";
CString temp(cominhalt);
int m_bytes,i;
for (i=1; i<4100; i++)
{
port.Purge(PURGE_RXCLEAR); //Den Lese-Puffer löschen
char comsender[11]="!n"; // Das ist zur Kommunikation mit meinem
port.Write(comsender,10); // µC notwendig
m_bytes=port.Read(cominhalt,64); //hier werden immer 64 Bytes eingelesen
m_EEPROM_Inhalt+=cominhalt;
m_status=m_EEPROM_Inhalt.GetLength();
sprintf(buffer, "Page: %d", i);
sprintf(buffer1, "Länge: %i", m_bytes);
sprintf(buffer2, "%s", cominhalt);
SetDlgItemText(IDC_page,buffer2);
SetDlgItemText(IDC_bytes,buffer1);
SetDlgItemText(IDC_COM_Status,buffer);
UpdateWindow();
Warte(3000); // Meine kleine Warte-Schleife,
// damit ich sehe, was so passiert
Kann ich die eingelesenden Zeichen auch direkt in ihrem Hex-Code benutzen und handeln? Ich hatte bereits eine BYTE - Deklaration der Variable cominhalt probiert, allerdings mit gleichem Ergebnis. Sobald eine Hex-Null im 64Byte langen Eingelesenen ist wird er an der Stelle als abgeschlossen behandelt. :/
Die 64 Byte selbst liest er aber vollständig ein, das kann ich mittels m_bytes nachvollziehen.
Zuletzt bearbeitet: