Serielle Schnittstelle

  • Thread starter andreas ruetten
  • Start date
A

andreas ruetten

Guest
Hallo,
da ich für meine diversen "embedded Geräte" hin und wieder mal
Testprogramme
auf dem PC schreiben muß, komme ich leider nicht mehr herum dies auch
für XP/2000 zu tun.
Die Testprogramme sind meistens serieller Art . Bis jetzt habe ich meine
Programme entweder in DOS
oder aber für Windows mit Visual C++ geschrieben . Dabei programmiere
ich in Windows wie unter Dos.
( direktes Ansprechen der Hardware, Konsolenapplikation).
Unter Windows XP oder 2000 / NT klappt das leider nicht mehr, da
Portzugriff eine priveliegierte Ausführung ist .
Da ich weder die Zeit noch das Knoff Hoff habe einen Ring0 KernelTreiber
zu programmieren,
suche ich eine Library für C++ ( auch käuflich) mit einfachen Befehlen
für die serielle Schnittstelle.
Dabei brauche ich nur 3 Befehle ( lese Zeichen , schreibe Zeichen ,
Init serielle ).
Hat jemand irgendeinen Tip ?

Was ich auf keinen Fall brauche oder möchte !!!!!
1. Den totalen Overkill wie "Async Pro" und Konsorten.( viel zu
aufwendig )
2. Coole Port IO freischalter ( Abstürze usw ... )
3. Ring0 Dll wie Kithara IO Accellerator ( muß man jede Menge Murks
installieren )
4. Irgendwas füe Delphi ( werd jetzt nich noch Pascal lernen )


mfg Andreas

http://www.asratec.de
 
andreas ruetten schrieb:
Da ich weder die Zeit noch das Knoff Hoff habe einen Ring0 KernelTreiber
zu programmieren,
suche ich eine Library für C++ ( auch käuflich) mit einfachen Befehlen
für die serielle Schnittstelle.
Dabei brauche ich nur 3 Befehle ( lese Zeichen , schreibe Zeichen ,
Init serielle ).
Hallo,

und warum nimmst Du nicht MSCOMM.ocx? Das gehört zu Visual Basic, ist
aber auch mit Visaul C benutzbar.

Bye
 
Uwe Hercksen schrieb:

andreas ruetten schrieb:
Da ich weder die Zeit noch das Knoff Hoff habe einen Ring0 KernelTreiber
zu programmieren,
suche ich eine Library für C++ ( auch käuflich) mit einfachen Befehlen
für die serielle Schnittstelle.
Dabei brauche ich nur 3 Befehle ( lese Zeichen , schreibe Zeichen ,
Init serielle ).

Hallo,

und warum nimmst Du nicht MSCOMM.ocx? Das gehört zu Visual Basic, ist
aber auch mit Visaul C benutzbar.
Konsolenprogramm und .OCX , das soll gehen,
oder habe ich da etwas falsch in Erinnerung ?


 
Hallo!


Unter Delphi habe ich bis jetzt sehr sehr gute Erfahrungen mit der
ComPort-Library von "Dejan Crnila" gemacht. Soweit ich weiß, gibt es die
neueren Versionen auch für Vis C++. Die Möglichkeiten reichen vom einfachen
send/read bis hin zu fertigen Packet-Komponenten, denen du einen Start- und
End-String mitteilst, die dann nach solchen Paketen lauschen und dir das
fertig empfangene Ergebniss als String übergeben - ist genial einfach.

Grüße
Andreas
 
Hallo Andreas,

