PDA

View Full Version : [C] Gestire le porte


Harlus
31-07-2007, 17:34
Ciao a tutti, volevo sapere se utilizzando il C è possibile gestire singolarmente i pin della porta parallela e della COM1 (quella con 9 pin). Ad esempio, mettiamo che un particolare cavo colleghi (dico dei numeri a caso) il pin 4 della LPT1 del PC A al pin 3 della COM1 del PC B. E' possibile per esempio far sì che il pc A invii un file specificatamente dal pin 4 della sua lpt1 e che il pc B riceva i dati dal suo pin 3 e li salvi in un file? Ho il brutto presentimento che se è possibile fare una cosa del genere serva l'assembly...:mc:

71104
31-07-2007, 23:54
al contrario, in assembly non si può :D
o meglio, non si può più: siamo nell'era del tramonto della modalità protetta a 32 bit e del passaggio alle architetture a 64 bit, i programmi user mode non possono più accedere direttamente all'hardware da una vita ormai.

ciò che chiedi è fattibilissimo ma il problema è che lo standard del C non lo prevede perché è uno standard indipendente dalla macchina, è uno standard che non ha a che fare con le specificità dell'hardware e quindi non conosce l'esistenza delle porte COM ed LPT; si tratta di un pregio che permette al linguaggio C di essere utilizzato anche su architetture che non hanno le porte COM ed LPT. :D

di conseguenza la maniera di maneggiare le porte COM ed LPT varia da una piattaforma all'altra. la domanda chiave è: devi lavorare su Windows o su Linux? io posso consigliarti per Windows. su Windows si tratta di utilizzare alcune funzioni API Win32; questi link ti saranno utili:
http://msdn2.microsoft.com/en-us/library/aa363858.aspx
http://msdn2.microsoft.com/en-us/library/aa363196.aspx

se ti servono informazioni più dettagliate per Windows di' pure.

recoil
02-08-2007, 10:19
il problema non è tanto il C o l'assembly, ma come interfacciarsi con le due porte.
io ho provato a scrivere (in linux) sia un driver per la porta seriale che uno per la parallela e non ho messo una sola riga di assembly

non puoi usare i pin della seriale a caso. ci sono quelli per il controllo di flusso e quelli per i dati. tu tra l'altro non ti interfacci con la porta seriale ma con l'UART che ti permette di lavorare a byte e non a bit. è anche vero che lavorando sui registri del UART puoi gestire i pin del controllo di flusso.

tieni presente che quando lavori su una porta seriale usando il sistema operativo (presumo anche in win) stai aprendo un file sul quale leggi e scrivi byte, tutto senza aver bisogno dell'assembly.

quello che non so (bisognerebbe leggere attentamente le specifiche della RS232 e della parallela) è come fare a connettere quelle due porte con un cavo. è senz'altro possibile dato che esistono dei convertitori parallela<->seriale bisogna solo capire come