XP verweigert direkten Speicherzugriff auf COM1 ??



  • Ich habe eine kleine Assemblerroutine geschrieben, die direkt auf COM1 zugreift und dort DTR und RTS verändert. Bei Win 95/98 klappt das prima. Nur Windows XP läßt dies nicht zu. Wie kann man das umgehen, damit man doch direkt reinschreiben kann? Kann leider die Schnittstelle nicht öffnen, da diese von einem anderen Programm benutzt wird. Danke für euere Hilfe. Anbei Assemblerroutine.
    __asm
    {
    push ax
    push dx
    mov ax, 0x01
    mov dx, 0x03FC ; Set DTR
    out dx, ax
    pop dx
    pop ax
    }



  • Es gibt unter Windows ein Schutzkonzept, d.h. dass nicht jedes Programm auf den gesamten Speicher oder die Ports zugreifen darf. Diese Zugriffe sind nur dem Betriebssystem erlaubt!

    Normalerweise gibt es unter C/C++ Funktionen, die den Portzugriff erledigen(inp(), outp()), ansonsten müsste die Win-API Funktionen zur Verfügung stellen.

    Ciao...



  • Danke Dir für Deine Erklärung. Das habe ich bisher schon gewußt. Ich bin Neuling im Umgang mit C++. Wie kann ich die Hürde überwinden, damit ich doch direkt auf die Speicherzelle schreiben kann ? oder wie setze ich das Win-API ein für COM1?



  • da fragst du mal lieber im mfc - forum, bzw du schaust da mal durch. da haben schon einige gefragt. oder du schaust in dem forum vorbei die die entwicklungsumgebung deines vertrauens behandelt ( vc / bcb )

    es gibt jede menge entsprechender komponenten, die dir die arbeit in einerhochsprache enorm erleichtern.

    gruss termite



  • Hallo,

    es gibt unter win2k und xp schon die Möglichkeit Portadressen
    direkt anzusprechen. 😉
    Man benötigt aber einen speziellen Treiber dazu und spezielle
    Funktionen. Die Frage ist halt, ob man bei der seriellen Schnittstelle
    auf eine direkte Registerprogrammierung gehen sollte.
    Man muss die Baudrate etc dann auch direkt konfikurieren.

    Cu
    Manitu 🕶



  • Verwende die Win-API Funktionen

    CreateFile()
    

    zum Öffnen der Schnittstelle und

    EscapeCommFunction()
    

    zur Behandlung von DTR und RTS


Anmelden zum Antworten