Die Testprogramme sind meistens serieller Art . Bis jetzt habe ich meine
Programme entweder in DOS
oder aber für Windows mit Visual C++ geschrieben . Dabei programmiere
ich in Windows wie unter Dos.
( direktes Ansprechen der Hardware, Konsolenapplikation).
Unter Windows XP oder 2000 / NT klappt das leider nicht mehr, da
Portzugriff eine priveliegierte Ausführung ist .
Da ich weder die Zeit noch das Knoff Hoff habe einen Ring0 KernelTreiber
zu programmieren,
suche ich eine Library für C++ ( auch käuflich) mit einfachen Befehlen
für die serielle Schnittstelle.
Dabei brauche ich nur 3 Befehle ( lese Zeichen , schreibe Zeichen ,
Init serielle ).
Hat jemand irgendeinen Tip ?
die Windows-API verwenden - für den Zugriff auf die Serielle
Schnittstelle gibt es da recht komfortable Funktionen (Port öffnen/
schliessen, Schreiben/ Lesen, Handshakeleitungen einzeln setzen,
etc...). Von der DOS-Programmierung und direkten Hardwarezugriffen musst
Du Dich dann allerdings verabschieden. "Konsolenapplikation" hat hier
übrigens nichts zu bedeuten - auf die API kannst Du auch mit Konsole
zugreifen.

Wenn Du mit so neumodischen und überflüssigen Sachen wie der Windows-API
nicht zu tun haben willst, bleiben Dir noch Freeware-Port-Treiber, z.B.
PortIO (wird von mir erfolgreich verwendet)
http://www.driverlinx.com/Software_Products/softwareproducts.htm
oder ZLPORTIO http://www.specosoft.com/

Wenn Du die richtigen Gruppen benutzt, z.B.
de.comp.os.ms-windows.programmer oder microsoft.public.de.vc findest Du
per Google auch massenhaft Hinweise zur Seriellen Schnittstelle - das
ist mit Abstand eines der häufigsten Themen.

Gruß,

Ed

--
E-Mails an Ed_03@t-online werden ungelesen gelöscht.
Für Gültigkeit bitte wenden: ed.cetnat@strebge.e
 
"andreas ruetten" <mail@mitronik.de> schrieb im Newsbeitrag
news:3FFD3A58.9E8576CC@mitronik.de...
Uwe Hercksen schrieb:

andreas ruetten schrieb:
Da ich weder die Zeit noch das Knoff Hoff habe einen Ring0
KernelTreiber
zu programmieren,
suche ich eine Library für C++ ( auch käuflich) mit einfachen Befehlen
für die serielle Schnittstelle.
Dabei brauche ich nur 3 Befehle ( lese Zeichen , schreibe Zeichen ,
Init serielle ).

Hallo,

und warum nimmst Du nicht MSCOMM.ocx? Das gehört zu Visual Basic, ist
aber auch mit Visaul C benutzbar.

Konsolenprogramm und .OCX , das soll gehen,
oder habe ich da etwas falsch in Erinnerung ?
Ein Konsolenprogramm verwendet die Win32 API und kann
somit auch ActiveX (.OCX) verwenden.
Es läuft natürlich nur unter Windows und nicht unter MS-DOS.

Ein Beispiel für ein Konsolenprogramm ist
FTP.EXE, dass mit Windows mitgeliefert wird.

Andreas
 
Edzard Egberts schrieb:

Hallo Andreas,

Die Testprogramme sind meistens serieller Art . Bis jetzt habe ich meine
Programme entweder in DOS
oder aber für Windows mit Visual C++ geschrieben . Dabei programmiere
ich in Windows wie unter Dos.
( direktes Ansprechen der Hardware, Konsolenapplikation).
Unter Windows XP oder 2000 / NT klappt das leider nicht mehr, da
Portzugriff eine priveliegierte Ausführung ist .
Da ich weder die Zeit noch das Knoff Hoff habe einen Ring0 KernelTreiber
zu programmieren,
suche ich eine Library für C++ ( auch käuflich) mit einfachen Befehlen
für die serielle Schnittstelle.
Dabei brauche ich nur 3 Befehle ( lese Zeichen , schreibe Zeichen ,
Init serielle ).
Hat jemand irgendeinen Tip ?

