2015-09-03 2 views
1

Je dois obtenir une réponse du modem GSM. Est-ce possible avec Mac OS X? Je veux dire est-il possible d'obtenir la réponse et l'enregistrer à variable?PHP + port série + modem GSM

Premier problème

Je sais à propos php_serial.class.php, mais cette classe supporte Linux et Windows. Mac OS X a le cœur de Darwin, donc ça ne marche pas. Par ailleurs, certaines commandes sont différentes entre Linux et Mac OS X. Par exemple, OS X utilise 'cu -l/dev/... lorsque Linux utilise stty -F/dev/... pour accéder à l'appareil .

Deuxième problème

Il est peut-être pas un problème, mais encore, je ne pas utiliser le port COM, mais convertisseur USB-COM. C'est pourquoi j'accède via /dev/cu.usbserial-xxxxxx où xxxxxx est le numéro de série du périphérique.

Ce que j'ai essayé

$gsmModem = fopen('/dev/cu.usbserial-xxxxxx', 'r+'); 
if ($gsmModem) echo 'Port opend!<br/>'; else echo 'Error opening port'; 
fwrite($gsmModem, "AT\r\n"); 
$response = fclose($gsmModem); 
echo $response; 

Le premier résultat de la ligne est: Port ouvert! ce qui signifie que je suis connecté à mon convertisseur USB-COM. Et la deuxième ligne est au lieu de OK.

Alors j'ai essayé shell_exec() commande, mais n'a rien, en raison de droit administratif insuffisant (mon estimation):

$gsmModem = shell_exec("cu -l /dev/cu.usbserial-xxxxxx; AT\r\n"); 
echo $gsmModem; 

Une bonne chose est que je peux faire est d'utiliser terminal.app , où je peux parler au modem gsm et obtenir des réponses pour chaque commande standard mais cela ne m'aide pas vraiment, parce que j'ai besoin de la réponse du modem pour obtenir des données et travailler avec. Par exemple:

$ sudo cu -l /dev/cu.usbserial-xxxxxx 
$ Password: 
$ Connected. 
    AT 
    OK 
    AT+CSQ 
    +CSQ: 25,0 

serait vraiment apprécié pour toute aide!

Répondre

0

Utilisation:

exec("cu -l /dev/cu.usbserial-xxxxxx; AT\r\n", $output); 

echo $output; 
+0

Bonjour et merci de votre réponse. Mais toujours rien. Je pense que c'est parce que ** cu -l ** devrait être fait avec ** sudo **. Pour autant que je sache, il n'y a pas de moyen sûr d'utiliser ** sudo ** avec shell_exec en php. – JEYCDEE

+0

Je pense que ce dont vous avez besoin est peut-être ici http://stackoverflow.com/questions/3173201/sudo-in-php-exec – Jackie