Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    83

    [JAVA]Porta Parallela + led

    Ciao ragazzi, spero che qualcuno di vuoi sappia aiutarmi a risolvere questo problema, perchè io veramente le ho tentate tutte.
    Il problema è molto semplice nn riesco a capire per quale motivo nn riesco a scirvere sulla porta parallela. Uso le api JCA (javax.comm) su windows XP con sdk/jre 1.4.2.

    Il codice che provo ad eseguire è il seguente:
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.util.Enumeration;

    import javax.comm.*;

    public class Start {
    public Start(){

    }
    public static void main (String[] args){
    CommPortIdentifier idPort;
    try {
    idPort = CommPortIdentifier.getPortIdentifier("LPT1");

    CommPort porta = idPort.open("ScriviSuParallela",10);
    ParallelPort portaParallela = (ParallelPort)porta;

    portaParallela.setMode(ParallelPort.LPT_MODE_SPP);

    System.out.println("scrivo " + portaParallela.isPrinterBusy());
    portaParallela.restart();

    DataOutputStream out = new DataOutputStream(portaParallela.getOutputStream()) ;
    System.out.println("sto per scrivere");
    out.writeByte(170);
    System.out.println("scritto");
    } catch (NoSuchPortException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (PortInUseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (UnsupportedCommOperationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }
    }
    Quello che mi succude è che il programma mi rimane bloccato sul medoto wryteByte, e solo dopo una lunga attesa mi esce un messaggio di errore che indica "Carta esaurita nella stampante".

    Io veramente nn ho capito cosa sia il problema, ho provato anche con altre soluzioni soluzioni: tipo usare le librerie RXTXcomm, oppure altri programmi già fatti, ma io sti led proprio averli accessi nn ci sono state ragioni.

    Altre note tecniche che credo possano essere utili per risolvere il problema:
    1) quando avvio il sistema operativo, durante il caricamente gli 8 led si accendono per un attimo e poi si rispengono, e successivamente mi lampegiano solo i primi 3 led per 3 volte (se nn ricordo male). Dopo di che tutto tace. Io penso che siano i segnali di controllo che invia il sistema operativo alla porta parallela, ma almeno mi fa pensare che il collegamento che ho fatto è corretto
    2) il collegamento è cosi creato, correggietemi se ho sbagliato qualcosa:

    e tutti i rimanenti fili sono sospesi, cioè nn sono collegati a nulla.

    Credo di aver detto tutto, spero che sappiate aiutarmi e chiedo scusa se il post è cosi lungo, ma ho cercato di mettere tutte le informazioni possibili.

    Confido in voi
    Grazie
    Marco

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA]Porta Parallela + led

    Originariamente inviato da Camlr
    Quello che mi succude è che il programma mi rimane bloccato sul medoto wryteByte, e solo dopo una lunga attesa mi esce un messaggio di errore che indica "Carta esaurita nella stampante".

    Io veramente nn ho capito cosa sia il problema, ho provato anche con altre soluzioni soluzioni: tipo usare le librerie RXTXcomm, oppure altri programmi già fatti, ma io sti led proprio averli accessi nn ci sono state ragioni.
    Tralasciamo un momento i modi speciali tipo ECP/EPP e prendiamo in considerazione il modo classico SPP unidirezionale. Esiste un protocollo di handshake ben preciso, che è spiegato ad esempio qui.
    Bene, tu questa gestione del handshake non la gestisci nel "tuo" hardware. Pertanto le cose sono due: premetto che non conosco bene nei dettagli la JCA ma dovresti vedere se è possibile disabilitare la gestione del handshake. Altrimenti devi gestirlo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    83
    Innanzitutto grazie per avermi risposto

    Ho letto la pagina che mi hai postato e ho letto il protocollo di handshake che mi indicavi.
    Ho controllato le JCA e se ho capito bene nn c'è nulla per disabilitare questa trattativa iniziale, almeno cosi credo, correggete se sbaglio.

    Quindi come devo fare, chi mi può aiutarare ad accendere questi led.
    E pure ho controllato tramite il metodo isPrinterBusy (che mi restituisce false e con il tester il voltaggio è basso) il dispositivo nn è occupato, quindi perche nn mi scrive

    Se è sbagliato qualcosa nello schema hardware mi aiutate a costruirlo correttamente?
    Spero nel vostro aiuto

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Camlr
    Innanzitutto grazie per avermi risposto

    Ho letto la pagina che mi hai postato e ho letto il protocollo di handshake che mi indicavi.
    Ho controllato le JCA e se ho capito bene nn c'è nulla per disabilitare questa trattativa iniziale, almeno cosi credo, correggete se sbaglio.

    Quindi come devo fare, chi mi può aiutarare ad accendere questi led.
    E pure ho controllato tramite il metodo isPrinterBusy (che mi restituisce false e con il tester il voltaggio è basso) il dispositivo nn è occupato, quindi perche nn mi scrive

    Se è sbagliato qualcosa nello schema hardware mi aiutate a costruirlo correttamente?
    Spero nel vostro aiuto
    isPrinterSelected() sicuramente ti restituisce false (cioè non selezionato). Puoi comunicare con il device solo se il device è in stato "selected".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    83
    ok grazie per la risposta;
    hai ragione mi isPrinterSelected mi restituisce false.
    Domani mattina porterò una modifica allo schema hardware e ti farrò sapere i risultati

    Per il momento grazie di tutto.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    83
    Niente da fare, anche modificando lo schema hardware nn riesco a risolvere il problema.

    Ora la situazione è questa, ho messo gli otto dati ognuno collegato ad un led e il negativo di ogni led l'ho messo collegato ai fili di massa da 18 a 25 e in più ho collegato a questi fili anche il filo 11( busy) e 12 (empy page).
    Ma nulla da fare la mia applicazione si blocca sempre sulla write.

    Una solo cosa è cambiata rispetto a prima ed è:
    appena attacco la parallela al pc, mi rimangono sempre accesi i primi 3 led che corrisposndono ai fili 2-3-4. Cosa può essere sto fatto che rimangono sempre accessi questi led?

    Chi mi può aiutare?
    A chi potrei domandare?
    Quale documento potete consigliarmi per risolvere questo problema? (lo standard della porta parallela l'ho letto)

    E pure credevo fosse una cosa semplice collegare dei led alla porta parallela, ma invece mi sta facendo scimunire

    Spero in una vostra risposta
    Vi ringrazio anticipatamente nella speranza di risolvere

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Non m'intendo di elettronica. Cmq il codice java che hai scritto credo sia ok, perche' ne ho trovato uno identico in rete e lo dava come funzionante.
    codice:
    CommPortIdentifier idPorta;
    idPorta = CommPortIdentifier.getPortIdentifier("LPT1");
    CommPort porta = idPorta.open("Scrivi su parallela",10);
    ParallelPort portaParallela = (ParallelPort) porta;
    portaParallela.setMode(ParallelPort.LPT_MODE_SPP);
    DataOutputStream out = new DataOutputStream(portaParallela.getOutputStream());
    if(portaParallela.isPaperOut()){System.out.println("paper out");}
    if(portaParallela.isPrinterBusy()){System.out.println("printer busy");}			
    if(portaParallela.isPrinterError()){System.out.println("printer error");}			
    if(portaParallela.isPrinterSelected()){System.out.println("printer selected");}			
    if(portaParallela.isPrinterTimedOut()){System.out.println("printer timed out");}
    out.writeByte(1);
    Possibile che sia un problema di resistenze?
    Ho trovato anche uno schema simile(il primo in foto), ma mette le resistenze prima del led. (Se e' indifferente, mi scuso, ma come ho scritto sopra non mi intendo di elettronica).

    http://www.vincenzov.net/tutorial/spp/applicazioni.htm

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    83
    Grazie simo7784 veramente gentile, ma niente da fare.
    Anche cambiando lo schema come mi hai detto tu e mettere le resistenze prima dei led la write nn si sblocca.
    La write mi rimane bloccata e sempre i primi 3 led accessi fissi.

    Almeno una cosa buona dal tuo schema l'ho capita, ed è che se voglio mettere le resistenze dopo i led mi server pure un generatore di 5v.

    Quindi ho scelto di seguire il primo schema.

    Attendo ansioso altri soccorsi di aiuto, nella speranza di risolvere questo problema e di vedere accessi questi led

    Grazie

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Camlr
    Almeno una cosa buona dal tuo schema l'ho capita, ed è che se voglio mettere le resistenze dopo i led mi server pure un generatore di 5v.
    No, non è importante il punto dove metti la resistenza.
    Tra i due circuiti mostrati da simo7784 c'è una differenza sostanziale. Il pin 25 è il ground. Nel circuito di sinistra il led si accende quando sul pin 2 c'è un livello logico '1' (+5 Volt) perché il pin 2 è sull'anodo del led.
    Nel circuito di destra il catodo del led è sul pin 2 e pertanto il led si accende quando sul pin 2 c'è un livello logico '0' (0 Volt).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.