2010-06-08 5 views
3

J'essaie d'utiliser PHP pour envoyer du texte à un panneau LED afin que je puisse lui envoyer des numéros de tickets de support. Le signe lui-même est un morceau de travail; il vient d'eBay et est mal fait avec presque aucune documentation. Après avoir joué avec ça pendant un moment, j'ai été capable de comprendre comment il attendait que des trucs lui soient envoyés et que le débit en bauds soit de 28800. Je sais déjà comment communiquer avec des choses comme ça en PHP, mais je ne sais pas savoir comment changer le débit en bauds à quelque chose de non standard. J'ai essayé d'autres vitesses de transmission, et je n'ai pas réussi à le faire fonctionner.PHP en série avec des vitesses de transmission bizarres

+0

Quel système d'exploitation utilisez-vous? – Keeper

+0

Je peux utiliser Windows ou Linux, mais j'ai déjà fait des communications série php sous Linux, donc je préfère ça. – blueintegral

Répondre

2

Vous pouvez regarder dans la commande setserial sous Linux - avec elle, vous pouvez attribuer un port série à un taux non standard .

Vous devriez être en mesure de le retirer si vous lancez setserial comme suit avant de vous connecter pour initialiser le port (soit dans les scripts d'initialisation du serveur ou dans votre PHP ... mais pas sûr si ce serait une bonne idée) :

/bin/setserial /dev/ttyS1 spd_cust baud_base 115200 divisor 4

Voici ce qui se passe dans la commande:

  • l'option spd_cust indique le système d'exploitation pour définir la vitesse à un diviseur personnalisé lorsque l'application demande 38400
  • /dev/ttyS1 est le port série. Vous allez changer cela à quoi que ce soit.
  • Le baud_base est le numéro à utiliser par le diviseur 4

115200/4 = 28800 ... la vitesse dont vous avez besoin :-)

Dans votre code PHP, vous connecter à 38400, ce qui semble étrange, mais à cause de setserial, le port que vous spécifiez fonctionnera à 28800

+0

+1 pour la valeur de piratage –

1

Pour les fenêtres tentent

"mode " . $device . " BAUD=" . $baud

Pour linux essayez

"stty -F " . $device . " " . $baud

Je pense que ce sont les commandes correctes pour envoyer

+0

La classe de série PHP est basée sur stty. Le problème est qu'il lance une erreur lorsque vous essayez de spécifier un débit en bauds qui n'est pas l'une des vitesses standard (2400, 4800, 9600, 14400, 19200, etc) – blueintegral

+0

Avez-vous essayé de modifier le programme stty pour accepter votre Baudrates, Jetez un oeil ici, http://mhonarc.axis.se/dev-etrax/msg06754.html – RobertPitt

+0

J'ai déjà fait des choses en C, mais je n'ai jamais essayé de modifier quelque chose comme ça. J'ai trouvé ceci: http://www.codase.com/search/display?file = L2dlbnRvbzIvdmFyL3RtcC9yZXBvcy9jb2Rhc2UuYy9za2tmZXAtMC44NmMvd29yay9za2tmZXAvc3R0eS5j & lang = c qui semble être la source de stty, mais après l'avoir parcouru, je ne sais pas comment lui faire accepter de nouvelles vitesses de transmission. Y at-il n'importe où que je pourrais apprendre plus sur comment faire cela? – blueintegral