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


von Marcel Meyer (Gast)


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

von Fritz Ganter (Gast)


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

von Tom (Gast)


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;
}

von Marcel Meyer (Gast)


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
:(

von Tom (Gast)


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.

von Marcel Meyer (Gast)


Angehängte Dateien:

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

von Sebastian (Gast)


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

von Peter D. (peda)


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

von Tom (Gast)


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 )

von Marcel Meyer (Gast)


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

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
Noch kein Account? Hier anmelden.