Forum: PC Hard- und Software Serielle Schnittstellen COM1 und COM2 unter XP direkt nutzbar?


von Tim (Gast)


Lesenswert?

Hallo,

ich möchte gerne Daten zwischen einem AVR und dem PC austauschen. 
Dazwischen sitzt ein MAX232 zur Pegelanpassung.

PC-Seitig soll das Programm Quickbasic verwendet werden.

Frage: kann der Datenaustausch ohne weitere Einstellungen ungehindert 
stattfinden, oder blockieren die Sicherheitseinstellungen von XP die 
COM-Ports?

(auf den LPT kann von Quickbasic/XP aus z.B. ohne weitere Maßnahmen 
nicht zugegriffen werden)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die seriellen Schnittstellen lassen sich unter XP selbstverständlich 
nutzen, wenn die vom Betriebssystem seit zwei Jahrzehnten dafür 
vorgesehenen Mechanismen verwendet werden - sprich, der Zugriff über die 
Win32-API erfolgt.

Direktes Port-I/O-Gefrickel funktioniert nicht. Quickbasic ist ein 
DOS-Programm, das kann keine Betriebssystemfunktionen aufrufen, sondern 
nutzt wie in steinalten DOS-Zeiten direktes Port-I/O-Gefrickel.

Das lässt sich zwar beim Parallelport mit Frickeleien à la giveio.sys 
irgendwie hinbiegen, aber bei seriellen Schnittstellen, die 
interruptgesteuert arbeiten, ist das prinzipiell nicht möglich.

Also wirst Du eine zeitgemäßere Alternative zum völlig veralteten 
DOS-Basic verwenden müssen.

Sieh Dir mal FreeBasic an
http://www.freebasic.net/

Damit sind Zugriffe auf die Win32-API möglich, und damit auch der 
saubere Zugriff auf serielle Schnittstellen - übrigens auch auf 
"virtuelle" serielle Schnittstellen wie die von USB-RS232-Adaptern zur 
Verfügung gestellten.

Das ist einer der Vorzüge der Verwendung von Betriebssystemfunktionen 
statt des direkten I/O-Port-Gefrickels. Allerdings sollte man die 
serielle Schnitttelle dann auch als serielle Schnittstelle nutzen, und 
nicht für Pingewackel ("Bitbanging").

Ein anderer Vorzug ist der, daß Du dann endlich auch mit Dateinamen 
anstelle der 8.3-Kürzel aus DOS-Zeiten arbeiten kannst.

von Peter II (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Direktes Port-I/O-Gefrickel funktioniert nicht. Quickbasic ist ein
> DOS-Programm, das kann keine Betriebssystemfunktionen aufrufen, sondern
> nutzt wie in steinalten DOS-Zeiten direktes Port-I/O-Gefrickel.

selbst DOS müsste auch COM1 und COM9 zugreifen können. Dafür eine Datei 
mit dem namen "COM1" öffnen.

die Frage ist nur welche Schnittstellen Parameter dann verwendet werden.

von Wolfgang (Gast)


Lesenswert?

Peter II schrieb:
> die Frage ist nur welche Schnittstellen Parameter dann verwendet werden.

Na, doch wohl hoffentlich die in den Anschlußeinstellungen gesetzten 
Werte.

von Tim (Gast)


Lesenswert?

Danke für die schnellen Antworten!

Wie sähe es denn mit C aus, kann man da unter Win gut auf den COM-Port 
zugreifen?
(kenne C nur vom µC, aber bevor ich jetzt komplett neu in Freebasic 
einsteige, ist das vielleicht sinnvoller)

von Frank K. (fchk)


Lesenswert?

Tim schrieb:
> Danke für die schnellen Antworten!
>
> Wie sähe es denn mit C aus, kann man da unter Win gut auf den COM-Port
> zugreifen?

Es ist egal, mit welcher Programmiersprache Du den Win32 Gerätetreiber 
für eine serielle Schnittstelle ansteuerst - das Verfahren ist immer 
gleich. Du wirst den Gerätetreiber und das Betriebssystem benutzen (ob 
DU willst oder nicht), weil keine Applikation unter NT-basierten 
Betriebssystemen (dazu zählen auch W2k, XP, Vista, 7, 8) direkt auf die 
Hardware zugreifen kann. Und das ist auch gut so.

fchk

von Peter D. (peda)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Direktes Port-I/O-Gefrickel funktioniert nicht.

Doch das funktioniert noch unter XP 32Bit.
Es geht sogar, wenn die COM über USB erfolgt, man muß nur dem Adapter 
eine COM1..4 zuweisen.
Erst bei W7 geht es nicht mehr.

von Tim (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Doch das funktioniert noch unter XP 32Bit.

Das wäre ja super - würde mir eine Menge Aufwand sparen!


Peter Dannegger schrieb:
> Es geht sogar, wenn die COM über USB erfolgt, man muß nur dem Adapter
> eine COM1..4 zuweisen.

Nach meinen Infos kann Quickbasic selber nur COM1 und 2 (ganz unabhängig 
davon, was beim Betriebssystem geht).

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Peter Dannegger schrieb:
> Doch das funktioniert noch unter XP 32Bit.

Du beschreibst hier was anderes, das ist nicht direktes Port-I/O mit 
"giveio.sys" & Co., sondern das ist der eher sehr wackelig 
funktionierende NTVDM-Hardwarevirtualisierer für DOS-Programme. Mit 
manchen DOS-Programmen funktioniert er so halbprächtig, mit anderen eher 
schlecht, was davon abhängt, wie ungeschickt sich die "Programmierer" 
dabei angestellt haben, die 8250 anzusprechen.

Der Weg sollte nicht beschritten werden, das ist tote Technik. Da es mit 
FreeBasic eine zu QuickBasic kompatible Lösung gibt, sehe ich auch 
keinen Grund dafür.

Und eine deutschsprachige Dokumentation gibts dafür auch:
http://www.freebasic-portal.de/befehlsreferenz/open-com-235.html

Hier ein Beispiel, um herausfinden, welche Schnittstellen es gibt:
http://www.freebasic-portal.de/code-beispiele/system/serielle-schnittstellen-com-ports-unter-windows-ermitteln-248.html

von Reinhard Kern (Gast)


Lesenswert?

Tim schrieb:
>> Doch das funktioniert noch unter XP 32Bit.
>
> Das wäre ja super - würde mir eine Menge Aufwand sparen!

Aber nur, wenn du nicht weiter als bis nächstes Jahr planst.

Gruss Reinhard

von Matthias L. (limbachnet)


Lesenswert?

Wieso? Explodieren Rechner mit alten Betriebssystemen wie bei Cobra11, 
wenn Microsoft den Support einstellt? Wäre mir neu.

Im betrieblichen Umfeld muss man natürlich auf 
Ersatzbeschaffungsmöglichkeiten achten, kann daher keine alte Hardware 
einsetzen (es sei denn, man kauft sie palettenweise) und muss wegen des 
Treibersupports dann auch einigermaßen aktuelle OS betreiben. Aber 
privat kann man auf einem älteren Rechner auch noch Windows98SE locker 
einsetzen, warum denn nicht? Man muss mit dem Alt-Rechner ja nicht 
unbedingt im Internet herumpirschen und nach ebenso alten Viren 
suchen...

von Marcus P. (marc2100)


Lesenswert?

Um mal auf das eigendliche Problem zurückzukommen, wenn du auch mit c 
leben kannst, schau dir das mal an: http://www.teuniz.net/RS-232/
Hatte ich selbst schon im Einsatz, und sollte für deine Zwecke 
funktionieren.

von fdrmz (Gast)


Lesenswert?

Hallo...
habe auch das Problem des direkten Zugiffes auf die Schnittstellen für 
eine elektonische Steuerung unter XP gehabt und gelöst.
Mit freebasic kann man sowohl auf LPT1 (Paralleschnittstelle) als auch 
auf die seriellen Schnittstellen (z.B COM1, RS232) direkt mit dem 
inp-Befehl und dem out-Befehl zugegriffen.
Erfolgen die Befehle allerdings unmittelbar nachdem man XP hochgefahren 
hat, funktioniert der Zugriff auf die seriellen Schnittstellen COM1 und 
COM 2 nicht. Man erhält bei inp immer den Wert dez255 bzw. hexFF. und 
out funktioniert auch nicht.
ABER!!!!
wenn man den Rechner nach dem Hochfahren dann in der Standby-Modus fährt 
und dann wieder startet ist alles OK.
Da das Problem des direkten Zugriffs auf die serielle Schnittstelle 
unter XP häufiger auftaucht funktioniert das mit dem "Standby" vlt. ja 
auch bei den anderen Programmiersprachen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.