从端口读取数据得到结果变化无常的数据

时间:2012-12-23 23:57:18

标签: php serial-port ascii

  

可能重复:
  PHP preg_match to get a word after space, which is where it a word KG

我正在使用PHP开发Web应用程序,我的应用程序与scale digital进行通信,我正在使用phpserial类的帮助。 我的问题是数据在我的浏览器错误输出中输出,输出为数字缩放。 当比例数字 16KG 时,所以在浏览器输出中 NT,ST + 16KG 然后我再次刷新浏览器得到其他,如〜!NT,ST + 16KG,16KG 。 我的问题是,如何在浏览器中获取数据 16KG

这是读取数据的脚本:

<?php
$serial = new phpSerial();
$serial->deviceSet("/dev/ttyUSB1");
$serial->confBaudRate(9600); //Baud rate: 9600 
$serial->confParity("none"); //Parity (this is the "N" in "8-N-1") 
$serial->confCharacterLength(8); //Character length (this is the "8" in "8-N-1") 
$serial->confStopBits(1); //Stop bits (this is the "1" in "8-N-1") 
$serial->confFlowControl("none"); 

$serial->deviceOpen();

$serial->sendMessage(chr(1));
$tes = $serial->readPort();
print_r($tes);
// get result ~!NT,ST+16KG, 16KG or NT,ST+16KG
$serial->deviceClose();
?>

这是来自phpSerial类的代码函数readPort。

function readPort ($count = 0)  {
        if ($this->_dState !== SERIAL_DEVICE_OPENED)
        {
            trigger_error("Device must be opened to read it", E_USER_WARNING);
            return false;
        }

            $content = ""; $i = 0;

            if ($count !== 0)
            {
                do {
                    if ($i > $count) $content .= fread($this->_dHandle, ($count - $i));
                    else $content .= fread($this->_dHandle, 128);
                } while (($i += 128) === strlen($content));
            }
            else
            {
                do {
                    $content .= fread($this->_dHandle, 128);
                } while (($i += 128) === strlen($content));
            }

            return $content;
    }

我正在开发使用linux,端口扩展数字检测/ dev / ttyUSB1,我的意思是这个问题是ASCII,所以任何帮我解决我的问题。 感谢。

0 个答案:

没有答案