繁体   English   中英

用php在windows上传递串口

[英]Communicating serial port on windows with php

我正在使用一个应用程序,该应用程序使用php中的COM端口连接到华为3G调制解调器。 这是我的代码:

<?php
include("sms.php");
$sms = new sms();
$device = "COM11";
exec("mode $device BAUD=9600 PARITY=n DATA=8 STOP=1 xon=off octs=off rts=on");
$comport = fopen($device, "r+b");
if ($comport === false){
    die("Failed opening com port<br/>");
}else{
    echo "Com Port Open<br/>";
}

//Set non-blocking mode for writing
//stream_set_blocking($comport, 0);
$sms->_blocking($comport,0);
$atcmd = "AT\r";
fputs($comport, $atcmd);

sleep(5); // Sleep for response from the modem

 // Set blocking mode for reading
$sms->_blocking($comport,1);
$res = fgets($comport, 4017);
if(trim($res) == "OK"){
    echo "Modem supports AT Commands<br/>";
}else{
    echo "Error response: ".$res;
}

fclose($comport);
?>

sms.php:

<?php
    class sms{
        function _blocking($device,$mode){
            stream_set_blocking($device, $mode);
            return true;
        }
    }
?>

这对我很好。 现在挑战是每次我连接到新的usb端口,COM正在改变我的调制解调器。 有没有其他方法可以在Windows中使用php自动检测设备?

您需要通过一个名为trough PHP的shell_exec()的外部命令来确定USB设备的COM端口号。

对于Windows,您可以尝试这个小工具:

http://todbot.com/blog/2012/03/02/listcomports-windows-command-line-tool-for-usb-to-serial/

https://github.com/todbot/usbSearch/

通过shell_exec()调用此工具后,需要解析它的输出(RegExp)并根据公司/设备名称查找确切的COM端口号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM