PHP et périphérique usb

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : PHP et périphérique usb

par orgerix » 28 mai 2009, 20:04

Pour cela, il faudrait se pencher sur le C (et encore, je suis pas sur qu'on puisse tout faire avec)
Si si. En C tu peux tout faire :) (quasiment).
Ce genre de drivers c'est fait en C. Par contre, évidemment tu fais ça dans le noyau, et éventuellement en gérant directement les registres du périphérique…
Ok, au temps pour moi. J'avais entendu que certains noyaux d'OS devait être codés en assembleur. Enfin, il reste qu'en PHP c'est pas possible

par Nagol » 28 mai 2009, 02:40

et les irq, barf que de fun de gérer des irq, bref c'est pas fait pour ça le php comme dit précédemment

par Sékiltoyai » 28 mai 2009, 02:31

Pour cela, il faudrait se pencher sur le C (et encore, je suis pas sur qu'on puisse tout faire avec)
Si si. En C tu peux tout faire :) (quasiment).
Ce genre de drivers c'est fait en C. Par contre, évidemment tu fais ça dans le noyau, et éventuellement en gérant directement les registres du périphérique…

par Nagol » 27 mai 2009, 22:11

berk piloter un périphérique en php, berk, c'est le rôle de l'os de fournir une api pour piloter un périphérique, php d'utiliser l'api (via webservice ou via exécution de commandes mais préférablement un intermédiaire type webservice) c'est ce que je fais au boulot, je pilotte des tape drive, des librairies, et divers périphériques de backup, tout en passant par un webservice, et on est compatible tous les os de l'univers (genre 100 variétés de linux, tous les windows, les macs, les unix, les bsd)

par orgerix » 27 mai 2009, 21:55

Sinon, aucun rapport avec le sujet, mais je te conseille de bien réfléchir si ton sujet entre dans le thème. Je suis moi même en prépa et je n'ai qu'entendu parler de surfaces et non d'interfaces. Et si tu commence à extrapoler le sujet, tu risque de tomber dans le hors sujet, ce qui je pense sera mal vu, puisque justement le sujet a été beaucoup plus ciblé que les autres années (l'informaiton, stabilité et variabilité).

Cependant, l'arreté n'est pas encore sorti, et tout ce qu'on entend n'est que rumeur. Il faudra vérifier lors de sa publication (qui ne devrait as tarder).

Concernant ce que tu veux faire, PHP est un langage de haut niveau et donc logiquement ne dois pas s'occuper de la gestoin des périférique. Il suppose qu'il existe des drivers qui le fait à sa place. Ensuite, PHP est (à la base) un langage web. Ainsi, l'accès aux périférique, que ce soit clavier écran, imprimante... n'entre pas dans le fonctionnement normal de PHP. Pour cela, il faudrait se pencher sur le C (et encore, je suis pas sur qu'on puisse tout faire avec)

Si tu veux poursuivre dans ton idée d'interface, je pense qu'il sera plus facile (et plus riche, faire juste executer une fonction d'un OS n'est pas trop interessant)) de créer une interface entre deux applications. Je ne sais pas, par exemple transformer une BDD en un fichier OpenOffice et inversement. Même si on sort légèrement de l'usage normal de PHP dans l'esprit, ca reste tout de même quelque chose de faisable.

par Yo4nn » 27 mai 2009, 20:42

Merci pour vos réponses ,
je pense que je vais développer mon application plutôt sous linux si il suffit de faire :
$port = '/dev/usb/**'; 
$handle = fopen($port, 'w'); 
....
fclose($handle);
Merci enneite pour les dll je vais aussi me renseigner sur le sujet.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par Celtiore » 27 mai 2009, 07:25

Bonjour,
Oui merci de cette précision, je me suis en effet très mal exprimé et n'etant developpeur j'ai un peu de mal ...

par Sékiltoyai » 27 mai 2009, 00:49

pour informations il faut installer suphp + php5-cli, car de mémoire on ne peut acceder aux périphériques avec 'php5'
Alors c'est quelquepeu imparfait. Je dirais plutôt que l'accès aux périphériques requiert des droits spéciaux, que par défaut apache n'a pas.
Il faut donc soit donner à l'utilisateur d'apache les droits d'accès (sous certains systèmes, comme ubuntu, il suffit d'ajouter l'utilisateur à un groupe), soit lancer apache sous un utilisateur qui a les droits.
SuPHP ne fait qu'exécuter le script sous un utilisateur différent.

par Celtiore » 26 mai 2009, 23:05

Re :p

bon il suffisait de chercher au bon endroit...

Code : Tout sélectionner

