PHP连接设备,实现通讯和发送命令
来源:互联网 发布:d5600和d7100 知乎 编辑:程序博客网 时间:2024/05/07 19:33
开发的BS架构的软件(PHP),需要跟设备进行通讯,在此记录一下,欢迎各位指正:
1。 采用php socket技术使用TCP/IP连接设备
参数$service_port 连接端口
参数$address 发送IP地址
参数$in 发送命令
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为返回值
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 发送命令
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 为返回值
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 发送命令
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); //串口操作结束}
function hexToStr($hex) { $string = ""; for ($i = 0; $i < strlen($hex) - 1; $i+=3) { $string.=chr(hexdec($hex[$i] . $hex[$i + 1])); } return $string;}
0 0
- PHP连接设备,实现通讯和发送命令
- Android蓝牙连接设备发送命令失效
- 安卓通讯之《蓝牙单片机通讯助手》②扫描设备、连接设备和双向通讯。
- C# usb Hid 访问上位机USB通讯实例 实现设备在线或者离线和发送接收数据通讯功能
- 容联云通讯实现php的手机发送短信验证
- Netty实现服务端客户端长连接通讯、心跳检测及自定义报文发送(一)
- 设备app共享和通讯
- 向蓝牙设备发送命令
- PHP学习 PDO连接数据库和设备常量的操作
- Android设备与USB设备的连接通讯
- 用PHP实现Soap通讯
- 用php实现soap通讯
- 用PHP实现Soap通讯
- 串口通讯控制器实现之----发送模块
- UnitySocket通讯,实现连个设备进行消息通讯
- 实现不同IP地址段设备通讯
- MFC单文档之串口通讯实现16进制数据的发送和接收
- php实现发送邮件
- 解决thinkphp图片上传生成缩略图背景为黑色的问题
- Newtonsoft.Json中的时间格式详解.
- Linux常用命令之-帮助命令
- 配置环境变量(JDK,SDK)
- CC_ASSERT 或 CCAssert宏 断言跟断点差不多-----------cocos2d-x
- PHP连接设备,实现通讯和发送命令
- 链表节点的增加和删除
- HDU 1176 DP 数塔解决
- map的详细用法
- 平衡二叉树(AVL)
- HDU 1085 Holding Bin-Laden Captive!
- python资源 covering
- eclipse 内存不够用报错Internal Error
- poj 2001