Ingegneria Informatica Polimi (P-Z)

Uso della stampante in C

« Older   Newer »
  Share  
*peppe
view post Posted on 13/1/2007, 18:26




Qualcuno sa per caso come si fa a reindirizzare l'output verso una stampante in C?
So che esiste la funzione freopen per redirigere gli stream standard, ma non so come si usa.

FILE *freopen(const char *filename, const char *mode, FILE *stream);

Il problema è capire quale file va aperto per usare la stampante. :unsure:

 
Top
_inventore_
view post Posted on 14/1/2007, 13:05




In teoria il modo che funziona sempre x stampare è accedere ai driver della stampante, così si possono inviare testo, immagini... Però è difficile e non so come si fa.

Conosco uno qui del corso di informatica po-z che invece è riuscito a stampare semplicemente con

FILE *stampante;
stampante=fopen("/dev/parport0","w");
if (stampante==NULL) { printf("Errore\n"); return 0; }; //Errore
fprintf(stampante,"Ciao!\n");
fclose(stampante);

Tieni presente che lui ha usato Linux e una stampante con porta parallela.
Se usi Windows prova "fopen("\\\\.\\LPT1","w");
Se usi una stampante con porta USB mi sa ke nn c'è speranza,ci voglono i driver.

Considera inoltre che ci potrebbe essere un buffer, prova con fflush oppure se proprio non funziona scrivi tanti ma proprio tanti caratteri finkè non parte la stampante.


P.S. fammi sapere se qst consiglio è servito a qualcosa!
 
Top
>giuan<
view post Posted on 14/1/2007, 13:34




su windows è complicato, bisogna accedere ai driver del os

mentre su linux la stampante è visto come un semplice file, quindi basta fare una normale scrittura sul file per stampare.
 
Top
_inventore_
view post Posted on 14/1/2007, 15:15




Mi sa che ha ragione >giuan<, in Windows 2000 e XP c'è l'HAL (Hardware abstraction layer) che impedisce di accedere direttamente all'hardware.
In windows Millennium e precedenti non c'è niente, infatti avevo attaccato 8 led alla porta parallela e riuscivo ad accenderli dal dos (!) con 1 programmino in Pascal.
Ma mi sa che nn serve + a niente xkè Win Millennium nn ce l'ha + nessuno tranne me.
In teoria esiste 1 driver x XP che si chiama giveio.sys che dovrebbe sistemare le cose, ma nn so cm scrivere 1 programma in C che acceda a 1 driver.

Tra l'altro mi sn ricordato ke in Linux la parallela è di default assegnata solo all'utente root, quindi bisognerebbe aprire 1 terminale e digitare qls dl tipo

su root
(digitare password)
chmod ugo+rw /dev/parport0
exit

prima di poter usare il programmino in C.
Ripeto comunque ke nn ho mai provato ad accedere alla stampante, quindi nn sono sicuro di niente.

Ultima cosa, ma nn si potrebbe rendere pubbliche qst discussioni, così se qlk1 vuole sapere cm accedere alla stampante dal C digita su Google "Stampante C" e tra i risultati gli viene fuori il link dl nostro forum, sarebbe 1 buona idea x guadagnare posizioni rispetto al 2700° posto in cui siamo!!!!!!!!!!
 
Top
>giuan<
view post Posted on 14/1/2007, 16:27




pensandoci è probabile che sia come in java, servono librerie specifiche di windows per accedere alle chiamate del sistema
 
Top
.·´¯`·-Imby-·´¯`·.
view post Posted on 14/1/2007, 16:30




CITAZIONE
Ultima cosa, ma nn si potrebbe rendere pubbliche qst discussioni, così se qlk1 vuole sapere cm accedere alla stampante dal C digita su Google "Stampante C" e tra i risultati gli viene fuori il link dl nostro forum, sarebbe 1 buona idea x guadagnare posizioni rispetto al 2700° posto in cui siamo!!!!!!!!!!

non so, perchè mi sembra ke le visite dei non registrati a forumfree non vengano contate...
 
Top
_inventore_
view post Posted on 14/1/2007, 16:37




Strano, io pensavo che la classifica si basasse solo sulle viste esterne, qualcosa del tipo se un forum è tanto interessante da attirare l'attenzione anke di gente non del forum, allora merita di salire in classifica... cmq è probabile che mi sbagli, nn è ke me ne intendo molto di forum... :wacko:
P.S. come si fa ad aggiungere 1 immagine in 1 mex, che mi sa che le immagini ke ho inviato nella sezione countdown le si vedono solo dal mio computer?
 
Top
.·´¯`·-Imby-·´¯`·.
view post Posted on 14/1/2007, 16:50




le puoi allegare quando rispondi a un mex.. prima però devi uploadarle con ImageShack
 
Top
_inventore_
view post Posted on 14/1/2007, 16:56




Cos'è ImageShack?
(Ehi, hai notato che qst thread da Come accedere alla stampante in C è diventato Come aggungere 1 immagine a 1 mex?!?)
 
Top
.·´¯`·-Imby-·´¯`·.
view post Posted on 14/1/2007, 17:22




si, siamo fuori tema... cmq, anziche fare "Sggiungi la Risposta" clicca su "Rispondi"... ti appare un'altra facciata dove, oltre a rispondere al mex, puoi allegare le immagini
 
Top
*peppe
view post Posted on 14/1/2007, 19:03




grazie _inventore_
avevi ragione, funziona sul sistema windows xp però con stampante a porta parallela. :woot:
Dove hai trovato queste cose?
E' una soluzione geniale per i programmi indirizzati ad utenti. Il problema sarà però per coloro che usano una porta usb.
Se qualcuno sa qualcosa si accettano suggerimenti.

 
Top
_inventore_
view post Posted on 14/1/2007, 20:19




Ciao *peppe, ho provato anch'io!
In cantina ho trovato un vecchio cavo parallelo e lo ho collegato alla stampante, staccando la USB con la quale di solito è collegata, e funziona xfettamente, anke se sul mio modello di stampante il foglio si ferma alla fine del testo (e rimane incastrato dentro e bisogna premere 1 tasto sulla stampante x farlo uscire).

Dunque qst sistema non funziona solo con la USB...
Maledetta USB, è nata x rendere la vita + senplice agli utenti ma ha finito solo x rendere la vita + difficile ai programmatori!
 
Top
*peppe
view post Posted on 14/1/2007, 20:51




Si blocca perchè usa il sistema simile alle vecchie stampanti ad aghi.
Lo fa anche la mia.
Bisognerebbe vedere cosa accade se arriva a stampare fino alla fine della pagina.
Passerà al foglio successivo o si impallerà??? :wacko:
Poù tardi proverò a fare la prova
 
Top
_inventore_
view post Posted on 14/1/2007, 20:57




CITAZIONE
Passerà al foglio successivo o si impallerà???

Secondo me non si impallerà, ma passerà regolarmente al prossimo foglio.
Dovrebbe esserci un qualke carattere speciale, tipo quelli che iniziano per \
(\n , \0 ...) per far capire alla stampante che deve buttar fuori il foglio... anke se nn so quale...

Comunque *peppe, che ne dici di descriverti nell'apposita sezione, che è tt il giorno ke parlo cn te, ma nn so neanke ki 6?
 
Top
*peppe
view post Posted on 14/1/2007, 22:46




Non si impalla infatti, va bene.
Per fare uscire il foglio forse si usa il codice speciale \f che serve per avanzare di pagina.
Però ancora non ho provato.
 
Top
47 replies since 13/1/2007, 18:26   475 views
  Share