die Windows-API verwenden - für den Zugriff auf die Serielle
Schnittstelle gibt es da recht komfortable Funktionen (Port öffnen/
schliessen, Schreiben/ Lesen, Handshakeleitungen einzeln setzen,
etc...). Von der DOS-Programmierung und direkten Hardwarezugriffen musst
Du Dich dann allerdings verabschieden. "Konsolenapplikation" hat hier
übrigens nichts zu bedeuten - auf die API kannst Du auch mit Konsole
zugreifen.
Ja das habe ich mal heute getan,
und es läuft halb. Das embedded Board sendet 128 Bytes ( Binär )
iim PC kommen aber nur 44 an ??. Beim senden sind auch Binär 255
mit drin, die scheinen gar nicht anzukommen. Ist das irgendeine Break Funktion
?.
Weil Timing kann es bei einem >2Ghz Rechner nun wirklich nicht sein. ( 9600
Baud , kein Hansshake ).


Wenn Du mit so neumodischen und überflüssigen Sachen wie der Windows-API
nicht zu tun haben willst, bleiben Dir noch Freeware-Port-Treiber, z.B.
PortIO (wird von mir erfolgreich verwendet)
http://www.driverlinx.com/Software_Products/softwareproducts.htm
oder ZLPORTIO http://www.specosoft.com/
Genau das wollte ich nicht.

Wenn Du die richtigen Gruppen benutzt, z.B.
de.comp.os.ms-windows.programmer oder microsoft.public.de.vc findest Du
per Google auch massenhaft Hinweise zur Seriellen Schnittstelle - das
ist mit Abstand eines der häufigsten Themen.
Ja aber auf einer vollkommen verquasten Ebene. Da sind nur Formularausfüller
unterwegs.
Ich will nicht hunderte von Formularen , Destruktoren und Hyperthreading und
DDE und OLE
Objekten ausfüllen..............
In dieser Gruppe sind die Leute mehr hardwareorientiert.


Gruß,

Ed

--
E-Mails an Ed_03@t-online werden ungelesen gelöscht.
Für Gültigkeit bitte wenden: ed.cetnat@strebge.e
 
Hallo andreas,

die Windows-API verwenden

Ja das habe ich mal heute getan,
und es läuft halb. Das embedded Board sendet 128 Bytes ( Binär )
iim PC kommen aber nur 44 an ??. Beim senden sind auch Binär 255
mit drin, die scheinen gar nicht anzukommen. Ist das irgendeine Break Funktion
?.
vielleicht der Textmode, die Schnittstelle muss wahrscheinlich auf binär
initialisiert werden:

_DCB COM_Para;
GetCommState(Handle, &COM_Para);
COM_Para.fBinary= true; // binary mode, no EOF check
SetCommState(Handle, &COM_Para);

Ein Blick auf diese ganzen Parameter würde ich Dir empfehlen...

Port-Treiber
Genau das wollte ich nicht.
Für die Serielle ist das auch wirklich etwas schräg, aber wenn man
irgendwelche selbstgebauten Karten aus dem DOS-Modus übernehmen will,
ist das wirklich nützlich und einfach zu verwenden.

die richtigen Gruppen
Da sind nur Formularausfüller unterwegs.
Der Gegenbeweis schreibt Dir gerade...

In dieser Gruppe sind die Leute mehr hardwareorientiert.
Naja, ganz unrecht hast Du auch wieder nicht. ;o)

Gruß,

Ed

--
E-Mails an Ed_03@t-online werden ungelesen gelöscht.
Für Gültigkeit bitte wenden: ed.cetnat@strebge.e
 
Edzard Egberts schrieb:
Hallo Andreas,

Die Testprogramme sind meistens serieller Art . Bis jetzt habe ich meine
Programme entweder in DOS
oder aber für Windows mit Visual C++ geschrieben . Dabei programmiere
ich in Windows wie unter Dos.
( direktes Ansprechen der Hardware, Konsolenapplikation).
Unter Windows XP oder 2000 / NT klappt das leider nicht mehr, da
Portzugriff eine priveliegierte Ausführung ist .
Da ich weder die Zeit noch das Knoff Hoff habe einen Ring0 KernelTreiber
zu programmieren,
suche ich eine Library für C++ ( auch käuflich) mit einfachen Befehlen
für die serielle Schnittstelle.
Dabei brauche ich nur 3 Befehle ( lese Zeichen , schreibe Zeichen ,
Init serielle ).
Hat jemand irgendeinen Tip ?


