PplWare Mobile

PHP é à quinta-feira – Controlar uma porta COM

                                    
                                

Este artigo tem mais de um ano


Autor: Pedro Pinto


  1. Zé Tolas says:

    Ummmm… essa explicação é muito interessante, mas carece informação de segurnaça importante como: com que permissões corre o PHP para aceder directamente a uma porta série e/ou que permissões tem a porta para poder ser acedida por um script PHP.

    • Pedro Pinto says:

      Permissões na porta????? Hum… 🙂

      • Zé Tolas says:

        Não percebo o espanto.

        A minha pergunta/afirmação não tem nada a ver com server side ou client side. É obvio que o PHP corre do lado do servidor.

        Passando ao assunto: O apache normalmente corre como nobody (ou algo equivalente). Assumindo que o php é um modulo compilado e não corre como CGI (com outro tipo de configurações), os scripts vão correr como nobody igualmente. Claro que podem correr o apache como root mas isso seria no minimo estranho em produção (e até em teste).

        As portas série (ttyS+), no linux, estão sujeitas ao mesmo tipo de permissões que qualquer outro ficheiro. Portanto, por norma, um utilizador comum não tem acesso directo às portas série (como em qualquer outro sistema operativo moderno que se preze).

        Daí surgiu a minha pergunta relativamente a essa biblioteca para o PHP. Achei demasiado directo e fácil o acesso à porta série.

    • Pedro Peixoto says:

      Boa tarde, a porta acedida é local, ou seja, o script acede a uma porta do servidor.

    • Rogério says:

      O PHP é server side, logo consegues controlar o que se passa no server, desde que aquilo que queiras controlar, não precise de permissões de administrador ou por questões de segurança, o PHP não tenha bloqueado.

      Não existe perigo nenhum em controlar portas COM.

      Uma nota, não experimentem este código em alojamentos partilhados, pois não vai funcionar. Nos alojamentos partilhados não têm acesso a nada do servidor físico.
      Isto só funciona, localmente, em VPS’s (muito limitado) e Servidores Dedicados.

      • Zé Tolas says:

        Isto não tem nada a ver com alojamentos partilhados. Em qualquer linux, por norma, um utilizador normal não terá acesso a qualquer “device”. Isto inclui as portas série (representadas por ttySx no linux). Por norma verás o PHP a correr como “nobody”, ou algo semelhante, dentro do apache (ou qualquer outro servidor HTTP).

  2. Hélder says:

    Que é interessante é! Infelizmente em windows não funciona…

  3. rodasp says:

    por acaso tenho uma pergunta… é possível o PHP ler códigos de barras através de uma pistola ligada por USB ou por COM?

    • Pedro Peixoto says:

      Boa tarde rodasp, normalmente as pistolas de códigos de barras funcionam como um teclado, pelo menos as que uso. Então fazendo uma página html é possível ler a partir da pistola, usando um campo input, ou recorrendo a javascript.

    • Rogério says:

      Pelo PHP não consegues controlar o leitor de códigos de barras.
      Usa antes Ajax (Javascript), lês o output do leitor, e passas para o PHP por HTTPRequest.

  4. QueroTenho says:

    Mais um excelente tutorial 🙂
    Muitos parabéns a equipa pplware 😉
    já não consigo passar um dia sem vir aqui 😀

  5. YaBa says:

    Excelente, isto + o Arduino e é deixar a imaginação trabalhar 😀

  6. Mandrake says:

    Mais um tutorial fenômenal.
    Não sabia que era possivel mexer copm portas COM com PHP, fiquei abismado.

    E muitos ainda dizem que PHP é fraquinho e vai morrer… hausahusahusa

    Belo Trampo no Post 😉

  7. david says:

    ola pessoal, preciso de alguem que converta um formulirio de envio de email de asp para php, ja tentei aquelas ferramentas que fazem isto automaticamente, mas não deu certo…quem puder me dar uma mão…ficarei grato.

  8. Jurandir says:

    Olá amigo onde eu coloco a classe “php_serial.class.php”?
    Desde ja agradeço

    • Pedro Peixoto says:

      Ola Jurandir, tens que criar um novo ficheiro php. Normalmente crio no notepad um ficheiro e chamo-o “index.php” onde coloco toda a programação. Não se esqueça que tem de ter istalado o PHP e o Apache! Depois é só abrir a página no browser.

  9. rodrigo says:

    Ótimo tutorial, gostaria de saber se tem como ler o retorno da resposta ex:

    $serial->sendMessage(“EnviarMsg\r”);

    Gostaria de saber qual mensagem o dispositivo retornou, para que possa tratar o retorno.

    Obrigado.

  10. Ictor says:

    Alguém sabe me informar como seria o comando para impressão?

  11. Mario says:

    Pedro,

    Gostaria de saber como eu faria para enviar uma impressão? já procurei pra caramba e não acho.

  12. Aerson Beto Mazivile says:

    Ola, como resolvo esse erro?
    Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; phpSerial has a deprecated constructor

Deixe um comentário

O seu endereço de email não será publicado.

You may use these HTML tags and attributes: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste site ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. A administração deste site reserva-se, desde já, no direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação do seu autor (nome completo e endereço válido de email) também poderão ser excluídos.