【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代码

/**
 * 发送数据 页面
 */
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>
<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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/429266.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL高可用性攻略:快速搭建MySQL主从复制集群 !

MySQL高可用性攻略&#xff1a;快速搭建MySQL主从复制集群 &#xff01; MySQL基础知识&#xff1a;介绍MySQL数据库的基本概念和常用命令&#xff0c;如何创建数据库、表、用户和权限管理等。 MySQL安装教程&#xff1a;Centos7 安装MySQL5.7.29详细安装手册 MySQL数据类型&…

【仿真基本功】【PyTorch】从头安装PyTorch(GPU版本)【2024/03/03更新】

【仿真基本功】【PyTorch】从头安装PyTorch&#xff08;GPU版本&#xff09;【2024/03/03更新】 安装步骤1. 安装Anaconda2. 查看显卡对CUDA版本的支持3. 查看PyTorch的安装需求4. 安装PyTorcha) 配置新环境b) 进入新环境c) 按照CUDA版本要求&#xff0c;必须小于等于显卡支持的…

初学arp欺骗

首先准备一台靶机这里用虚拟机的win10 已知网关与ip地址&#xff08;怕误伤&#xff09; 现在返回kali从头开始 首先探测自己的网关 然后扫内网存活的ip 发现有3台 用nmap扫一下是哪几台 成功发现我们虚拟机的ip 现在虚拟机可以正常访问网络 接下来直接开梭 ip网关 返回虚拟机…

# 自然语言处理: 第十三章P-tuing系列之P-tuning V1

项目地址: P-Tuning 论文地址: [2103.10385] GPT Understands, Too (arxiv.org) 理论基础 正如果上一节介绍LoRA(自然语言处理: 第十二章LoRA解读_lora自然英语处理-CSDN博客)一样,本次介绍的在21年由清华团推提出来的 P-Tuning V1系列也属于PEFT(参数高效微调系列)里的一种&…

重庆有哪些媒体资源?活动展会媒体邀约

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 重庆作为中国的一个直辖市&#xff0c;拥有丰富的媒体资源&#xff0c;涵盖电视台、广播电台、报纸、杂志以及网络媒体等各个领域。这些媒体不仅是传播新闻和信息的重要渠道&#xff0c;…

Elasticsearch:向量相似度计算 - 可笑的速度

作者&#xff1a;Chris Hegarty 任何向量数据库的核心都是距离函数&#xff0c;它确定两个向量的接近程度。 这些距离函数在索引和搜索期间执行多次。 当合并段或在图表中导航最近邻居时&#xff0c;大部分执行时间都花在比较向量的相似性上。 对这些距离函数进行微观优化是值…

昇腾芯片解析:华为自主研发的人工智能处理器全面分析

在当今科技发展的浪潮中&#xff0c;昇腾芯片作为一种新兴的处理器&#xff0c;正引起广泛的关注和讨论。升腾芯片究竟是由哪家公司生产的&#xff1f;这个问题一直困扰着许多人。下面小编将全面介绍、分析升腾芯片的生产商及各类参数、应用&#xff0c;以便读者对其有更全面的…

【神经网络与深度学习】时间卷积网络(TCN)

概述 时间卷积网络&#xff08;Temporal Convolutional Network&#xff0c;TCN&#xff09;是一种用于处理时序数据的深度学习模型。它基于卷积神经网络&#xff08;CNN&#xff09;的思想&#xff0c;通过卷积操作来提取和学习时序数据中的特征&#xff0c;并在一系列时序预…

MyCAT学习——在openEuler22.03中安装MyCAT2(网盘下载版)

准备工作 因为MyCAT 2基于JDK 1.8开发。也需要在虚拟机中安装JDK&#xff08;JDK官网就能下载&#xff0c;我这提供一个捷径&#xff09; jdk-8u401-linux-x64.rpmhttps://pan.baidu.com/s/1ywcDsxYOmfZONpmH9oDjfw?pwdrhel下载对应的tar安装包,以及对应的jar包 安装程序包…

C++:Vector的模拟实现

创作不易&#xff0c;感谢三连 &#xff01;&#xff01; 一&#xff0c;前言 在学习string类的时候&#xff0c;我们可能会发现遍历的话下标访问特别香&#xff0c;比迭代器用的舒服&#xff0c;但是下标其实只能是支持连续的空间&#xff0c;他的使用是非常具有局限性的&am…

