Problem mit "\n" (Return) bei ser. Kommunikation

MartinFS

Mitglied
Hallo,

wie ich in einem meiner letzten Threads schon mal geschrieben habe, versuche ich gerade ein Programm zu schreiben, um Router über die serielle Schnittstelle anzusprechen.
Das senden von Befehlen (ganz simpel z.B. "enable\n", also enable und return-Signal) und empfangen von Daten funktioniert eigentlich auch problemlos. Nach einer im Router voreingestellten Timeout-Zeit benötigt der Router ein "Return" ("Press "Return" to get startet"), um wieder Befehle anzunehmen (wechselt in den Zustand "Befehlsannahme"). Wenn ich in dem Betriebszustand ein "\n" sende passiert leider nix. Die Verbindung wird problemlos aufgebaut, jedoch wechselt er nicht in den gewünschten Betriebszustand. Ich muss dann erst von Hand auf "Enter" drücken, damit es in den richtigen Zustand wechselt.
Lange Rede, kurze Frage: Gibt es noch einen anderen "Return" Befehl?

Danke.


gruß,
MartinFS
 
moin


Das \n hat den Wert 10.
Ein Return hat den Wert 13.

Drum sende ihm mal ein "(char)13".


mfg
umbrasaxum
 
Hi,

argh.... ich hatte die ASCII Tabelle neben mir liegen, bin aber irgendwie bei LF hängen gebliegen. Nun funktioniert es bestens.
Danke!


Wo wir aber gerade dabei sind... kennst Du zufällig auch das ASCII Zeichen für das "break" Signal?



gruß,
martin
 
Break an sich gibt es nicht, es sei denn, du meinst das uralte ^C. Das sollte 3 entsprechen. Aber das ist jetzt reine Vermutung.

Cancel dürfte da hinkommen, hat den Wert 24.
 
Hallo,

Endurion hat gesagt.:
Break an sich gibt es nicht, es sei denn, du meinst das uralte ^C. Das sollte 3 entsprechen. Aber das ist jetzt reine Vermutung.

Cancel dürfte da hinkommen, hat den Wert 24.
stimmt, gibt es eigentlich nicht. Ist aber bei den meisten Terminalprogrammen als CTRL F5 oder so implementiert.
Ich werde die Werte mal testen.

gruß,
MartinFS
 
moin


Code:
#include <conio.h>
#include <stdio.h>

int main()
{
	char c;

	c = getch();

	printf("%d", c);

	getch();
	return 0;
}
So und nu einfach gucken was Tastenkombinationen ergeben.
Es werden allerdings so nciht alle Tasten "erkannt" z.B. die F-Tasten...


mfg
umbrasaxum
 
hehe... Danke.:)

leicht modifiziert gefällt sie mir besser. ;)

Code:
 #include <conio.h>
#include <stdio.h>
int main()
{
char c;
do {
c = getch();
printf("%d\n", c);
getch();
} while (c != 0x18);
return 0;
}
dann bricht die nicht nach jedem Zeichen ab.


gruß,
Martin


/Edit:

Wo wir gerade dabei sind...
Ich habe einen File stream implementiert, der die empfangegen Daten in eine Datei speichert. MIt "MinGW" (habe ich mal von volkard.de geladen) funktioniert das perfekt, jedoch stürzt der Borland C++ Builder6 immer ab und zeigt auf "fprintf( stream, "%s", InString );"

hier mal die komplette read:

Code:
 int read()
{
char InString[COM_BUFFER_SIZE + 1];
DWORD dwRead = 0;
ReadFile (hCom, &InString, sizeof (InString), &dwRead, NULL);
if (dwRead != 0)
{
	InString[dwRead] = '\0';
	fprintf( stream, "%s", InString );
}
return 0;
}

Ne Idee wodran das liegen könnte?
 
Zuletzt bearbeitet:
Zurück