Home > Backend Development > PHP Tutorial > PHP implements methods of connecting devices, communicating and sending commands, php commands_PHP tutorial

PHP implements methods of connecting devices, communicating and sending commands, php commands_PHP tutorial

WBOY
Release: 2016-07-12 09:07:24
Original
1445 people have browsed it

PHP implements the method of connecting devices, communicating and sending commands, php command

The example in this article describes the method of PHP implementing connecting devices, communicating and sending commands. Share it with everyone for your reference. The details are as follows:

The BS architecture software (PHP) developed needs to communicate with the device. I will record it here and welcome your corrections:

1. Use php socket technology to connect devices using TCP/IP

Parameter $service_port connection port
Parameter $address sending IP address
Parameter $in Send command

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);
}

Copy after login

Send_socker_xdcoder $buffer is the return value

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;
}

Copy after login

2. Use php socket technology to connect devices using UDP protocol to implement communication and send commands

Parameter $service_port connection port
Parameter $address sending IP address
Parameter $in Send command

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>";
  }
}

Copy after login

Send_socket_xdcoder_udp $buffer is the return value

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>";
  }
}

Copy after login

3. Use RS232 serial port technology to connect devices to achieve communication and send commands

Parameter $com serial port number
Parameter $baudratr baud rate
Parameter $in Send command

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);
  //串口操作结束
}

Copy after login

There is another one about command hexadecimal conversion:

function hexToStr($hex) {
  $string = "";
  for ($i = 0; $i < strlen($hex) - 1; $i+=3) {
    $string.=chr(hexdec($hex[$i] . $hex[$i + 1]));
  }
  return $string;
}

Copy after login

I hope this article will be helpful to everyone’s PHP programming design.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1060913.htmlTechArticleHow PHP realizes connecting devices, communicating and sending commands, php command This article describes how PHP realizes connecting devices and communicating and method of sending commands. Share it with everyone for your reference. Specifically...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template