Newsgroup: it.comp.os.linux.development
Titolo: Utilizzo di ioperm...

Salve... c'è per caso una qualche buonanima che mi spiega come diavolo 
funziona ioperm?
La documentazione (MAN) su tale comando non è un granché (oppure sono 
stupido e non la capisco).
Mi basterebbe sapere come si deve "configurare" per poter leggere e scrivere 
con inb e outb dalla porta parallela.
Grazie,
  Luca

 scrivere con inb e outb dalla porta parallela.
Potresti usare il modulo parport. E' abbastanza potente e ti permette di
fare quasi quello che vuoi senza sporcarti troppo le mani.
-- 
HappyCactus - Linux User #209744 - LFS User #6046 - >>> SMSPM1050 <<<
              YAGF Member Group >>> 
www.google.com
 <<<
Ci sono 10 categorie di persone al mondo: quelle che capiscono
il sistema binario e quelle che non lo capiscono.

   Luca
Niente, ciao
posso chiederti che ci devi fare? :)))
-- 
Powered by *Debian GNU/Linux 3.0*

 posso chiederti che ci devi fare? :)))
Grazie ancora.
Bé... io vengo da ambiente Windows e (con Delphi) ho sviluppato e realizzato 
in hardware alcuni progettini (solitamente progettini per l'università, 
l'ultimo che ho fatto è un ECG "casalingo" i cui dati vengono appunto letti 
da parallela). Volevo solo imparare come farlo anche in ambiente Linux (con 
Kylix) per eventuali futuri progettini visto che si tratta di un OS free e 
quindi utilizzabile senza dover pagare licenze a zio Billy e balle varie.
Ciao,
  Luca

 fare quasi quello che vuoi senza sporcarti troppo le mani.
Modulo parport? Dove lo trovo? Necessita il C++?
Ciao,
  Luca 

 scrivere con inb e outb dalla porta parallela.
http://www.tldp.org/HOWTO/mini/IO-Port-Programming.html
http://www.torque.net/linux-pp.html
Alessandro.

   Luca
Ciao :)


Luca T. ha scritto:

l'indirizzo della parallela di solito e' 0x378, se vuoi leggere 8 bytes 
devi fare
if (ioperm(0x378,8,1)) {
  /* errore */
  perror("Errore in ioperm(): ");
  exit(1); /* o quello che devi fare */
} else /* nessun errore */
  inb(0x378);
-- 
#include <stdio.h>/* (C) BW2K+2 This code is released under GPL 2+ */
int main(){char c[]={98,108,97,99,107,119,111,108,102,64,100,101,115,112,
97,109,109,101,100,46,99,111,109,32,119,101,98,46,116,105,115,99,97,108,
105,46,105,116,47,98,108,97,107,119,111,108,102,0};printf("%s\n",c);}

   inb(0x378);
No, aspetta...
cosa intendi "se vuoi leggere 8 bytes"... pensavo quell'8 si riferisse al 
numero di indirizzi successivi al 0x378 a cui "concedere l'accesso"...
Ciao,
   Luca

 savagnoluchiocciolatiscalipuntoit
