mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Terminal anwendung (Com Protokoll...?) in C einbinden


Autor: Marcel Meyer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag freunde der gepflegten Programmiersprache...

ich habe meine anwendung soweit fertiggestellt (messen, regeln etc.) es
werden die verschiedenen ergebnisse über das UART ausgegeben, geht
alles einwandfrei... jedoch muss ich immer hyperterminal starten oder
sowas, sehr blöd...
da habe ich mir nen paar gedanken gemacht und bin zu dem entschluss
gekommen: eine dos anwendung muss her, warum dos? ganz einfach, ich
kann nur C, und das programm muss auf einem alten 3/86er laufen...

Mein problem liegt dadrin: wie binde ich das protokoll (falls ich
überhaupt eins brauche) in meine anwendung ein? stehe da voll auf dem
trockenen und per google finde ich auch nichts was mir so richtig
weiterhilft...

ich würde mich über hilfe in form von beispielen, links oder
suchbegriffen freuen :)

Mfg
Marcel

Autor: Fritz Ganter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DOS wird schwierig sein.

Kannst aber Linux draufspielen, da gehts einfach. Als Beispielcode
kannst meinen Batchelor nehmen, da ist serielle Kommunikation drin:

http://www.gpsdrive.cc/batchelor.shtml

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So Schwierig ist Dos nun auch nicht......
Bei dem Beispiel must du nur noch die HEX-Adresse für deinen Com-Port
ändern und dann sollte es klappen.


//Beispiel für _inp und _outp

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define port 0x378

int main (void)
{
unsigned char reg1, reg2;

do
{
reg1 = _inpw(port);
printf(" der alte wert der PORT-Adresse 0x378 lautet:
%hxHEX\n",reg1);
printf(" bitte geben sie einen neuen wert ein\n");
printf(" 0 fuer abbruch der eingabe\n\n");

fflush(stdin);
scanf("%hx",&reg2);
if (reg2 == 0)
    break;

_outpw (port, reg2);
reg1 = _inpw(port);
printf ("der neue wert der PORT-Adresse 0x378 lautet:
%hxHEX\n\n",reg1);
}while(1);

system("Pause");
return 0;
}

Autor: Marcel Meyer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
irgendwie stehe ich bei deinem code voll auf dem schlauch, bekomme bei
deinem code erstens 15 fehler, und 2. steige ich da nicht so ganz durch
:(

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Der Code funzt
2. Wenn du diese 32 Zeilen nicht durchsteigst, dann ....?
3. Wenn du schon 15 Fehlermeldungen bekommst, dann so doch das nächste
   mal so nett und poste doch mal ein paar.

Autor: Marcel Meyer (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
1. kann sein, die frage ist, womit kompilierst du? (ich benutze
borland...)
2. durch code durchzusteigen, der nicht ein einzigen kommentar enthält
ist nu mal nicht so wircklich einfach...
3. siehe anhang!

Mfg
Marcel

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der scheint das \n als Escape für den <CR> nicht zu mögen und kommt
dann mit den Anführungszeichen (") total durcheinander. Das while zum
do findet er jedenfalls auch nicht ...

Grüße, Sebastian

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich benutze auch nur Borland C in der DOS-Box.

Sieh Dir einfach mal meinen Bootloader in der Codesammlung an, da ist
alles drin: Initialisierung, Senden, Empfang.

Ist zwar ein reines DOS-Programm, funktioniert bei mir aber auch unter
W98 und XP.


Peter

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Du hast das alles in eine CPP-Datei geschrieben
    => unter Cpp muss man manches anders machen als unter C
2. _inpw wird manchmal auch nur inpw geschrieben
3. Zeile 14 hat eine zusätzlichen Zeilenumbruch (welchen durch das
   einfügen in das Forum entstand). Dieser ist zu beseitiegen.
4. _outpw wird wie auch _inpw manchmal outw geschrieben
5. Zeile 25,26 siehe 3.
6. Benutze Dev-Cpp ( http://www.bloodshed.net )

Autor: Marcel Meyer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Peter und Tom!

Werde mir mal peters code in ruhe anschauen,,,

Und der code von tom funktioniert nach den änderungen, sorry hätte ich
auch selbst drauf kommen können :(

Mfg
Marcel

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.