mem.copy was mache ich falsch? Kategorie: Programmierung (von MaWo - 22.07.2007 20:35) | ||
| ||
Hallo, ich versuche mich gerade an eine Komunikationsroutine. Hier sollen die 1. beiden empfangenen Byte des Array in das Sendearray copiert werden - aber irgendwie klappt es nicht. Hier mein Progamm: byte rData[200] , sData[255], cAdr, Func ; int Adr , Anz , lenData , CRC , cData ; int lop, ret ; thread init // Schnittstelle initialisieren und Geschwindigkeit einstellen { hwcom.init(); // serielle Schnittstelle initialisieren // Geschwindigkeits Variable setzen // 300=0; 600=1; 1200=2; 2400=3; 4800=4; // 9600=5;19200=6;38400=7;57600=8;115200=9 hwcom.setspeed (6); // serielle Geschwindigkeit einstellen hwcom.setbuf(rData,200);//Emfangspuffer setzen halt;} function request() returns int //Auf Request warten und Daten holen {ret=hwcom.rxd(); // Warten auf Anfrage von Daten if ret {hwcom.receive(rData,8,100); // Daten puffern return ret; // bei Daten Ok zurückgeben } else {return ret;} // Keine Daten zurückgeben } thread Auswertung // Empfangene Daten auswerten { hwcom.send(rData,8); // Empfangene Daten senden cAdr=rData[0]; // Com Adresse extrahieren Func=rData[1]; // Funktion extrahieren Adr=mem.getint(rData,2); // Adresse extrahieren Anz=mem.getint(rData,4)*2; /* Anzahl Datenwörter(int) extrahieren und Anzahl Byte berechnen(x2) */ mem.putint(sData,1,Anz); // Datenbyte länge setzen sData[0]=rData[0]; // Datenbyte Adresse setzen sData[1]=rData[1]; // Datenbyte Funktion setzen hwcom.send(sData,8); // Daten senden halt;} thread main // Coordination Ausführen { run init; // Schnittstelle Initialisieren loop // Schleife für kontinuierliche Datenabfrage {hwcom.flush(); // Empfangspuffer leeren wait request(); // Auf Anfrage warten run Auswertung; // request Auswerten und Daten Senden } } Ich sende 1,3,0,0,0,0,20,197,205 Wenn ich statt den 2 Zeilen sData[0]=rData[0] sData[1]=rData[1] mem.copy(sData,0,rData,2) verwende bekomme ich als Antwort: 0,0,20,0,.... bei dem 2 Zeiler ist die Antwort richtig 1,3,20,0,.... was mache ich falsch oder habe ich etwas übersehen? Ich denke mit der Copy Variante bin ich etwas schneller in der Ausführung des Programms. Mfg MaWo | ||
Antwort schreiben Antworten: Re: mem.copy was mache ich falsch? (von André H. - 3.08.2007 10:47) Re: mem.copy was mache ich falsch? (von MaWo - 14.08.2007 21:13) Re: mem.copy was mache ich falsch? (von André H. - 21.08.2007 9:16) |