【PHP】PHP实现与硬件串口交互,向硬件设备发送指令数据(下)

目录

一、前言

[二、 效果图](#二、 效果图)

三、安装PHP扩展

四、添加模拟串口

五、PHP发送数据给硬件

PHP代码

前端代码


一、前言

上篇文章写到PHP怎么与硬件串口交互之实时接收硬件发送的数据,这里同样是以天平为例,介绍怎么向硬件设备发送数据,

需求:向硬件发送指令等数据,同时能够再次接收到硬件发送回来的信息

【PHP】PHP实现与硬件串口交互,接收硬件发送的实时数据(上)_php串口通信-CSDN博客

二、 效果图

每隔1.5s发送一次数据(右侧),再每个1.5s接收一次数据(左侧)

三、安装PHP扩展

下载并安装dio扩展,下载地址PECL :: Package :: dio 0.2.0 for Windows,注意要与使用的PHP版本保持一致,下载后将php_dio.dll文件拷贝到/Extensions/php/php7.0.9nts/ext/目录下,再打开php.ini,删除掉"extension=dio"前面的分号,如果没有则直接添加即可,最后重启Apache

四、添加模拟串口

使用"VSPD"添加两个模拟串口,详细可参看"【PHP】PHP实现与硬件串口交互,接收硬件发送的实时数据(上)_php串口通信-CSDN博客"

五、PHP发送数据给硬件

后端逻辑:

1、接收前端发送的数据

2、设置参数:com4、baud、data、stop,参数要与上传串口调试工具上的参数一致

3、打开串口,并发送数据

前端逻辑:

1、设置定时器,每1.5s自动发送一次数据

2、计算发送次数

PHP代码

php 复制代码
/**
 * 发送数据 页面
 */
public function put()
{

	return $this->fetch();
}

/**
 * 发送指令
 * com8接收端
 */
public function putCom(){
	$in = input('post.data');
	$end = '\r\n';	//结束符
	
	//定义com接收端口  baud 波特率 data 数据位 stop 停止位  由供应商提供
	$com='COM8'; $baud = '9600'; $data='8';  $stop = '1';

	set_time_limit(0);

	exec('mode '.$com.': baud='.$baud.' data='.$data.' stop='.$stop.' parity=n xon=on',$output);

	//打开串口  O_RDWR读写模式 O_RDONLY只读
	$ck = @fopen($com, 'w+');

	//如果打开串口失败,停止脚本,并输出"打开串口COM3失败"
	if(!$ck){
		return apiResponse('110',"打开串口" . $com . "失败");
	}

	//向串口发送数据;
  	fwrite($ck, $in);

	//关闭端口    
	fclose($ck);
	
	return apiResponse('200','success');

}

前端代码

html 复制代码
<html>
<head>
	<title>实时发送COM串口数据</title>
	<script type="text/javascript" src="/static/index/js/jquery-1.11.3.min.js" ></script>
	<script type="text/javascript" src="/static/index/layui/layui.js"></script>
	<link rel="stylesheet" type="text/css" href="/static/index/layui/css/layui.css">
</head>
<body>
	<fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
	  <legend>实时发送COM串口数据</legend>
	</fieldset>
	 
	<form class="layui-form layui-form-pane" action="" style="width:60%; margin: 0 auto;">
	  
	  	<div class="layui-form-item" >
		    <div class="layui-block" >
		      	<label class="layui-form-label">COM数据</label>
		      	<div class="layui-input-block" >
		        	<input type="text" name="data"  autocomplete="off" class="layui-input" value="">
		      	</div>
		    </div>
	  	</div>

	  	<div class="layui-form-item"  style=" padding: 10px; background-color: #F2F2F2; " >
		  	<div class='layui-card'>
			    <div class='layui-card-header' style="font-size: 18px">发送次数</div>
			    <div class='layui-card-body' id="result" style="font-size: 16px">
				    
			    </div>
		  	</div>
		</div> 

	</form>

</body>

<script>


layui.use(['form','element'], function(){
  var form = layui.form
  ,$ = layui.jquery
  ,element = layui.element;

 // setTimeout(getCom, 1000);
  $(document).ready(function(){
		c = setInterval(getCom,1500);   //每1.5秒执行一次
  });

  // 记录数据是否发生变化
  var change = '0';
  // 记录未发生变化次数
  var flag = 0;

  function getCom() {

  	var data = $("input[name='data']").val()
	  $.ajax({
	  	url:'putCom',
	  	type:'post',
	  	dataType:'JSON',
	  	data:{data:data},
	  	success:function (res) {
	  		// console.log(data)
	  		console.log(res)
	  		if (res.code == '200') {

	  			$('#result').empty();
	  			var html = ''

	  			if (change == res.data) {
	  				flag = 0  //数据发生变化后重置变化次数
	  				// 未发生变化
	  				html = '<span style="color:green">未发送:'+flag+'</span>'
	  			}else{
	  				// 发生了变化
	  				flag++
	  				html = '<span style="color:red">已发送:'+flag+'</span>'
	  			}
	  			$('#result').append(html)
	  		}else{
	  			layer.msg(res.data)
	  		}
	  	}
	  })
  }
})

</script>
</html>

PHP实时接收硬件发送的数据,可查看

【PHP】PHP实现与硬件串口交互,接收硬件发送的实时数据(上)_php串口通信-CSDN博客

相关推荐
yeccheng1 小时前
MySQL 索引超详解:从底层 B+ 树到面试高频考点
java·开发语言·jvm·mysql·面试
联犀1 小时前
纯 Go 的 CAD 开源库 go-cad:直接解析 DWG/DXF,现在也能导出 PDF
开发语言·golang·pdf
国科安芯1 小时前
从遥控到自治:ASP4644S2B支撑星载电源健康管理与容错配电
网络·单片机·嵌入式硬件·安全·dcdc·低轨卫星·商业航天
zjxtxdy2 小时前
C++面向对象程序开发-类与对象
开发语言·c++
rhythm-ring2 小时前
《汽车热管理系统:电子水泵单线PWM双向诊断机制》
单片机·嵌入式硬件·汽车
Eyfcom3 小时前
〖物联网终端实战 01〗UWB 室内高精度定位:仓储 AGV 与人员的厘米级轨迹追踪
物联网·算法·物流系统·快递系统·跨境物流快递系统·物联网终端实战
测试界的小码农4 小时前
【Linux 命令实战(03):文件创建、复制、移动与删除,掌握 touch、mkdir、cp、mv、rm】
linux·服务器·php
qq_406981034 小时前
c++拷贝构造函数
开发语言·c++
爱喝雪碧的可乐4 小时前
MATLAB
开发语言·算法·matlab
Dev_XH5 小时前
【成品设计】基于物联网的车间安全生产监控系统设计
stm32·单片机·嵌入式硬件·物联网