加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP实现连接设备、通讯和发送命令的方法

发布时间:2020-12-13 02:53:06 所属栏目:PHP教程 来源:网络整理
导读:《PHP实战:PHP实现连接设备、通讯和发送命令的方法》要点: 本文介绍了PHP实战:PHP实现连接设备、通讯和发送命令的方法,希望对您有用。如果有疑问,可以联系我们。 本篇章节讲解PHP实现连接设备、通讯和发送命令的办法.供大家参考研究.具体如下:

《PHP实战:PHP实现连接设备、通讯和发送命令的方法》要点:
本文介绍了PHP实战:PHP实现连接设备、通讯和发送命令的方法,希望对您有用。如果有疑问,可以联系我们。

本篇章节讲解PHP实现连接设备、通讯和发送命令的办法.分享给大家供大家参考.具体如下:PHP实例

开发的BS架构的软件(PHP),需要跟设备进行通讯,在此记录一下,欢迎各位指正:PHP实例

1. 采用php socket技术使用TCP/IP连接设备PHP实例

参数$service_port 连接端口
参数$address 发送IP地址
参数$in 发送命令PHP实例

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,$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为返回值PHP实例

function Send_socket_xdcoder($service_port,$in) {
  //创建 TCP/IP socket
  $socket = socket_create(AF_INET,$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,strlen($in));
  //接收设备命令返回数据
  $buffer = socket_read($socket,1024,PHP_NORMAL_READ);
  //关闭连接
  socket_close($socket);
  //输出返回值
  return $buffer;
}

2. 采用php socket技术使用UDP协议连接设备,实现通讯和发送命令PHP实例

参数$service_port 连接端口
参数$address 发送IP地址
参数$in 发送命令PHP实例

function Send_socket_connect_udp($service_port,$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,strlen($in),$service_port);
  @socket_recvfrom($socket,$buffer,MSG_WAITALL,$service_port);
  //关闭连接
  if (empty($buffer)) {
    echo "<script>alert('网络异常,请检查网络连接!!');</script>";
  }
}

Send_socket_xdcoder_udp? $buffer 为返回值PHP实例

function Send_socket_xdcoder_udp($service_port,$service_port);
  //关闭连接
  socket_close($socket);
  if (!empty($buffer)) {
    return $buffer;
  } else {
    echo "<script>alert('网络异常,请检查网络连接!!');</script>";
  }
}

3. 采用RS232串口技术连接设备,实现通讯和发送命令PHP实例

参数$com? 串口号
参数$baudratr? 波特率
参数$in 发送命令PHP实例

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进制转换的:PHP实例

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实例

《PHP实战:PHP实现连接设备、通讯和发送命令的方法》是否对您有启发,欢迎查看更多与《PHP实战:PHP实现连接设备、通讯和发送命令的方法》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读