开发一套小程序所需的费用取决于多个因素

随着移动互联网的发展&#xff0c;小程序已经成为许多企业和个人推广业务和服务的重要工具。 不过&#xff0c;对于很多想要开发小程序的人来说&#xff0c;最大的疑问就是开发一套小程序要花多少钱。 这个问题的答案并不是固定的&#xff0c;因为开发一个小程序的成本取决于几…

Linux 学习笔记(12)

十二、 系统服务 1 、系统服务分类&#xff0c;根据其使用的方法来分&#xff0c;可以被分为三类 a、由 init 控制的服务&#xff1a;基本都是系统级别的服务&#xff0c;运行级别这一章讲的就是这一类的服务 b、由 System V 启动脚本启动的服务&#xff1a;和我们打交道最多…

紧跟潮流,再整一个短剧搜索网站

前面一大批的转存量太大了&#xff0c;有些小伙伴用不上&#xff0c;所以整了个搜索网站&#xff0c;输入关键词搜索即可。 搜短剧 http://wjsyyx.top/sdj/ 界面依旧主打朴实无华&#xff0c;搜索一步到位。 ▼ 网站界面 ▼ 搜索结果 剩下的就都会了。 ▼ 往期推荐 【Python】…

NLP_文本数据分析_3(代码示例)

目标 了解文本数据分析的作用.掌握常用的几种文本数据分析方法. 1 文件数据分析介绍 文本数据分析的作用: 文本数据分析能够有效帮助我们理解数据语料, 快速检查出语料可能存在的问题, 并指导之后模型训练过程中一些超参数的选择. 常用的几种文本数据分析方法: 标签数量分布句…

CMU 10-414/714: Deep Learning Systems --hw0

hw0 宏观上的步骤: softmax loss: 实现softmax loss代码 概念 softmax就是将结果映射到0~1之间,且所有结果相加为1(概率形式)cross-entropy loss就是计算 p ( x ) log ⁡ q ( x ) p(x)\log {q(x)} p(x)logq(x),此值可用于衡量实际输出与期望输出的距离,进而衡量预测模…

【蓝牙协议栈】【BR/EDR】【AVDTP】音视频分布传输协议

1. AVDTP概念 AVDTP即 AUDIO/VIDEO DISTRIBUTION TRANSPORT PROTOCOL(音视频分配传输协议),主要负责 A/V stream的协商、建立及传输程序,还指定了设备之前传输A/V stream的消息格式. AVDTP的传输机制和消息格式是以 RTP为基础的。RTP由 RTP Data Transfer Protocol (RTP)和…

小迪安全31WEB 攻防-通用漏洞文件上传js 验证mimeuser.ini语言特性

#知识点&#xff1a; 1、文件上传-前端验证 2、文件上传-黑白名单 3、文件上传-user.ini 妙用 4、文件上传-PHP 语言特性 #详细点&#xff1a; 检测层面&#xff1a;前端&#xff0c;后端等 2、检测内容&#xff1a;文件头&#xff0c;完整性&#xff0c;二次渲染…

【使用imgaug库调整图像大小并修改对应的XML标签框】

使用imgaug库可以方便地进行图像增强操作&#xff0c;包括调整图像大小。以下是使用imgaug库调整图像大小并修改对应的XML标签框的示例脚本&#xff1a; 注意修改输入文件夹路径、输出文件夹路径和目标尺寸为自己内容。 input_folder "path/to/your/input_folder" …

[LeetBook]【学习日记】数组内乘积

题目 按规则计算统计结果 为了深入了解这些生物群体的生态特征&#xff0c;你们进行了大量的实地观察和数据采集。数组 arrayA 记录了各个生物群体数量数据&#xff0c;其中 arrayA[i] 表示第 i 个生物群体的数量。请返回一个数组 arrayB&#xff0c;该数组为基于数组 arrayA …

PaddleOCR基于PPOCRv4的垂类场景模型微调——手写文字识别

PaddleOCR手写文字识别 一. 项目背景二. 环境配置三. 数据构造四. 模型微调五. 串联推理六. 注意事项七. 参考文献 光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;&#xff0c;ORC是指对包含文本资料的图像文件进行分析识别处理&#xff0c;获取文字…