Mit CSerial ein EEPROM auslesen
-
Wenn ich raten müsste würde ich sagen er will Daten die in einer Textdatei sind von einem Rechner zum anderen schicken, und zwar über RS232, mit einem selbst geschriebenen Programm.
-
Sorry, wenn ich mich unklar ausgedrückt habe.
Ich will im Endeffekt Daten aus einem EEPROM auslesen. Dachte nur das es besser ist vorher anders zu testen. Hier kommt die *.txt Datei ins Spiel. Eine txt-Datei auf dem Zweiten Rechner deren Inhalt ich mit einem selbstgeschriebenen Programm auf Rechner1 auslese und anzeige. Das ganze soll über die Serielle Schnittstelle passieren.
Ich kann das so besser testen, weil die Hardware (EEPROM Platine mit RS232 Schnittstelle) noch nicht fertig ist. Später wollte ich dann einfach die Quelle von "txt-Datei" --> "EEPROM-Adresse" ändern und hoffen das es genauso läuft.
-
McFanatic schrieb:
Eine txt-Datei auf dem Zweiten Rechner deren Inhalt ich mit einem selbstgeschriebenen Programm auf Rechner1 auslese und anzeige. Das ganze soll über die Serielle Schnittstelle passieren.
Ist dir klar, dass du dazu ein weiteres Programm schreiben muss, das die Gegenstelle auf dem zweiten Rechner implementiert? Von allein geht das nicht.
Später wollte ich dann einfach die Quelle von "txt-Datei" --> "EEPROM-Adresse" ändern und hoffen das es genauso läuft.
Das ist keine Frage der Hoffnung. Wenn du das so machen willst, musst du die oben erwähnte Gegenstelle so schreiben, dass sie genau so reagiert wie das EEPROM. Das ist durchaus ein mögliches Testkonzept, ich befürchte nur, dass du den Aufwand massiv unterschätzt.
-
Das befürchte ich jetzt allerdings auch. Ich bin was das VC++ programmieren abgeht kein Profi und würde mich auch nur als angehender Fortgeschrittener bezeichnenen.
Das mit der Gegenstelle auf dem zweiten Rechner hab ich verstanden. Ist nur doof, das die Hardware (EEPROM Platine) kein VC++ versteht, daher würd ich jetzt sagen das die Testmethode nicht sonderlich geeignet ist, für mein eigentliches Ziel.
Gut, dann wäre es sicherlich einfacher das so zu programmieren und ich muss druck machen, das die Platine fertig wird.
Könnt ihr mir denn ein Ansatz geben, wie ich an das Problem ran gehe? Muss das Programm für die Gegenstelle definitiv existieren, oder kann ich die Daten irgendwie von meiner MFC Anwendung auslesen. Falls nicht, muss ich mir ernsthafte Gedanken machen, wie ich das in ANSI C für meine µC Platine programmieren soll.
Wollte meine ANSI Code für die µC Platine eigentlich nicht groß ändern, sondern alles von meiner MFC Platine aus steuern.
Für Tips zur Rangehenweise bin ich immer dankbar
-
Wollte nur bescheid sagen, das ich falsch an da Problem rangegangen bin und nun zu einer funktionierenden Lösung gekommen bin. Falls jemand ein ähnliches Proglem hat.
Die ReadData Funktion der Klasse CSerial ließt ja die Daten die über die serielle Schnittstelle gesendet werden aus.
Ich sollte nicht versuchen die Daten aus dem EEPROM auszulesen, sondern dem µC sagen, das er die Datenbytes über die Schnittstelle senden soll. Dann muss ich nur noch die Daten per ReadData auslesen und fertig
Die Sendefunktion für den µC ist sind in ANSI C vielleicht 10 Codezeilen.Ich schicke dem µC also eine bestimmte ID, die in meinen Daten nie vorkommen wird, z.b. "#" und daraufhin sendet der µC die Daten raus. Meine Windows Applikation empfängt die Daten einfach und alle sind happy.
Trotzdem Danke für Tipps
-
Wie? Du hattest etwa das EPROM nicht *direkt* auf deinem seriellen Port draufgesteckt?
-
Versteh jetzt deine Frage nicht ganz.
Ich habe eine Platine wo unter anderem ein µC Atmel AT90CAN128 drauf ist. Der besitzt neben seinem Flash Speicher ein EEPROM, welches ich mit der Windows Applikation auslesen möchte. Auf der Platine ist natürlich auch eine RS232 Schnittstelle mittels IC´s und Stecker implementiert sodass ich mit dem µC kommunizieren kann.
In meinem Quellcode für den µC habe ich ebenfalls die eine Funktion geschrieben, die die serielle Schnittstelle initialisiert. Ich habe dann Funktionen wie "PutData()" und "GetData()" geschrieben, die die Daten über die RS232 sendet oder eben welche empfängt.
Nun verschicke ich mit meiner Windows Applikaton eine ID (#) und empfange diese (mit GetData()) auf µC Seite. Daraufhin geht meine Windows Applikation in den Empfangsmodus und der µC sendet (per PutData()) den Inhalt des EEPROM raus.
So die Theorie. Testen konnte ich das noch nicht direkt, weil die Platine noch nicht da ist. Sie soll nächste Woche kommen, dann schnell bestücken und programm testen.
Falls ihr noch Probleme an meiner Vorgegensweise seht, lasst es mich bitte wissen.
Vielen Dank
-
/close
-
Hallo Mcfanatic!
Läuft eigentlich alles bzw. hat alles so funktioniert?
Möchte bald so ein ähnliches projekt machen, kannst du mir noch ein paar infos zu deinem projekt geben?
danke
mfg
mitos
-
Hallo,
ja soweit bin ich zufrieden. Ich kann meine Daten wunderbar empfangen und senden senden. Der Filter funktioniert auch, aber nur im Release-Modus, was ok für mich ist. Warum der Debug Modus stellenweise spinnt kann ich nicht sagen. Er scheint auch ein kleines Problem mit der CSerial zu haben. Mein Tip nachdem ich 3 Tage nach Fehlern gesucht habe:
- Wenn man nicht mehr weiter weiss, erstmal im ReleaseModus versuchen
Was genau willst du denn genau machen?
Gruss
-
Hallo!
Also ich möchte folgendes machen:
- Mehrere Sensoren (temp, druck...) auslesen
- Motoren, Leds ansteuernAlles über COM.
Ich weiß allerdings noch nicht wirklich wie ich das verwirklichen könnte. Dachte an Microcontroller (ATmega48)... Hast du auch einen verwendet? Wie genau hast du das senden/empfangen angestellt? Welche CSerial hast du verwendet? Hast du einfach mit Read() die Daten empfangen?
Oder wie funktioniert dein "teil" im Prinzip?
PS: könnt ich dich eventuell per mail anschreiben?
vielen dank,
mfg
mitos
-
hi, also ich hab den AT90CAN128 von Atmel verwendet.
hab dazu Sende- und Lesetreiber von den µC geschrieben. Auf VC++ Seite habe ich die Klasse CSerial von www.codeproject.com . Die habe ich einfach eingebunden und verwendet.
Kannst mir gerne auch ne email schreiben.
info @ mcfanatic . de
(ohne leerzeichen, is klar
)achso, vergessen: Suche mal nach "Filter in der Edit Box" in diesem Forum. Da habe ich die Readfunktion auf VC++ Ebene reingestellt.
Prinzip der Übertragung: Ich habe einen Button der die Datenübertragung startet. Dann bleibt das Fenster 4 sekunden lang offen (belibig wählbar). innerhalb dieser Zeit müssen die Daten vom µC gesendet werden. Wenn alle Daten da sind, schließt er das sofort wieder ab, du musst also nich immer 4 sekunden warten. Anzeigen tu ich die werte in einem read-only edit fenster.
-
ok, vielen dank!
Werd dir ne email schreiben!
mfg
danke
mitos