mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik HyperTerminal selber schreiben


Autor: bluemole (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.....

Autor: Doggy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: bluemole (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: bluemole (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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....

Autor: Marco Haufe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit VB für Applications soll soetwas gehen, d.h. es wird ein Plug-In für
Excel oder so erstellt.
VG Marco

Autor: Tobias A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schau mal unter www.codeguru.de
da gibts ne routine für die Com-Schnittstelle.
Die ist recht gut.

Gruß
  Tobi

Autor: Doggy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: bluemole (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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=...

Wenn mein Code funzt wird er gepostet....

Schöne Ostern,
Bluemole

Autor: Tobias A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi
sorry ich meinte auch die .com adresse.
war verpeilt. Sorry das Du deswegen länger
suchen musstest...

Gruß
  Tobi

Autor: Heiß Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Heiß Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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.

Autor: bluemole (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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;
}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.