String über Serielleschnittstelle senden
-
Hallo Leute,
erst mal was ich machen möchte.Ich will mittels Borland C++ Builder ein Programm schreiben, welches Strings über die Serielleschnittstelle ( COM ) am ein Kameracontroller sendet.
Ich weiß "grob" wie so etwas funktioniert ... Schnittstelle einstellen ( Parität, Bausrate, usw. ), Schnittstelle öffnen, Sting senden, Schnittstellen schießen.
Wie ich die Strings passend zusammen setzte ist kein Problem, bloß ich weiß nicht, wie ich die Stings aus dem PC rausbekomme, sprich über die Schnittstelle sende.
Das Senden soll mit allen Windows Versionen funktionieren.
Zur Info:
Ich bin kein BCB Freak, da ich nur 1 Jahr den BCB in der Schule kennen lernte und nutzte. Ich programmiere nur hin und wieder kleine Tools die mir das Arbeiten erleichtern.
Desweiteren habe ich auch die Suchfunktion genutzt, aber leider nichts passendes gefunden, hoffe nicht das ich die "passende Lösung" über sehen habe.Danke
-
Hier gibt es eine fertige Klasse, die du zudem Zweck benutzen kannst:
http://www.codeproject.com/KB/system/serial.aspx
Und selbst, wenn du es selbst machen willst, kannst du durch das Lesen der Seite einiges lernen.
-
Danke mal.
Runterladen kann ich die Klasse nicht, da ich dort nicht angemeldet bin.
Dann nehme ich die Variante lesen ... wird wohl aber ein wenig dauern, bis ich mich durch das Englisch durchgewuselt und es in BCB umgesetzt habe
-
rallyefan238 schrieb:
Runterladen kann ich die Klasse nicht, da ich dort nicht angemeldet bin.
Tja, was könnte da wohl helfen... hm... bin nicht sicher...
-
hallo, vielleicht hilft dir das weiter, ich lese damit daten einer funkuhr über die com-schnittstelle ein, es sind nur die wichtigsten zeilen, zum schreiben nimmst du dann WriteFile und natürlich in CreateFile GENERIC_WRITE.
bool b;
DCB dcb;
char sTime[100];
LPDWORD nRead = 0;
HANDLE hFile,hTemp=NULL;
b = BuildCommDCB("COM1: baud=9600 parity=N data=8 stop=1",&dcb);
hFile = CreateFile("COM1",GENERIC_READ,0,0,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,hTemp);
b = GetCommState(hFile,&dcb);
dcb.BaudRate = CBR_9600;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
dcb.ByteSize = (BYTE)8;
b = SetCommState(hFile,&dcb);
b=ReadFile(hFile,sTime,28,(LPDWORD)&nRead,NULL);
CloseHandle(hFile);viel glück
-
Eine fertige Klasse zu verwenden, ist definitiv die bessere Wahl, da die COM-Schnittstelle nicht trivial ist und einige Fallstricke bereithält. Falls du es doch selbst machen willst, rate ich dir schonmal, dir SetCommTimeouts anzusehen, um Deadlock-Situationen zu vermeiden.
-
Ich habe das Problem gelöst und alles funktioniert prima.
Den Ausschnitt von waldlatscher habe ich an meine Bedürfnisse angepasst und das Ganze in eine schöne Sende Funktion gepacktDanke für eure Hilfe.