Serielle Schnittstelle Visual C++ 6.0

M

MCBSP

Hi

hab zwar durch die Suche Funktion etwas zum Thema Serielle Schnittstelle gefunden, hab aber mein Programm nicht zum laufen bekommen.

Deshalb wollte ich nochmals nachfragen,ob mir jemand weiterhelfen kann. Ich würde gerne Daten über die Serielle Schnittstelle einlesen und auslesen.
Entwiclungsumgebung: Visual C++ 6.0
Windows XP

Wer kann mir ein Beispiel schicken das funktioniert oder eine gute Homepage empfehlen auf der man Infos zum Thema bekommt.
 

derforumregsuckt

Grünschnabel
oha

Ich will dich ja nicht entmutigen, aber scheinbar ist etwas so triviales
wie serielle Kommunikation in C++ nicht vorgesehen.

Ich suche schon länger nach einer einfachen Möglichkeit ein simples "A" über
einen Com Port, seriell zu senden. Wobei der Char im Grunde keine Rolle spielt.
Könnt auch ein X sein :) Das Signal triggert nur ein Relais. In VB is das ne Lacher, aber in C++ irgendwie ein Riesenauftrag. Ich hätt Krankenpfleger werden solln...hehe

Naja, viel Glück beim Suchen..


cheers

Mac
 

Kachelator

Peter Jerz
http://www.programmersheaven.com/zone3/cat411/
http://www.codeproject.com/system/cserialport.asp
http://www.codeguru.com/Cpp/I-N/network/serialcommunications/article.php/c2503/
http://www.topshareware.com/Virtual-Serial-Port-ActiveX-Control-transfer-7715.htm
http://www.codeproject.com/system/listports.asp

Hier ist schon so oft nach Programmierung der seriellen Schnittstelle gefragt worden, und irgendwie scheint da keiner was drüber zu wissen. Das soll vorkommen - ich weiss auch nichts darüber. Deshalb habe ich mich mal hingesetzt, um ein paar Informationen zu sammeln und habe ein Viertelstündchen gegoogelt. Das da oben sind nur ein paar von den Links zu kostenlosen Lösungen zu dem Thema, die ich gefunden habe. Meine Suchbegriffe waren übrigens "serial programming c++" bzw. "serial port c++".

Naja, viel Glück beim Suchen..
Dieser hilfreiche Kommentar hat mich ungemein angespornt.

Ist es so schwer, Google zu benutzen? Oder liegt es am Englisch?

Sorry, aber ich bin etwas genervt.
 
Zuletzt bearbeitet:

derforumregsuckt

Grünschnabel
Danke schön

hmmm...

Vielen dank für deine Mühe. Die Links habe ich tatsächlich nicht gefunden.

Allerdings - wenn man ein Forum betreibt, oder eins besucht, sollte man damit
rechnen mit newbie fragen konfrontiert zu werden. Oder einfach mal mit nem Frust
post. Deshalb finde ich deinen Sarkasmus irgendwie etwas herablassend.

Es werden nicht alle Menschen mit bits&bytes im Blut geboren, und es soll auch
welche geben die nicht der grosse Experte im Umgang mit Suchmaschinen sind
und daher Hilfe in Foren wie diesem suchen.

Egal, nochmals vielen Dank für deine Hilfe :)

cheers

--- Mac ---

btw...ich habe zwei Jahre in England gelebt und vier in Südostasien mein Englisch ist ausgezeichnet.
Ok, mein Chinesisch ist schlecht, aber das hätte auch nicht geholfen, glaube ich.
 

Kachelator

Peter Jerz
Allerdings - wenn man ein Forum betreibt, oder eins besucht, sollte man damit
rechnen mit newbie fragen konfrontiert zu werden. Oder einfach mal mit nem Frust
post. Deshalb finde ich deinen Sarkasmus irgendwie etwas herablassend
Ich betreibe diese Forum nicht, auch wenn ich ziemlich aktiv bin. Und als sarkastisch habe ich meinen Post auch nicht empfunden *). Dass es Newbies gitb, die (teilweise dumm wirkende) Fragen haben, ist mir klar und das ist auch in Ordnung - sonst würde ich mir wohl kaum die Mühe machen, auf möglichst alle Fragen einzugehen. Ich finde es nur manchmal störend, dass sich manche Leute nicht einmal die Mühe machen, zu suchen.

