重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
用PHP实现网页直接操作硬件串口,网页通过串口控制硬件设备、发送指令,读取返回值。
公司主营业务:成都网站设计、成都网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出靖江免费做网站回馈大家。
读取ec,php值效果
实现方案:
1.网页端通过websocket与php后台服务交互
2.php后台接收指令操作串口,发送16进制指令给硬件设备
3.php后台将硬件设备返回值通过websocket,传递给网页端
4.网页端接收推送消息,显示在页面上。
在做数据接口时 我们通常要获取第三方数据接口或者给第三方提供数据接口 而这些数据格式通常是以XML或者JSON格式传输 本文将介绍如何使用PHP生成XML格式数据供第三方调用以及如何获取第三方提供的XML数据
生成XML格式数据
我们假设系统中有一张学生信息表student 需要提供给第三方调用 并有id name sex age分别记录学生的姓名 性别 年龄等信息
CREATE TABLE `student` (
`id` int( ) NOT NULL auto_increment
`name` varchar( ) NOT NULL
`sex` varchar( ) NOT NULL
`age` *** allint( ) NOT NULL default
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf ;
首先 建立createXML php文件 先连接数据库 获取数据
include_once ( connect php ) //连接数据库
$sql = select * from student ;
$result = mysql_query($sql) or die( Invalid query: mysql_error())
while ($row = mysql_fetch_array($result)) {
$arr[] = array(
name = $row[ name ]
sex = $row[ sex ]
age = $row[ age ]
)
}
这个时候 数据就保存在$arr中 你可以使用print_r打印下数据测试
接着 建立xml 循环数组 将数据写入到xml对应的节点中
$doc = new DOMDocument( utf ) // 声明版本和编码
$doc formatOutput = true;
$r = $doc createElement( root )
$doc appendChild($r)
foreach ($arr as $dat) {
$b = $doc createElement( data )
$name = $doc createElement( name )
$name appendChild($doc createTextNode($dat[ name ]))
$b appendChild($name)
$sex = $doc createElement( sex )
$sex appendChild($doc createTextNode($dat[ sex ]))
$b appendChild($sex)
$age = $doc createElement( age )
$age appendChild($doc createTextNode($dat[ age ]))
$b appendChild($age)
$r appendChild($b)
}
echo $doc saveXML()
我们调用了PHP内置的类DOMDocument来处理与生成xml 最终生成的xml格式请点击这里看效果
?xml version= encoding= utf ?
root
data
name李王皓/name
sex男/sex
age /age
/data
…
/root
获取XML格式数据
现在我们假设要从第三方获取学生信息 数据格式是XML 我们需要使用PHP解析XML 然后将解析后的数据显示或者写入本地数据库 而这里关键的一步是解析XML
PHP有很多中方法可以解析XML 其中PHP提供了内置的XMLReader类可以循序地浏览过xml档案的节点 你可以想像成游标走过整份文件的节点 并抓取需要的内容 使用XMLReader是高效的 尤其是读取非常大的xml数据 相对其他方法 使用XMLReader消耗内存非常少
header( Content type:text/; Charset=utf )
$url = // helloweba /demo/importXML/createXML php ;
$reader = new XMLReader() //实例化XMLReader
$reader open($url) //获取xml
$i= ;
while ($reader read()) {
if ($reader nodeType == XMLReader::TEXT) { //判断node类型
$m = $i% ;
if($m== )
$name = $reader value; //读取node值
if($m== )
$sex = $reader value;
if($m== ){
$age = $reader value;
$arr[] = array(
name = $name
sex = $sex
age = $age
)
}
$i++;
}
}
//print_r($arr)
lishixinzhi/Article/program/PHP/201311/21636
PHP接收JSON格式的数据
在API服务中,目前流行采用json形式来交互。
给前端调用的接口输出Json数据,这个比较简单,只需要组织好数据,用json_encode($array) 转化一下,前端就得到json格式的数据。
接收前端提交的json数据稍微复杂一点,原因是:PHP默认识别的数据类型是application/x-标准的数据类型。因此,对型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之类的内容无法解析,如果用$_POST数组来接收就会失败!
此时可以使用$GLOBALS['HTTP_RAW_POST_DATA'] 或 file_get_contents('php://input') 来获取提交的数据
查看手册,可以发现$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST的区别:
$_POST:通过 HTTP POST 方法传递的变量组成的数组,是自动全局变量。
$GLOBALS['HTTP_RAW_POST_DATA'] :总是产生 $HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据。此变量仅在碰到未识别 MIME 类型的数据时产生。$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用。也就是说基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一样的。但是如果post过来的数据不是PHP能够识别的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,比如 text/xml 或者 soap 等等。
在 php.ini 配置 php_dio.dll
php手册 Direct IO 里面函数的应用 很详细
PHP 文件打开/读取/读取
PHP 文件
PHP 文件创建/写入
在本节中,我们向您讲解如何在服务器上打开、读取以及关闭文件。
PHP Open File - fopen()
打开文件的更好的方法是通过 fopen() 函数。此函数为您提供比 readfile() 函数更多的选项。
在课程中,我们将使用文本文件 "webdictionary.txt":
AJAX = Asynchronous JavaScript and XML
CSS = Cascading Style Sheets
HTML = Hyper Text Markup Language
PHP = PHP Hypertext Preprocessor
SQL = Structured Query Language
SVG = Scalable Vector Graphics
XML = EXtensible Markup Language
fopen() 的第一个参数包含被打开的文件名,第二个参数规定打开文件的模式。如果 fopen() 函数未能打开指定的文件,下面的例子会生成一段消息:
实例
?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");echo fread($myfile,filesize("webdictionary.txt"));fclose($myfile);
?
运行实例
提示:我们接下来将学习 fread() 以及 fclose() 函数。
文件会以如下模式之一打开:
模式描述
r打开文件为只读。文件指针在文件的开头开始。
w打开文件为只写。删除文件的内容或创建一个新的文件,如果它不存在。文件指针在文件的开头开始。
a打开文件为只写。文件中的现有数据会被保留。文件指针在文件结尾开始。创建新的文件,如果文件不存在。
x创建新文件为只写。返回 FALSE 和错误,如果文件已存在。
r+打开文件为读/写、文件指针在文件开头开始。
w+打开文件为读/写。删除文件内容或创建新文件,如果它不存在。文件指针在文件开头开始。
a+打开文件为读/写。文件中已有的数据会被保留。文件指针在文件结尾开始。创建新文件,如果它不存在。
x+创建新文件为读/写。返回 FALSE 和错误,如果文件已存在。
PHP 读取文件 - fread()
fread() 函数读取打开的文件。
fread() 的第一个参数包含待读取文件的文件名,第二个参数规定待读取的最大字节数。
如下 PHP 代码把 "webdictionary.txt" 文件读至结尾:
fread($myfile,filesize("webdictionary.txt"));PHP 关闭文件 - fclose()
fclose() 函数用于关闭打开的文件。
注释:用完文件后把它们全部关闭是一个良好的编程习惯。您并不想打开的文件占用您的服务器资源。
fclose() 需要待关闭文件的名称(或者存有文件名的变量):
?php
$myfile = fopen("webdictionary.txt", "r");// some code to be executed....
fclose($myfile);
?
PHP 读取单行文件 - fgets()
fgets() 函数用于从文件读取单行。
下例输出 "webdictionary.txt" 文件的首行:
实例
?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");echo fgets($myfile);
fclose($myfile);
?
运行实例
注释:调用 fgets() 函数之后,文件指针会移动到下一行。
PHP 检查 End-Of-File - feof()
feof() 函数检查是否已到达 "end-of-file" (EOF)。
feof() 对于遍历未知长度的数据很有用。
下例逐行读取 "webdictionary.txt" 文件,直到 end-of-file:
实例
?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");// 输出单行直到 end-of-file
while(!feof($myfile)) {
echo fgets($myfile) . "br";
}
fclose($myfile);
?
运行实例
PHP 读取单字符 - fgetc()
fgetc() 函数用于从文件中读取单个字符。
下例逐字符读取 "webdictionary.txt" 文件,直到 end-of-file:
实例
?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");// 输出单字符直到 end-of-file
while(!feof($myfile)) {
echo fgetc($myfile);
}
fclose($myfile);
?
运行实例
注释:在调用 fgetc() 函数之后,文件指针会移动到下一个字符。
PHP Filesystem 参考手册
如需完整的 PHP 文件系统参考手册,请访问 W3School 提供的 PHP Filesystem 参考手册。
PHP-Serial
上面的是PHP连接COM口的类,
它是通过PHP调用SHELL命令交互来执行连接COM口的。
线上环境无论从性能和稳定性和安全性都不建议这样使用。