Bé, non è che ho realizzato tantissimi hardware, anzi... comunque il mondo 
dell'informatica applicato alla robotica (o comunque periferiche esterne) è 
piuttosto vasto e interessante.
A questo proposito ho una mezza intenzione di buttarmi in un progetto 
piuttosto grosso e forse un po' fuori dalla mia portata (ma se non provo 
non lo saprò mai).
Comunque... hmmm... io ho cominciato che avevo... spetta... non suggerire... 
16 o 17 anni (forse meno... bo...) e ho costruito una macchinetta per fare 
il cappuccino controllata dal mio PC... oddio... non proprio... a meno che 
tu non consideri il caffelatte sbattuto su tutte le pareti della mia stanza 
un "cappuccino"... ma comunque era una gran-figata per me.
Tutto era nato da un amico che non credeva che i computer potessero fare i 
cappuccini... insomma... la sfida era lanciata ;o)
Vederlo muovere e rispondere ai comandi impartiti via software era una delle 
cose più belle che avessi mai visto. Era realizzato in legno (compensato), 
un paio di motorini, un alimentatore da 4 soldi, la fida "porta parallela" 
e il buon vecchio Turbo Pascal della Borland.
Poi, ho realizzato un tester per integrati TTL. Avevo realizzato un software 
che grazie ad uno script da me inventato (ne serviva uno per ogni chip TTL 
da testare) era in grado di controllare se un integrato TTL rispondeva 
correttamente agli input. Questo come progetto del 5° anno nella mia scuola 
superiore.
Poi... vabbé... un sensore di temperatura che acquisiva i dati dalla 
parallela per visualizzarli su un grafico in Windows 98 e 2k.
E l'ultimo progetto è stato appunto l'ECG.
Ora mi sto attrezzando e studiando per questo nuovo progetto che, se 
funziona, sarà il progetto hw/sw più grosso di tutti quelli fatti fino ad 
ora messi assieme. Il progetto richiederà vari chip, in particolare almeno 
un 5 microcontrollori che parleranno fra di loro con un bus I2C, una scheda 
madre, probabilmente Linux come sistema operativo del "robot" [ecco perché 
mi interessa ioperm ;) ], un alimentatore in grado di alimentare la scheda 
madre partendo da una batteria d'automobile, una scheda di rete wireless 
per ricevere i comandi, una videocamera wireless (già realizzata) e varie 
altre cose... la sola idea di dover mettere tutto assieme mi spaventa... e 
anche il costo che dovrebbe aggirarsi ad oltre 1000 euro. Ma siccome 
diluirò il tutto in un paio di anni di progetto, test e realizzazione 
probabilmente non sarà così doloroso.
Poi... che faccia o meno il lavoro per cui è progettato non mi interessa... 
voglio solo sapere quanto in là posso spingermi ;)
Come vedi comunque i progetti sono una marea... unico requisito (a parte 
saper programmare) è conoscere un po' di elettronica digitale (e 
naturlamente avere tempo da buttare).
Ciao,
  Luca

 
http://www.torque.net/linux-pp.html
Grazie... 
nel primo che hai detto ho trovato un riferimento a "The Linux Kernel 
Hacker's Guide" che però è un link morto.
Ho provato a cercare un po' con google ma tutti i link che ho trovato 
sembrano essere deceduti (solitamente puntano a qualche cartella del sito 
di RedHat). Hai per caso un link a tale guida funzionante? Se no non ti 
preoccupare, prima o poi lo scovo.
Ciao,
  Luca

 Modulo parport? Dove lo trovo? Necessita il C++?
[happycactus@wiseowl happycactus]$ grep PARPORT /usr/src/linux/.config
CONFIG_PARPORT=m
E' un modulo del kernel, lo puoi gestire attraverso i device
/dev/parport$n, major 99, minor $n


 cuore sottoforma di grafico... mai visto ER? ;)
ah ho capito, ne ha fatto uno un mio amico, e' stata la sua tesi di
laurea in Fisica. Funziona molto bene, e' controllabile da remoto e si
interfaccia alla USB

Ciao e grazie dei consigli/suggerimenti


 l'accesso"...
be', logico che poi devi leggere 8 porte, da 0x378 a 0x3ff. 
piccolo esempio:
#include <stdio.h>
#include <sys/io.h>
#define SIZE 8
#define PORT 0x378
int main () {
  char buff[SIZE];  
  int i;
  if (ioperm(PORT,SIZE,1)) {       /* errore */
    perror("Errore in ioperm() ");
    exit(1);                       /* o quello che devi fare */
  } else {                         /* nessun errore */
    for(i = 0; i < SIZE; ++i){
      buff[i] = inb(i + PORT);
      printf("0x%08x\n",buff[i]);
    }
  }
  return 0;


Ciao Luca,
di dove sei? se abiti vicino a me saro' tutti i giorni a casa tua...
hehehe... anche io vado matto per la robotica, anche se non ho mai fatto
nulla... :/ ...
Ciao ciao
Marko
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 nulla... :/ ...
Friuli.
Ciao,
  Luca