Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Communicating serial port on windows with php

I'm working with an application which connects to Huawei 3G Modem using COM ports in php. Here is my code:

<?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;
        }
    }
?>

This is working fine with me. Now challenge is every time i connect to the new usb port the COM was changing for my modem. Is there any other way to detect the device automatically with php in windows ?

like image 548
Radhakrishna Rayidi Avatar asked May 31 '13 15:05

Radhakrishna Rayidi


People also ask

How do I connect to a serial port?

Open a console sessionUsing PuTTY or other terminal emulator, select "Serial" as the connection type and change the "Serial line" to match the COM port noted earlier. The serial console speed is typically 9600. Click "Open" to connect to the console.

Can I use USB for serial communication?

USB has become the preferred serial communication protocol between digital products like computers and peripheral devices as it can transmit data across longer cables and offers higher transmission rates. UART, however, is still is used today for certain applications and is often seen in older devices.


1 Answers

You need to determinate COM port number of your USB device via some external command called trough PHP's shell_exec().

For Windows you can try this small tool:

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

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

After you call this tool via shell_exec(), you need to parse it's output (RegExp) and look for exact COM port number based on company/device name.

like image 114
mikikg Avatar answered Sep 30 '22 07:09

mikikg