Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Array auf Chipkarte speichern Kategorie: I²C-Bus (von wema - 4.10.2005 23:51)
Als Antwort auf Re: Array auf Chipkarte speichern von Marco - 4.10.2005 18:58
Ich nutze:
C164CI-ControllerBoard, CC2-ReglerBoard, OSOPT V3.0
> Hallo Wema,
>
> Vielen, vielen Dank für deine Korrektur. Habe es sofort ausprobiert, war aber erfolglos.
> Denke aber, dass es ein I2C Bus Problem sein könnte, benütze keine pull upâ??s.
> Ich werte meine Chipkarte mit einem Reader von Chipdrive typ micro fun aus (bei Conrad gekauft).
> Der Reader erkennt meine I2C Karte problemlos. Habe leider bis jetzt noch keine Daten darauf.
> Hoffe aber, dies bald ändern zu können.
>
> Habe den Code folgendermassen angepasst, sollte so funktionieren.  
>
> //--------------
>   thread main
> //--------------
>
> {
> float TAS, DP, AP, T, R, TASEQN, VSDP, VSAP, VST;
> int TASINT[1800], arrayzaehler, eepromadresse;
>
> arrayzaehler=0;
> eepromadresse=0;
>  
> loop
> {
> VSDP = 0,00488*ports.adc(0);
> VSAP = 0,00488*ports.adc(1);
> VST = 0,00488*ports.adc(2);
> if VSDP > 1
> {
> DP=((5*VSDP)/5)-1;
> AP=((94.4287*VSAP)/5)+14.3532;
> R=5/VST-1;
> T=1000/(math.ln(R)/3.9+1000/298);
> TASEQN=((2*DP)/(AP/(287*T)));
> TAS=math.sqrt(TASEQN)*3.6;
> for arrayzaehler=0...1799;
> {
> TASINT[arrayzaehler]=TAS;
> }
> eeprom.writeintarray(0,eepromadresse,TASINT,1800);
> eepromadresse=eepromadresse+2;
> if arrayzaehler==1799;
> {
> arrayzaehler=0;
> eepromadresse=0;
> quit 63;  geht in Host-Modus über
> }
> sleep 1000;
> }
> }
> }
>
> Nochmals besten Dank für deinen Einsatz !!!
>
> Würde Dir sehr gerne weiterhelfen, benötige dazu aber mehr Erfahrung in der Auswertung von
> Chipkarten.
>
> Gruss Marco
>

Hallo Marco,
darf ich Dir noch ein paar Fehler korrigieren?

Deine Schleife
>for arrayzaehler=0...1799;
> {
> TASINT[arrayzaehler]=TAS;
> }

macht meiner meinung nach keinen Sinn, da Du hier in dem Array ja 1800mal den gleichen Wert
(nämlich TAS) ablegst. Das war doch bestimmt nicht Deine Absicht??
Au�erdem mu�t Du nach "for arrayzaehler=0...1799;" unbedingt das Semikolon löschen. Ansonsten
geht der Compiler davon aus, das hier die Befehlszeile zuende ist und führt den  Befehl danach
in den geschweiften Klammern nur einmal aus.

Das Gleiche betrifft auch Deine nächste If-Schleife. Auch dort in der 1. Zeile das Semikolon weglassen.
Die geschweiften Klammern bedeuten, dass nach der Schleife nicht nur ein Befehl kommt, sondern
mehrere. Sollte nur ein Befehl kommen, kannst Du die Klammern auch ruhig weglassen.
Beispiel:

for arrayzaehler=0...1799  TASINT[arrayzaehler]=TAS;

Du brauchst doch auch eine Schleife, in welcher Du den arrayzaehler immer um 1 erhöhst, ansonsten
wird die abschlie�ende If-Schleife niemals ausgeführt, da Du nie für arrayzaehler den Wert 1799
erreichen wirst.

Ã?berarbeite das Pogramm noch mal. Ich habe leider keine Zeit mehr.

GruÃ?,
wema

P.S. Mit welchem Programm willst Du denn die Dtane aus der Karte auslesen? Hast Du eins beim
Kartenlesegerät dabei gehabt? Kannst Du mir das mal probehalber zur Verfügung stellen?
Ich habe schon einige Software ausprobiert, funktioniert hat keine.

GruÃ?


    Antwort schreiben


Antworten:

Re: Array auf Chipkarte speichern (von Marco - 5.10.2005 21:51)