die Windows-API verwenden - für den Zugriff auf die Serielle
Schnittstelle gibt es da recht komfortable Funktionen (Port öffnen/
schliessen, Schreiben/ Lesen, Handshakeleitungen einzeln setzen,
etc...). Von der DOS-Programmierung und direkten Hardwarezugriffen musst
Du Dich dann allerdings verabschieden. "Konsolenapplikation" hat hier
übrigens nichts zu bedeuten - auf die API kannst Du auch mit Konsole
zugreifen.

Hallo,
ich denke mit der Windows API kann man schon zurechtkommen...
ich habe für ein Projekt an der Uni auch mal mit VisualC++ unter
Windows2000 mit der seriellen SChnittstelle zu tun gehabt.
Such mal in der MSDN den Artikel "Serial Communications in Win32",
hoffe der heißt auch wirklich exakt so...
Damit bin ich damals recht zügig zum Ziel gekommen, hat dann auch
funktioniert. Zu MSComm.ocx rate ich Dir nicht, gab bei mir Probleme,
bin bis heute nicht darauf gekommen warum ?!?

MfG Sebastian
 
Sebastian Röhrer schrieb:

funktioniert. Zu MSComm.ocx rate ich Dir nicht, gab bei mir Probleme,
bin bis heute nicht darauf gekommen warum ?!?
Hallo,

MSComm.ocx hat bei mir in mehreren Projekten problemlos funktioniert,
zwar unter VB statt VC, aber ich glaube nicht das es an MSComm.ocx
selbst lag.
Allerdings gibt es bei den höheren Baudraten über 38400 Einschränkungen,
da bietet MSComm.ocx nur noch 56000 ; 128000 und 256000.

Bye
 
andreas ruetten wrote:
[...]
Hat jemand irgendeinen Tip ?

die Windows-API verwenden - für den Zugriff auf die Serielle
Schnittstelle gibt es da recht komfortable Funktionen (Port öffnen/
schliessen, Schreiben/ Lesen, Handshakeleitungen einzeln setzen,
etc...). Von der DOS-Programmierung und direkten Hardwarezugriffen
musst Du Dich dann allerdings verabschieden. "Konsolenapplikation"
hat hier übrigens nichts zu bedeuten - auf die API kannst Du auch
mit Konsole zugreifen.
http://www.codeguru.com/network/CSerialPort.html

Gruß

Klaus

--
Die email Adresse (reply-to) im header ist ungueltig.
Fuer mail "pub . kp2 . pieper @ ibeq . com" benutzen.
(Leerzeichen loeschen).

Reply-to invalid.
Use "pub . kp2 . pieper @ ibeq . com" (remove spaces).
 
andreas ruetten <mail@mitronik.de> schrieb:

[...]

oder aber für Windows mit Visual C++ geschrieben . Dabei programmiere
ich in Windows wie unter Dos.
( direktes Ansprechen der Hardware, Konsolenapplikation).
Seriell-Hardware würde ich nicht direkt ansprechen, Konsole ist gut.

Unter Windows XP oder 2000 / NT klappt das leider nicht mehr, da
Portzugriff eine priveliegierte Ausführung ist .
Da ich weder die Zeit noch das Knoff Hoff habe einen Ring0 KernelTreiber
zu programmieren,
brauchst Du nicht, sooo schlecht/schlimm ist die Win32 API auch wieder
nicht.

suche ich eine Library für C++ ( auch käuflich) mit einfachen Befehlen
für die serielle Schnittstelle.
Dabei brauche ich nur 3 Befehle ( lese Zeichen , schreibe Zeichen ,
Init serielle ).
Hat jemand irgendeinen Tip ?
wenn es so wenig ist: Win32 API selbst bedienen. Oder RSAPI.DLL
verwenden.

Unter http://wiki.oliverbetz.de/owiki.php/WindowsCommPort findest Du
ein paar Infos dazu.

Servus

Oliver
--
Oliver Betz, Muenchen
 

Welcome to EDABoard.com

Sponsor

Back
Top