Übrigens fand ich gerade deinen ersten Post eher entmutigend, sonst hätte ich mich garnicht um das Thema bemüht. Serielle Schnittstellen haben nämlich ansonsten eigentlich recht wenig mit meiner Arbeit zu tun.

-----
*) "Dieser hilfreiche Kommentar" war schon sarkastisch, das gebe ich zu.
 
Zuletzt bearbeitet:

Milchbilch

Grünschnabel
links zu Serielle Kommunikation

Hallo,

ich stehe vor dem selben Problem wie "Grünschnabel" damals.

Habe kaum C++ Erfahrung, aber schon viel in Delphi und sehr viel in LabVIEW programmiert und möchte nun was neues probieren: Über den Seriellen Port in C++ mit Geräten (z.B. 'nem Multimeter) kommunizieren.

Hab mich dann sofort daran gemacht, die links vom "Kachelator" zu nutzen.

Mein Problem nun:
Ich gehe nach Anleitung der jeweiligen Autoren vor, bekomme aber die Programme nicht zum laufen. (Ausser "listports")

So kommt mein MS Visual C++ 6.0 z.B. nicht mit dem Ausdruck "BOOL" klar, was ja auch logisch ist, denn es will ja ein "bool" haben. Das allein liefert mir bis zu 30 Fehlermeldungen beim Compilieren. Offensichtlich wurde der Source Code nicht mit MS VC++ geschrieben. oder? (Borland?) Wären dadurch diese Fehler zu erklären?

Die "BOOL"s durch "bool"s zu ersetzen wär ja nun nicht das Problem, hab ich ja auch gemacht, aber damit ist es nicht getan. Es gibt noch weitere Verständnisprobleme, so kennt mein Compiler den Bezeicher "HANDLE" nicht, auch nicht in klein und da gibt es viele mehr und ich stoße nun an meine Grenzen.

Hat jemand einen Tip oder *.zip für mich, der mir weiterhelfen könnte?
Speziell: Nutzt jemand MS VisC++ und dort die Serielle Kommunikation? Wie?

Besten Dank schonmal im voraus,
Stefan
 

Dudadida

Erfahrenes Mitglied
Delphi ist ein gutes Stichwort. Was doch auch mal ganz nett ist, ist etwas Sprachenübergreifendes zu machen. Schreib doch dann einfach eine Delphi-Dll und arbeite damit in C++.
Mal ganz davon abgesehen, dass es sicher möglich ist, direkt in C++ eine serielle Schnittstelle zu programmieren (auch wenn ich selbst keine Ahnung davon habe :rolleyes: ), geht es sicher noch über Assembler und irgendwelche Interruptaufrufe oder outp (was auch immer), den man ja unmittelbar in C++ verwenden kann.

Zu deinen Problemen, Milchbiss, bool ist ein eigener Datentyp, BOOL hingegen ist als int (oder so, jedenfalls ein Ganzzahltyp) in irgendeiner Header deklariert. Ist halt so nicht 100% kompatibel. Ähnliches gilt für HANDLE. Das Ding sollte in der windows.h auf jeden Fall deklariert sein, ansonsten ist das aber auch nur eine 32bit Variable, also ein (unsigned) int, kannst du dir also zur Not selbst noch als Definition drüberklatschen.
 

Endurion

Erfahrenes Mitglied
Äh, habe ich etwas falsch verstanden, oder warum sagen alle, dass es so kompliziert ist?

Einfach mit CreateFile die Datei "COM1" öffnen und man kann mit ReadFile/WriteFile rumorgeln.

Man sollte natürlich vorher mit SetCommState die Parameter wie z.Bsp. Baudrate setzen.

Es gibt seit 95/NT eine ganze Latte von Befehlen dafür.

In der MSDN der Titel "Communications Functions".
 

cFuchs

Mitglied
CSerial Klasse

Hallo,

anbei eine kleine Klasse, die mit der seriellen Schnittstelle kommuniziert.
Funktioniert tadellos, getestet mit Visual C++ 6.0 unter Windows XP.


CSerial serial;
CString strText;
strText = "Hallo";

char *szMessage = (LPTSTR) (LPCSTR) sText;
char* lpBuffer = new char[50];
int bytesRead;

serial.SendData(szMessage, strlen(szMessage));

bytesRead = serial.ReadData(lpBuffer, 50);


Für Fragen stehe ich gerne zur Verfügung.
 

Anhänge

  • serial.zip
    1,8 KB · Aufrufe: 3.819