PHP-GTK: Criando Aplicações Gráficas com PHP Adianti Framework para PHP PHP Programando com Orientação a Objetos Criando Relatórios com PHP


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[phpgtk] Re: Comunicação com a PORTA PARALELA - Automação



aueaueh foi mal Frederico, foi o Wendell quem testou xD
manda o fonte ai pra nóis mano xD

Então Erick, eu não tenho windows e meu note não tem porta paralela, meu windows é uma VM, da pra emular, mas nem sei como fazer isso, mó trampo O.o

aeuuahe por isso disse que fiz a extensao no escuro xD

- - -
http://blog.scorninpc.com/
Bruno Pitteli Gonçalves
Desenvolvedor SAP B1 / WEB
scorninpc@gmail.com
+55 018 97958674


2009/6/18 Erick <erick@criarsites.com.br>

Bruno vc conseguiu fazer funcionar ai!?

Bruno Gonçalves escreveu:
> Voce ta usando outras funções, talvez seja interessante usa-la no
> php_ppc tambem.
>
> To achando estranho esse 0xFF que ele ta mandando. Frederico tem como
> vc mandar o seu código PHP que vc testou?
>
> - - -
> http://blog.scorninpc.com/
> Bruno Pitteli Gonçalves
> Desenvolvedor SAP B1 / WEB
> scorninpc@gmail.com <mailto:scorninpc@gmail.com>
> +55 018 97958674
>
>
> 2009/6/18 frederico schardong <frede.sch@gmail.com
> <mailto:frede.sch@gmail.com>>
>
>
>     Fiz um programa em C pra testar um hardware feito de impressora que
>     fiz... ele usa ncurses e é pra linux obviamente..
>
>     pra windows tem la no site do rogercom um bem simples e que usa a
>     dll... foi esse que tu testou?
>
>     #include <stdio.h>
>     #include <stdlib.h>
>     #include <unistd.h>
>     #include <sys/io.h>
>     #include <ncurses.h>
>
>     #define saida 0x378
>     #define entrada 0x379
>     #define controle 0x37Ah
>
>     // variaveis globais
>     int defaultIn;
>     int contadorPassos = 0;
>     int tempoPadrao = 100000;
>
>
>     void menu();
>
>     void startLPT()
>     {
>        if(ioperm(0x378, 3, 1) == -1)
>        {
>            clear();
>            mvprintw(0,0,"Erro ao tentar obter acesso a porta paralela
>     0x378\n\nVoce esta rodando esse programa como root?\nExiste outro
>     processo usando a LPT?\n\nAperte para sair\n");
>            refresh();
>            getch();
>            exit(0);
>        }
>     }
>
>
>     void closeLPT()
>     {
>        ioperm(0x378, 3, 0);
>     }
>
>
>     void sensor()
>     {
>        clear();
>
>        clear();
>        mvprintw(0,0,"Conecte o computador a impressora...\n\nAperte algum
>     botao para avancar");
>        refresh();
>        getch();
>
>        clear();
>
>        defaultIn = inb(entrada);
>
>        mvprintw(4,0,"Valor padrao da entrada(0x379): %d\n",defaultIn);
>
>     }
>
>
>     void passoEsquerda()
>     {
>        outb(8,saida);
>        usleep(tempoPadrao);
>        outb(4,saida);
>        usleep(tempoPadrao);
>        outb(2,saida);
>        usleep(tempoPadrao);
>        outb(1,saida);
>        usleep(tempoPadrao);
>     }
>
>
>     void passoDireita()
>     {
>        outb(1,saida);
>        usleep(tempoPadrao);
>        outb(2,saida);
>        usleep(tempoPadrao);
>        outb(4,saida);
>        usleep(tempoPadrao);
>        outb(8,saida);
>        usleep(tempoPadrao);
>     }
>
>
>     void microPassoEsquerda()
>     {
>        outb(8,saida);
>        usleep(tempoPadrao);
>        outb(12,saida);
>        usleep(tempoPadrao);
>        outb(4,saida);
>        usleep(tempoPadrao);
>        outb(6,saida);
>        usleep(tempoPadrao);
>        outb(2,saida);
>        usleep(tempoPadrao);
>        outb(3,saida);
>        usleep(tempoPadrao);
>        outb(1,saida);
>        usleep(tempoPadrao);
>        outb(9,saida);
>        usleep(tempoPadrao);
>     }
>
>
>     void microPassoDireita()
>     {
>        outb(9,saida);
>        usleep(tempoPadrao);
>        outb(1,saida);
>        usleep(tempoPadrao);
>        outb(3,saida);
>        usleep(tempoPadrao);
>        outb(2,saida);
>        usleep(tempoPadrao);
>        outb(6,saida);
>        usleep(tempoPadrao);
>        outb(4,saida);
>        usleep(tempoPadrao);
>        outb(12,saida);
>        usleep(tempoPadrao);
>        outb(1,saida);
>     }
>
>
>     void manual()
>     {
>
>        int opcao,opcao1;
>
>        clear();
>        mvprintw(0,0,"Passo inteiro(1) ou micropassos(2)");
>        refresh();
>
>        opcao = getch();
>
>        if(opcao == 49)
>        {
>            clear();
>            mvprintw(0,0,"Aperte ENTER para zerar o contador e ESC para
>     voltar ao menu.\nAperte A para ir p/ esquerda e D p/ ir a
>     direita\n\n");
>            refresh();
>
>            contadorPassos = 0;
>
>            while(inb(entrada) == defaultIn)
>            {
>                opcao1 = getch();
>
>                if(opcao1 == 10)
>                {
>                    contadorPassos = 0;
>                    mvprintw(4,0,"Passos: %d",contadorPassos);
>                    refresh();
>                }
>
>                if(opcao1 == 27)
>                {
>                    break;
>                }
>
>                if(opcao1 == 97)
>                {
>                    passoEsquerda();
>                    contadorPassos = contadorPassos + 4;
>                    mvprintw(4,0,"Passos: %d",contadorPassos);
>                    refresh();
>                }
>                if(opcao1 == 100)
>                {
>                    passoDireita();
>                    contadorPassos = contadorPassos + 4;
>                    mvprintw(4,0,"Passos: %d",contadorPassos);
>                    refresh();
>                }
>            }
>            clear();
>            mvprintw(0,0,"Total de passos: %d\n\nAperte para voltar ao
>     menu ",contadorPassos);
>            refresh();
>        }
>        else
>        if(opcao == 50)
>        {
>            clear();
>            mvprintw(0,0,"Aperte ENTER para zerar o contador e ESC para
>     voltar ao menu.\nAperte A para ir p/ esquerda e D p/ ir a
>     direita\n\n");
>            refresh();
>
>            contadorPassos = 0;
>
>            while(inb(entrada) == defaultIn)
>            {
>                opcao1 = getch();
>
>                if(opcao1 == 10)
>                {
>                    contadorPassos = 0;
>                    mvprintw(4,0,"Passos: %d",contadorPassos);
>                    refresh();
>                }
>
>                if(opcao1 == 27)
>                {
>                    break;
>                }
>
>                if(opcao1 == 97)
>                {
>                    microPassoEsquerda();
>                    contadorPassos = contadorPassos + 8;
>                    mvprintw(4,0,"Passos: %d",contadorPassos);
>                    refresh();
>                }
>                if(opcao1 == 100)
>                {
>                    microPassoDireita();
>                    contadorPassos = contadorPassos + 8;
>                    mvprintw(4,0,"Passos: %d",contadorPassos);
>                    refresh();
>                }
>            }
>            clear();
>            mvprintw(0,0,"Total de passos: %d\n\nAperte para voltar ao
>     menu ",contadorPassos);
>            refresh();
>        }
>
>        getch();
>        menu();
>
>     }
>
>
>     void automatico()
>     {
>
>        int opcao;
>
>        clear();
>        mvprintw(0,0,"Passo inteiro(1) ou micropassos(2)");
>        refresh();
>
>        opcao = getch();
>
>        clear();
>        mvprintw(0,0,"Posicione o carro de impressao no final de curso
>     oposto ao sensor e aperte enter");
>        refresh();
>
>        while(getch() != 10);
>
>        clear();
>        mvprintw(0,0,"\n\nSe o carro nao for ao sensor: pare o programa,
>     recompile o programa trocando o nome das funcoes Direita por Esquerda
>     e Esquerda por Direita\n\nSe o carro esta lento: diminua o tempoPadrao
>     e recompile o programa\n\nSe o carro nao esta andando: aumente o
>     tempoPadrao e recompile o programa\n\n Valor da entrada:
>     %d\n\n",inb(entrada));
>        refresh();
>
>        if(opcao == 49)
>        {
>            contadorPassos = 0;
>
>            while(inb(entrada) == defaultIn)
>            {
>                passoEsquerda();
>                contadorPassos = contadorPassos + 4;
>                mvprintw(11,0,"Passos: %d",contadorPassos);
>                refresh();
>            }
>
>            clear();
>            mvprintw(0,0,"Total de passos: %d\n\nAperte para voltar ao
>     menu ",contadorPassos);
>            refresh();
>        }
>        else
>        if(opcao == 50)
>        {
>            contadorPassos = 0;
>
>            while(inb(entrada) == defaultIn)
>            {
>                microPassoEsquerda();
>                contadorPassos = contadorPassos + 8;
>                mvprintw(11,0,"Passos: %d",contadorPassos);
>                refresh();
>            }
>
>            clear();
>            mvprintw(0,0,"Total de passos: %d\n\nAperte para voltar ao
>     menu ",contadorPassos);
>            refresh();
>        }
>
>        getch();
>        menu();
>     }
>
>
>     void menu()
>     {
>        int opcao;
>
>        mvprintw(0,0,"1) teste automatico\n2) teste manual\n3)sair\n");
>        refresh();
>
>        opcao = getch();
>
>        if(opcao == 49)
>        {
>            automatico();
>        }
>
>        if(opcao == 50)
>        {
>            manual();
>        }
>
>        if(opcao == 51)
>        {
>            closeLPT();
>            exit(0);
>        }
>
>     }
>
>
>     int main()
>     {
>
>        initscr(); //Inicializa a ncurses
>        startLPT();
>        sensor();
>
>        menu();
>
>        closeLPT();
>        endwin();
>        return 0;
>     }
>
>
>
>
> >





--~--~---------~--~----~------------~-------~--~----~
Grupo PHP-GTK Brasil (http://www.php-gtk.com.br)
Para enviar mensagens, o e-mail é phpgtk@googlegroups.com
Para cancelar a sua inscrição, o e-mail é phpgtk+unsubscribe@googlegroups.com
Mais opções na página do grupo: http://groups.google.com.br/group/phpgtk?hl=pt-BR
-~----------~----~----~----~------~----~------~--~---