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)
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.
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.
Peter II schrieb: > die Frage ist nur welche Schnittstellen Parameter dann verwendet werden. Na, doch wohl hoffentlich die in den Anschlußeinstellungen gesetzten Werte.
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)
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
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.
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).
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
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
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...
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.