Help, ich hab' ein konkretes Problem. Ich will gesammelte Meßdaten über die UART-Schnittstelle aus dem AVR 90S2313 in den PC einlesen und graphisch schön aufbereiten. Die Kommunikation mittels MAX232 und dem HyperTerminal funktioniert (mittlerweile, dank Eigenbau)super. So, nun aber stecken die Daten im Terminal "fest". Daher meine Idee, einfach ein HyperTerminal als primitivst Form selber programmieren und die Daten in ein Array ablegen. Hat jemand damit Erfahrung, mittels C oder C++ die serielle Schnittstelle unter Windows auszulesen???? Oder, kann mir jemand ein Buch etc. empfehlen??? Oder, gibt es eine elegante Möglichkeit die Daten aus dem Hyperterminal weiterzuverarbeiten.... Vielen Dank schon mal im vorraus, bluemole PS: Die abgelegten Daten graphisch aufzubereiten ist mit den GDI-Funktionen von Windows kein Problem mehr.....
Wenn Du in ein paar Minuten zu Ergebnissen kommen willst, dann nimm am besten eine Skriptsprache wie Python. Ansonsten ist zur Kommunikation über den USART zum PC genug hier im Forum geschrieben worden. Benutz einfach mal die Suche. Das sollte genug Treffer auswerfen.
Ich habe sowas mal in Delphi gemacht. Da aber die Windows-Libs von Delphi für die serielle Schnittstelle benutzt werden, sollte das auch in C möglich sein. Suche mal in Deiner Entwicklungsumgebung nach: EscapeCommFunction Kann aber sein, dass dieser Ansatz schon wieder recht veraltet ist, ist schon ne Weile her. Auf der anderen Seite will M$ ja die RS232 eh nicht mehr unterstützen, deswegen gab es da sicher keine großen Neuerungen die letzten 3 Jahre. Viele Grüße, Stefan
Wenn du mir Borland C++ Builder arbeitest, so findest du im Netzt haufenweise fertige Komponenten, die dir die gesamten Schnittstellenfunktionen bereitstellen. Gibt es bestimmt auch für den MS Visual C++. Erspart viel Arbeit und funktioniert zuverlässig. Thorsten
Danke für Eure schnelle Antwort. Ich programmiere eigentlich immer nur unter der Visual C++ Umgebung und dann meistens Konsolenanwendugen. Mir scheint langsam, das der Borland Compiler viel gängiger ist und flexibler. Im c/C++ Kompendiumbuch ist die Rede, dass das mit dem Visual C++ Compiler es gar nicht möglich ist die Com-Schnittstelle auszulesen. Kann ich aber nicht glauben. bluemole PS: Hab' unter help bei Visual C++ noch kein vernüftiges Com- Objekt gefunden... suche weiter.
Also die COM-Schnittstelle kannst du definitiv mit Visual C++ ansprechen, sind alles reine API-Funktionen (FileCreate() etc.). Wie das genau geht, kann ich dir nicht sagen.
Die Online-Hilfe von Visual C++ ist so gewaltig, dass ich bald gar nichts mehr finde... Es steht da zwar allerhand von APIs und COMs etc. drin, aber was ich damit konkret anfangen kann steht da nicht. Ich glaube da hilft nur ein Buchkauf oder ein ausgiebiger Besuch in einer Bibliothek....
Mit VB für Applications soll soetwas gehen, d.h. es wird ein Plug-In für Excel oder so erstellt. VG Marco
schau mal unter www.codeguru.de da gibts ne routine für die Com-Schnittstelle. Die ist recht gut. Gruß Tobi
In C++ wird das ganz einfach mit den Standardfunktionen CreateFile, ReadFile, WriteFile und CloseHandle gemacht. Wie mit Standarddateien auch. Die Parameter setzt man im DCB. Im Übrigen ist Visual C++ der mit grossem Abstand am weitesten verbreitete Compiler in der Windowswelt. Wenn auch sicherlich nicht der Beste, von den MFC ganz zu schweigen...
So eine längere Recherche scheint dem Ende nahe zu sein. Hab' ne super Beschreibung gefunden. Dank Eurer Hilfe, bzw. Tobi's Hinweis mal unter www.codeguru.com zu suchen. Für alle die es interessiert hier der Link... http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnfiles/html/msdn_serial.asp Wenn mein Code funzt wird er gepostet.... Schöne Ostern, Bluemole
hi sorry ich meinte auch die .com adresse. war verpeilt. Sorry das Du deswegen länger suchen musstest... Gruß Tobi
Zervas Also ich programmiere auch mit Visual C++. Natürlich ist es möglich die Serielle Schnittstelle mit VC++ anzusprechen. Am einfachsten ist es wenn du es mit ActiveX machst. Wenn du es mit API Funktionen machen willst kann ich dir nicht helfen aber mit ActiveX (MSCOMM32.ocx) funktioniert es ohne großen Aufwand. Wenn du interesse hast schick mir eine eMail dann kann ich dir genau sagen wie du es am besten machen kannst.
uiii vergiss die activex scheisse schnell wieder... nimm die winapi... 1. schneller 2. flexibler 3. weis man was man tut... CreateFile zum öffnen der schnittstelle SetCommTimeouts ReadFile/WriteFile CloseHandle die 5 API funktionen bruachst du... bei codeproject.com findest du genaueres... eifach nach SetCommTimeouts suchen und dann war das glaubich der letzte artikel oder so... 73 de oe6jwf
@Hans: Ich finde der Mehraufwand ist nicht gerechtfertigt. Mit Active X brauche ich nur einen Bruchteil an Code um die Kommunikation zum laufen zu bringen (senden & empfangen). Besonders wenn man MFC verwendet ist ActiveX eine sehr einfache Möglichkeit um die Kommunikation zu realisieren.
So hallo Zusammen, danke für Euer grosses Interesse an meinem Hyperterminal, es ist so gut wir fertig. Das Senden klappt wunderbar. Allerdings das auslesen bereitet mir noch Schwierigkeiten. ReadFile macht mir also noch Kummer. Einzelne Bytes kann ich auslesen, aber ich will ein ganzen Text auslesen. Hab' schon sämtliche TypeCasts ausprobiert -> Geht nicht.... Habt Ihr eine Idee, wie ich in CSReadText ein die Daten reinbekomme???? Stehen in Test dann drin. Vielleicht brauche ich auch Test gar nicht sondern kann CSReadText gleich übergeben. Allerdings wie????? Merci für Eure Hilfe. BOOL Class_SerialPort::ReadText(CString CSReadText) { LPVOID Test = ""; DWORD dwTransfer=0; if (ReadFile (hComm,Test , 10, &dwTransfer, 0)) { if (dwTransfer == 1) { CSReadText = Test; // ????????????????????? return true; { } return false; }
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.