028
04.10.2004, 13:21 Uhr
~Mr. T
Gast
|
Hallo!
Hier der Teil des Programmes, der noch nicht sauber möchte... Der an com1 ankommende String mit der Länge von 7 ASCII Zeichen muß immer mit einer 0x01 gestartet werden. Das geht noch. Auch das Einlesen der Daten geht noch. Aber wieso ist das Kopieren zum Speicher in ein Feld nicht möglich? Es werden immer ca. 200 Werte erfolgreich kopiert und gespeichert. Dann fängt mein Rechner an, zu Piepen und schreibt nur noch eine Zeile nach der Anderen im sekundentakt aufs Display (mit cout<<WertA[...]). Das ganze Thema hackt dann und läuft nicht mehr richtig.
char WertA[4000]
for(t=0;t<2000;t++) { //Token an Adresse 0x01 schicken WriteFile(h_com1_Bus, &com1_ZuSchreiben, com1_ZuSchreibendeBytes, &com1_GeschrBytes, NULL);
/////Teilnehmer 0x01 sendet jetzt Daten, einlesen von 7Bytes:///// //////[0]=Wert,[1]=Wert,[2]=Token der an Teilnehmer als Folge///// ///Teilnehmer eingestellt ist. Hier 0x02, der Inkrementalgeber./// ///////[3]=WertA, [4]=WertB, [5]=Token. Ende des Comkreises///////
ReadFile(h_com1_Bus, &com1_Gelesen, 8, &com1_GelesBytes, NULL);
/////Wenn das dritte Byte nicht das Token 0x02 ist, Fehler!///// /////Wenn das fünfte Byte nicht das Token 0x03 ist, Fehler!/////
if(com1_Gelesen[2]!=0x02 || com1_Gelesen[5]!=0x03) { cout<<"\nCom Fehler\n" <<"Gelesen wurde : " <<com1_Gelesen[0] <<com1_Gelesen[1] <<com1_Gelesen[2] <<com1_Gelesen[3] <<com1_Gelesen[4] <<com1_Gelesen[5] <<com1_Gelesen[6] <<com1_Gelesen[7] <<"-->Fehler" <<endl; break; }
WertA[2*t] = com1_Gelesen[0]; WertA[2*t+1] = com1_Gelesen[1]; WertB[2*t] = com1_Gelesen[3]; WertB[2*t+1] = com1_Gelesen[4]; t++; //Um immer um 2 Felder zu springen... }
Wieso funzt das nicht richtig?
Danke... |