serial port (com port) senden und empfangen
-
v0id schrieb:
while (i != 50 ) { printf("%c", daten[i++]); }
vielleicht so?
while (i < iBytesReceived) { printf("%c", daten[i++]); }
-
Hallo @all, ich bin neu hier!
unsigned char ucMsg = 0x24; // zu sendendes Zeichen (1)
1. Was bedeutet 0x24 ?
2. Kann ich hier auch normalen Text senden? Wie?
-
Dieser Thread wurde von Moderator/in c.rackwitz aus dem Forum ANSI C in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Für serielle Kommunikation Rate ich zu fertigen Klasse, da es sich zwar trivial anhört, es aber nicht so ist...
http://www.codeproject.com/system/serial.asp
-
coolzero0001 schrieb:
Hallo @all, ich bin neu hier!
unsigned char ucMsg = 0x24; // zu sendendes Zeichen (1)
1. Was bedeutet 0x24 ?
2. Kann ich hier auch normalen Text senden? Wie?es ist " $ " zeichen, was gesendet wird
-
@m@ster, merzy!
Ich wollte mit dem "HyperTerm" das Zeichen einlesen, das geht nicht, da immer nur ein Prog. auf den Port zugreifen kann.
Oder gibt es doch eine möglichkeit dieses ("$") gesendete Bit zu empfangen?
-
das empfangen funktioniert doch über ReadFile() oder missverstehe ich Dich gerade?
Ich bekomm leider nur immernoch nicht den gesammten Datensatz, nur ab einer unbestimmten stelle Leerzeichen im Array
-
v0id schrieb:
Ich bekomm leider nur immernoch nicht den gesammten Datensatz, nur ab einer unbestimmten stelle Leerzeichen im Array
versuch's mit so einer funktion:
int COMM_Read (HANDLE hcomm) { DWORD commerr; COMSTAT comstat; DWORD bytes_read; BYTE the_byte; // sind daten da? ClearCommError (hcomm, &commerr, &comstat); if (comstat.cbInQue == 0) return -1; // noch nichts im buffer // mindestens 1 byte im buffer -> abholen ReadFile (hcomm, &the_byte, 1, &bytes_read, NULL); return (int)the_byte; }
die gibt entweder einen wert (das zeichen) zurück oder -1 wenn nichts empfangen wurde.
verwenden kannste die funktion dann so:
BYTE buffer[50]; int idx; ... // 50 bytes einlesen idx = 0; while (idx < 50) { int result = COMM_Read(hcomm); // das hcomm kommt von CreateFile if (result != -1) buffer[idx++] = (BYTE)result; } ...
btw: damit das ohne verzögerungen läuft, sollteste mit SetCommTimeouts() alles auf 0 setzen.
-
Den ganzen Thread hier könnten wir uns sparen, wenn man fertige Klassen verwenden würde...
http://www.codeproject.com/system/serial.asp
-
Jochen Kalmbach schrieb:
Den ganzen Thread hier könnten wir uns sparen, wenn man fertige Klassen verwenden würde...
der op hatte ursprünglich ins ansi-c forum geschrieben. ich gehe davon aus, dass er 'C' ohne ++ verwendet.
-
jap so schauts aus, die seite hatte ich auch bereits gefunden!
Aber Danke Dir @net und den restlichen Anderen natürlich auch, hat mir gut weitergeholfen.
hab zwar meine schleife noch nciht ganz sauber, quick&dirty halt aber viel mehr zeit dafür hab ich leider auch nicht.