PHP实现连接设备、通讯和发送命令的方法
本文实例讲述了PHP实现连接设备、通讯和发送命令的方法。分享给大家供大家参考。具体如下:
开发的BS架构的软件(PHP),需要跟设备进行通讯,在此记录一下,欢迎各位指正:
1. 采用php socket技术使用TCP/IP连接设备
参数$service_port 连接端口
参数$address 发送IP地址
参数$in 发送命令
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
function Send_socket_connect($service_port, $address, $in) {//创建 TCP/IP socket$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("could not create socket!"); //设置超时时间 $timeout = 2; $time = time(); //设置非阻塞模式 @socket_set_nonblock($socket); //超时判断 while (!@socket_connect($socket, $address, $service_port)) { $err = socket_last_error($socket); // 连接成功,跳出循环 if ($err === 10056) { break; } //连接失败,判断超时时间,停止 if ((time() - $time) >= $timeout) { socket_close($socket); print('网络异常,请检查网络连接!!'); exit(); } // 刷新频率(250毫秒) usleep(250000); } //设置阻塞模式 @socket_set_block($socket); //发送命令到设备 socket_write($socket, $in, strlen($in)); //关闭连接 socket_close($socket);} |
Send_socker_xdcoder $buffer为返回值
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
function Send_socket_xdcoder($service_port, $address, $in) { //创建 TCP/IP socket $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("could not create socket!"); //设置超时时间 $timeout = 2; $time = time(); //设置非阻塞模式 @socket_set_nonblock($socket); //超时判断 while (!@socket_connect($socket, $address, $service_port)) { $err = socket_last_error($socket); // 连接成功 if ($err === 10056) { break; } //连接失败,判断超时时间,停止 if ((time() - $time) >= $timeout) { socket_close($socket); echo "<script>alert('网络异常,请检查网络连接!!');</script>"; exit(); } // 刷新频率(250毫秒) usleep(250000); } //设置阻塞模式 @socket_set_block($socket); //发送命令到设备 socket_write($socket, $in, strlen($in)); //接收设备命令返回数据 $buffer = socket_read($socket, 1024, PHP_NORMAL_READ); //关闭连接 socket_close($socket); //输出返回值 return $buffer;} |
2. 采用php socket技术使用UDP协议连接设备,实现通讯和发送命令
参数$service_port 连接端口
参数$address 发送IP地址
参数$in 发送命令
|
1
2
3
4
5
6
7
8
9
10
11
12
|
function Send_socket_connect_udp($service_port, $address, $in) { //采用php socket技术使用UDP协议连接设备 $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); @socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 2, "usec" => 0)); //发送命令 @socket_sendto($socket, $in, strlen($in), 0, $address, $service_port); @socket_recvfrom($socket, $buffer, 1024, MSG_WAITALL, $address, $service_port); //关闭连接 if (empty($buffer)) { echo "<script>alert('网络异常,请检查网络连接!!');</script>"; }} |
Send_socket_xdcoder_udp $buffer 为返回值
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
function Send_socket_xdcoder_udp($service_port, $address, $in) { //采用php socket技术使用UDP协议连接设备 $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); @socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 2, "usec" => 0)); //发送命令 @socket_sendto($socket, $in, strlen($in), 0, $address, $service_port); @socket_recvfrom($socket, $buffer, 1024, MSG_WAITALL, $address, $service_port); //关闭连接 socket_close($socket); if (!empty($buffer)) { return $buffer; } else { echo "<script>alert('网络异常,请检查网络连接!!');</script>"; }} |
3. 采用RS232串口技术连接设备,实现通讯和发送命令
参数$com 串口号
参数$baudratr 波特率
参数$in 发送命令
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
function rs232_connect($com, $baudrate, $in) { @set_time_limit(10); //使用 'windows下设置窜口参数'; exec("mode " . $com . " BAUD=" . $baudrate . " PARITY=n DATA=8 STOP=1 odsr=off"); // "打开端口串口$com"; $f = @fopen($com, 'w+'); //判断串口是否正常打开 if (!$f) { //echo "<script>alert('Error when open $com!!');</script>"; die("Error when open $com"); } //向串口发送数据; fwrite($f, $in); //关闭端口 fclose($f); //串口操作结束} |
还有一个关于命令16进制转换的:
|
1
2
3
4
5
6
7
|
function hexToStr($hex) { $string = ""; for ($i = 0; $i < strlen($hex) - 1; $i+=3) { $string.=chr(hexdec($hex[$i] . $hex[$i + 1])); } return $string;} |
希望本文所述对大家的php程序设计有所帮助。
PHP实现连接设备、通讯和发送命令的方法的更多相关文章
- excel2003出现“向程序发送命令时出现错误”解决方法
电脑已经预装了office2010,因为想要学习 <Excel 图标之道>,安装了Excel2003,刚刚安装好,打开出现“向程序发送命令时出现错误”,虽然点击确定就可以用了,可总是觉得不 ...
- 打开office时提示错误窗口“向程序发送命令时出现问题”的解决方案
今天同事问了我一件很怪异的事情,说她的office打不开了,如打开word或excel时,突然出现错误提示错误窗口"向程序发送命令时出现问题",分析原因才知道她安装了 AVG pc ...
- windows环境telnet发送命令
telnet *.*.*.* port ,然后crtl+]进入命令模式,使用send发送消息,如:send hello,murphy 常用命令: open : 使用 openhostname 可以建立 ...
- excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法
excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法 office2007应该遇到“向程序发送命令时出现 问题”,设置为以管理员运行也不好用,重装office也不好用,下面介绍下 ...
- Microsoft Word 2007 向程序发送命令时出现问题解决方法
最近在打开Word文档时总是出现“向程序发送命令时出现问题”对话框,而且不确定性,关闭重新打开有时没事了有时还不行, 很让人头疼,经过尝试,把问题解决了 1.问题截图如下: 2.解决方法 1)方法一: ...
- 打开Office2007弹出“向程序发送命令时出现问题” 解决方案
打开Office2007弹出“向程序发送命令时出现问题” 解决方案,试了很多方案,最终还是这种方法帮我解决了问题,分享下,以下地址便是: http://club.excelhome.net/threa ...
- Saltstack 命令行:批量发送命令,返回执行结果
批量发送发送命令符,并返回结果. salt '*' cmd.run 'df -h' ---------------------------------------- Stest1: Filesyste ...
- CAD出现向程序发送命令时出现问题提示解决方法分享
大家有没有遇到在使用cad打开图纸的时候提示向程序发送命令时出现错误的情况呢,如果你在使用cad的时候出现了这个提示,是由于软件的兼容性出现了问题,那么该怎么办呢,下面小编就给大家带来cad打开图纸提 ...
- 自己主动化脚本ssh以及telnet发送命令并退出(windows和linux都适用)
须要安装putty,用到的命令是plink: PuTTY Link: command-line connection utility Unidentified build, Jun 23 2015 1 ...
随机推荐
- P4 PI库安装
repo:Github PI P4Runtime - a control plane framework and tools for the P4 programming language 这个是P4 ...
- 二进制文件和ASCII文件有何区别
二进制文件和ASCII文件(即文本文件)的区别,对于和计算机亲近时间尚短的同学是个难题. 1.一个例子:两种100000 有程序: #include<iostream> using nam ...
- Codeforces Round #307 (Div. 2) C. GukiZ hates Boxes 二分
C. GukiZ hates Boxes time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- c++ 交换两个容器(swap)
#include <iostream> #include <vector> using namespace std; int main () { vector<,); / ...
- python 判断是否是元音字母
def is_vowel(char): all_vowels = 'aeiou' return char in all_vowels print(is_vowel('c')) print(is_vow ...
- Hive 建外链表到 Hbase(分内部表、外部表两种方式)
一. Hive 建内部表,链到hbase :特点:Hive drop表后,Hbase 表同步删除 drop table if exists hbase_kimbo_test1;CREATE TABLE ...
- Android Studio 中实现高德定位并获取相应信息
Android开发项目时常常会遇到定位这个功能,所以写了这篇博客,今天主要讲的高德地图的定位并获取相应信息. 首先导入高德的jar包 选中jar包右键点击 Add As Library, 在buil ...
- uva11149矩阵快速幂
求A+A^1+...+A^n 转换一下变成|A E|,的n+1次方就是|A^(n+1) A^n+...+A+E| |0 E| | 0 ...
- MyBatis Generator去掉生成的注解
是不是很讨厌mybatis Generator帮我们生成代码的时候在Mapper和mapper.xml文件中生成的一大堆注解?今天在看MyBatis Generator代码的时候发现,原来mybati ...
- IOS-网络(数据安全:MD5加密)
// // ViewController.m // IOS_0129_HTTP请求 // // Created by ma c on 16/1/29. // Copyright © 2016年 博文科 ...