ls -l /dev/usb/* crw-rw---- 1 root lp 180, 0 2009-05-26 22:50 /dev/usb/lp0 sudo usermod -G lp le_user
puis:

Code : Tout sélectionner

$port = '/dev/usb/lp0'; $handle = fopen($port, 'w'); $contents = fwrite($handle, $string); fclose($handle);
pour informations il faut installer suphp + php5-cli, car de mémoire on ne peut acceder aux périphériques avec 'php5'
il suffit de suivre à la lettre :
http://doc.ubuntu-fr.org/suphp

par Celtiore » 26 mai 2009, 21:46

Bonsoir,
je recherche aussi une information de ce genre, j'expose mon cas :

PC sous ubuntu ( mais peu importe )
imprimante ticket USB
application php
besoin d'envoyer des séquences ESC/POS aux l'imprimantes

j'utilise différents autres modèles d'imprimantes : série,ethernet,wifi

pour ethernet - wifi :

Code : Tout sélectionner

$fp = fsockopen("192.168.1.192", 9100 , $errno, $errstr, 30); $contents = fwrite($fp, $string); fclose($fp);
pour série :

Code : Tout sélectionner

$port = '/dev/ttyS0'; $handle = fopen($port, 'w'); $contents = fwrite($handle, $string); fclose($handle);
avec comme commande simple d'initialisation :

Code : Tout sélectionner

$string = chr(0x1B).chr(0x40); //Init Printer
ce que ca peu donné avec un $string élaboré : http://www.projetpos.fr/news.php?rowstart=6

je penses donc que la solution n'est pas du coté de php mais plutot du coté de l'OS, je me permet donc de poster ici au cas ou quand meme, mais aussi pour "promouvoir" le projet que j'essaye de finaliser
je vais me tourner vers les forums ubuntu e linux en esperant trouver une solution...

merci à vous pour ce super forum

par enneite » 26 mai 2009, 15:35

sous windows.
je dis dll pour un raccourci comme dll dynamiques, on peut même envisager d'en coder soit même en C, c'est ça qui est bien en php, c'est qu'on peut tout faire.

Je pense que sous Unix, le principe reste le même. Mais ça fait lgtps que je n'en ai plus fait :oops: (ça remonte à la fac, au boulot on utilise windows)

par Sékiltoyai » 26 mai 2009, 15:00

a priori, si tu connais le nom de ton lecteur USB, en executant php en ligne de commande, tu peux te servir de toutes les instructions relatives aux repertoires de ton disques dur.
Après pour des choses plus spécifiques, il y a surement des dll à importer...
Euh, tu parles sous Windows ou Unix ?

par enneite » 25 mai 2009, 14:00

a priori, si tu connais le nom de ton lecteur USB, en executant php en ligne de commande, tu peux te servir de toutes les instructions relatives aux repertoires de ton disques dur.
Après pour des choses plus spécifiques, il y a surement des dll à importer...

par Sékiltoyai » 24 mai 2009, 19:54

Bref, je ne comprends vraiment pas la question…
Je dois realiser un TIPE et le sujet est interface ou surface.
et vu que j'ai fais du php pendant quelques années, je souhaite faire une interface en php.
J'ai donc pensé a une interface qui gére une imprimante, je trouve ca intéressant.
Ouais, difficilement faisable aussi :-/
il faut voir à quel point tu ne veux pas utiliser les fonctions du système
je voulais anticipé les réponses comme exec("print ...");
Bah exec("a2ps …"); :)
d'ou est-t-il possible de traiter des données via le port usb en php ?
Mouais, bah écoute, honnêtement, j'espère que non, sinon ce serait particulièrement choquant…
Pour ce genre de choses, php est particulièrement inadapté.

par Yo4nn » 24 mai 2009, 12:36

Bon je crois qu'on ne sait pas trop compris.
Bref, je ne comprends vraiment pas la question…
Je dois realiser un TIPE et le sujet est interface ou surface.
et vu que j'ai fais du php pendant quelques années, je souhaite faire une interface en php.
J'ai donc pensé a une interface qui gére une imprimante, je trouve ca intéressant.

il faut voir à quel point tu ne veux pas utiliser les fonctions du système
je voulais anticipé les réponses comme exec("print ...");

Autant tu peux espérer t'en sortir en utilisant les fonctions php en différenciant Windows et Unix
j'ai parlé de Windows et linux pour ouvrir le champ de réponse, bien sur le code sera seulement pour Windows ou linux , et au vu des réponses il sera pour l'os ou la gestion de l'usb via php est le plus facile.


si tu espères pouvoir gérer n'importe quelle imprimante de manière transparente, je crois qu'il faut redescendre de ton nuage,
Non , effectivement je veux gérer seulement mon imprimante.
Peut-être que je me redirigerai vers un autre périphérique moins complexe au final.


d'ou est-t-il possible de traiter des données via le port usb en php ?

Merci d'avance.