|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Sep 2004
Messaggi: 2
|
Win XP & assembler
Ciao a tutti
Ciao Questo è il mio primo post su questo forum. Circa tre mesi fa creai un programmino (con il Borland C++ Builder 3) per inviare dei file di testo tramite la porta seriale del pc. Il prog (dopo un certo periodo di sviluppo) funzionava correttamente, poi a seguito all'aquisto di un nuovo pc, sono passato da win98se a winXP pro. E qui mi sono accorto che il mio prog non andava più, o meglio una parte di esso e cioè quella che restava in "ascolto" dello stato della porta seriale appunto. La funzione che avevo creato, tramite una routine in assembly, leggeva direttamente i bit in memoria. Eccone una versione semplificata : Codice:
WORD Ind = 0x03FE; // CommStatusAddress comm1 BYTE stato; do { // Interrogazione InputStatusRegister asm { mov dx, Ind In ax, dx Mov stato, al } // Pronto Per La ricezione ??? } while( ! (stato & 0x10) && ! Stop_Trasmissione); di COM1. Dunque, mentre questa routine funzionava correttamente in Win98se ![]() la stessa non piace affatto a WinXP pro ![]() Qualcuno può, per favore, aiutarmi a renderla digeribile a win XP ? Grazie per l'attenzione. ![]()
__________________
Ciao. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
da windows 2000 non è piu possibile eseguire istruzioni di i/o dirette tramite istruzioni assembly in un programma. sarebbe troppo facile distruggere il sistema per un virus. quindi devi riscrivere quella parte che rimane in ascolto passando per il sistema operativo.
ciao ![]() |
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Sep 2004
Messaggi: 2
|
Si temevo una cosa del genere...
Sai quale api devo usare ? Con "GetCommState( )" non ci sono riuscito... ![]() Mi servirebbe qualche dritta in BCBuilder o anche in visual C. Grazie VICIUS.
__________________
Ciao. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:02.