多语言展示
当前在线:343今日阅读:26今日分享:39

php如何连接硬件

PHP实现连接设备、通讯和发送命令的方法如下面这串单代码所示
工具/原料
1

php socket

2

TCP/IP

方法/步骤
1

function Send_socket_connect($service_port, $address, $in) {  $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);      return false;      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

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 {    return false;  } }

3

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) {    die('Error when open $com');  }  //向串口发送数据;  fwrite($f, $in);  //关闭端口      fclose($f); }然后运行完上述代码后会转出如下图所示的目标窗口

注意事项

php不是很好实现 其实net的话很简洁一些

推荐信息