Visualizzazione risultati 1 fino 17 di 17

Discussione: Programmatore

  1. #1
    Guest

    Unhappy Programmatore

    Ciao a tutti! Cerco persona che puo realizzarmi un programma per linux che piloti la porta parallela chi è interessato risponda e gli spiego cosa deve fare...

  2. #2
    Guest

    Predefinito

    Ehm...credo che non troverai molto così ...dovresti dare qualche cosa (magari €uro) in cambio! :P

  3. #3
    L'avatar di darkwolf
    darkwolf non è connesso Super Moderatore
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,552

    Predefinito

    Io la parallela la comando con qualunque OS quando lancio una stampa o nel caso in cui sia necessario riprogrammare la flash del router.
    Se non spieghi cosa devi fare sarà difficile aiutarti.
    » Salvatore Noschese - L'AltroWeb | Seguimi su: facebook | twitter | Google+
    # Che aspetti? Unisciti alla community! Tanti nuovi gruppi ti aspettano


  4. #4
    Guest

    Predefinito

    ecco qua come dovrebbe essere:

    -allora pin 2 alto e pin 3 alto = tasto di direzione (su) premuto, lo lascio e tornano tutti e due a zero;

    -pin 2 alto e pin 3 basso = tasto di direzione a (sinistra) premuto , lo lascio e tornano tutti e due a zero;

    -pin 2 basso e pin 3 alto = tasto di direzione a (destra) premuto, lo lascio e tornano tutti e due a zero;




    -pin 4 alto fin quando tengo premuto (5), lo lascio e torna a zero;
    -pin 5 alto fin quando tengo premuto (2), lo lascio e torna a zero;
    -pin 6 alto fin quando tengo premuto (8), lo lascio e torna a zero;
    -pin 7 alto fin quando tengo premuto (4), lo lascio e torna a zero;
    -pin 8 alto fin quando tengo premuto (6), lo lascio e torna a zero;
    poi sim posso pure pagare magari con una ricarica in altercent....
    Ultima modifica di step92 : 06-04-2009 alle ore 18.11.48 Motivo: risposta a sim

  5. #5
    eeepc901 non è connesso Utente giovane
    Data registrazione
    21-12-2008
    Messaggi
    38

    Predefinito

    Penso che su Linux ti basti scrivere sul device /dev/lp0 (per la prima porta parallela), essendo questa la filosofia delle periferiche mappate su filesystem.
    Ti basta un programma che apre un file con qul nome, dopo di che mandi i byte alla porta parallela scrivendo dierttamente su file.

  6. #6
    Guest

    Unhappy

    Scusa sono nuovo a linux potresti spiegarmi meglio cos' è il deviace e come si usa?...Grazie...Ma visto che si deve scrivere in un file non si puo usare il php?
    Ultima modifica di step92 : 06-04-2009 alle ore 22.00.17

  7. #7
    eeepc901 non è connesso Utente giovane
    Data registrazione
    21-12-2008
    Messaggi
    38

    Predefinito

    In unix, tutto viene ridotto ad essere maneggiato come file.
    Ad esempio, se /tmp/pippo.txt è un file di testo, /dev/floppy è il lettore floppy, /dev/cdrom è il lettore cdrom, /proc/2514 è il processo in esecuzione con id 2514.
    Praticamente, sia i dispositivi fisici (devices) quali floppy, cdrom, ecc, che i stessi processi in esecuzione (tra cui anche ancune variabili stesse che governano il kernel) sono mappati in automatico nel file system, cosi è possibile usare le normali operazioni su file per operazioni su dispositivi o processi.

    Puoi usare qualunque linguaggio di porgrammazione che supporti la scrittura/lettura di file (questo semplifica enormemente la programmazione delle perifiriche, perchè se sono supportate da kernel, basta accedervi come se fossero dei file).


    Tieni presente che non tutte le funzioni su file sono supportate sui dispositivi (infatti sono classificati in alcune categorie). Ad esempio la scrittura su una posizione "random" (con una seek) in un dispositivo quale un nastro magnetico, probabilmente non andrebbe a buon file, essendo il nastro un dispositivo sequenziale per sua natura.
    Ovviamente dipende da come è implementato nel kernel il dispositivo.

  8. #8
    Guest

    Predefinito

    Grazie sei stato chiarissimo ora potresti spiegarmi un po di pratica?Per esempio come abilito la scrittura come scriverci?Scusa l'ignoranza ma di linux so proprio 0!

  9. #9
    eeepc901 non è connesso Utente giovane
    Data registrazione
    21-12-2008
    Messaggi
    38

    Predefinito

    In C++, basterebbe questo codice per scrivere CIAO sulla parallela (no l'ho testato, ma dal punto di vista teorico basta questo):

    Codice:
    #include <iostream>
    #include <fstream>
    using namespace std;
    
    int main () {
      ofstream myfile;
      myfile.open ("/dev/lp0");
      myfile << "CIAO";
      myfile.close();
      return 0;
    }
    nota: ovviamente dipende da come si comporta il dispositivo collegato alla parallela nell'interpretare la stringa CIAO passata. Una stampante ad aghi dovrebbe stampare CIAO, altri dispositivi avvrebbero altri comportamenti

    usando uno script bash, il precedente codice diverrebbe:

    Codice:
    #!/bin/sh
    echo CIAO > /dev/lp0

  10. #10
    Guest

    Predefinito

    Ma con i bash si puo fare un interfaccia...Che mi rilevi i tasti che premo ed a secondo dei tasti mi attiva un bit della parallela?

  11. #11
    eeepc901 non è connesso Utente giovane
    Data registrazione
    21-12-2008
    Messaggi
    38

    Predefinito

    A scuola (15 anni fa) mi dicevano che con i bash si può fare tutto (hanno fatto persino dei database) :)

    In questo caso vanno però usate delle librerie grafiche.
    Presumo che le librerie TCL/TK siano quelle più popolari (le ho usate in Perl), e che possano essere utilizzate anche con bash.
    Ricordo che c'erano anche le Ncurses che sono librerie grafiche per interfaccie a caratteri.

    Ma che linguaggi di programmazione conosci?
    Se conosci il Java ti risolvi ogni problema: utilizzi Swing per le interfaccie grafiche e ti appoggi alle librerie di sistema per pilotare la porta parallela (il tutto indipendentemente dal sistema operativo)

  12. #12
    Guest

    Predefinito

    Non conosco nessun linguaggio di programmazione...Mi sto documentando con il bash e vedo che si ci puo fare di tutto...Mi potresti dare una mano?

  13. #13
    eeepc901 non è connesso Utente giovane
    Data registrazione
    21-12-2008
    Messaggi
    38

    Predefinito

    Prova a buttar giù qualcosa, nel caso chiedi pure

  14. #14
    Guest

    Predefinito

    Non saprei da dove iniziare! Comuque grazie molte per il tuo interessamento...Ho trovato questo http://www.vincenzov.net/tutorial/spp/indirizzi.htm che spiega come attivare un bit della parallela su linux...Mi potresti dare una mano per attivare i bit secondo i casi da me elecati sopra usando la tastiera? Proprio nessuno sa aiutarm?
    Ultima modifica di step92 : 08-04-2009 alle ore 20.50.24

  15. #15
    eeepc901 non è connesso Utente giovane
    Data registrazione
    21-12-2008
    Messaggi
    38

    Predefinito

    Se trovo il tempo per stasera provo a buttar giù un pezzo di codice in c++ che effettui il core del programma (cioè senza parti grafiche)


    Ecco qua. Uso ncuses e l'io a basso livello a livello di porta (invece che con /dev/lp0 ad alto livello). Viene rilevata la pressione di un solo tasto alla volta:

    Codice:
    // use ncurses i/o
    #include <curses.h> 
    #include <stdio.h>
    #include <unistd.h>
    #include <sys/io.h>
    
    // /dev/lp0
    #define BASEPORT 0x3bc 
    
    // /dev/lp1
    //#define BASEPORT 0x378
    
    // /dev/lp2
    //#define BASEPORT 0x278
    
    
    // send the value to parallel port
    void send(int value) {
      outb (value, BASEPORT);
    }
    
    int main ( void )
    {
      /* Get access to the ports */
      if (ioperm(BASEPORT, 3, 1)) {perror("ioperm"); return(1);}
    
    
      initscr();
      noecho();
    
      keypad ( stdscr, TRUE );
    
      while ( 1 )
      {
        switch ( getch() )
        {
        case KEY_UP:
          send(0x6);
          break;
        case KEY_LEFT:
          send(0x2);
          break;
        case KEY_RIGHT:
          send(0x4);
          break;
        case '5':
          send(0x8);
          break;
        case '2':
          send(0x10);
          break;
        case '8':
          send(0x20);
          break;
        case '4':
          send(0x40);
          break;
        case '6':
          send(0x80);
          break;
        default:
          send(0x00); 
        }
        refresh();
      }
      endwin();
    
      return 0;
    }
    Ultima modifica di eeepc901 : 12-04-2009 alle ore 16.19.56 Motivo: aggiunto codice

  16. #16
    Guest

    Predefinito

    Ciao eeepc grazie per la disposizione...Aggiungo che ora i tasti sono cambiati ora te li scrivo:
    tasto w 10100000
    tasto s 01010000
    tasto d 10010000
    tasto a 01100000
    tasto 6 00000100
    tasto 4 00001000
    tasto 5 00000010
    tasto 0 00000001
    i tasti devono tornare a zero quando li lascio...Grazie
    Ultima modifica di step92 : 12-04-2009 alle ore 21.09.54

  17. #17
    eeepc901 non è connesso Utente giovane
    Data registrazione
    21-12-2008
    Messaggi
    38

    Predefinito

    Basta una piccola modifica:

    Codice:
    // use ncurses i/o
    #include <curses.h> 
    #include <stdio.h>
    #include <unistd.h>
    #include <sys/io.h>
    
    // /dev/lp0
    #define BASEPORT 0x3bc 
    
    // /dev/lp1
    //#define BASEPORT 0x378
    
    // /dev/lp2
    //#define BASEPORT 0x278
    
    
    // send the value to parallel port
    void send(int value) {
      outb (value, BASEPORT);
    }
    
    int main ( void )
    {
      /* Get access to the ports */
      if (ioperm(BASEPORT, 3, 1)) {perror("ioperm"); return(1);}
    
    
      initscr();
      noecho();
    
      keypad ( stdscr, TRUE );
    
      while ( 1 )
      {
        switch ( getch() )
        {
        case 'w':
          send(0xa0);
          break;
        case 's':
          send(0x50);
          break;
        case 'd':
          send(0x90);
          break;
        case 'a':
          send(0x60);
          break;
        case '6':
          send(0x04);
          break;
        case '4':
          send(0x08);
          break;
        case '5':
          send(0x02);
          break;
        case '0':
          send(0x1);
          break;
        default:
          send(0x00); 
        }
        refresh();
      }
      endwin();
    
      return 0;
    }
    per compilare serve:


    Codice:
    c++ programma.cpp -lcurses
    assunto che programma.cpp sia il file precedente

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •