【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博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习500问——Chapter02:机器学习基础(3)

文章目录 2.10 主成分分析&#xff08;PCA&#xff09; 2.10.1 主成分分析&#xff08;PCA&#xff09;思想总结 2.10.2 图解PCA核心思想 2.10.3 PCA算法推理 2.10.4 PCA算法流程总结 2.10.5 PCA算法主要优缺点 2.10.6 降维的必要性及目的 2.10.7 KPCA与PCA的区别 2.11 模型评估…

利用excel文件增量同步一个库的数据并自动校正两端数据库条数不一致

利用excel文件增量同步一个库的数据并自动校正两端数据库条数不一致 现在有sqlserver和mysql两个库上的表在进行同步&#xff0c;sqlserver上的是源表&#xff0c;mysql上是目标表。 我们就把sqlserver上的数据同步到mysql上 mysql 是没有数据的。 sqlserver的三个表只是创建了…

利用Python自动化日常任务

在快节奏的现代生活中&#xff0c;时间就是一切。幸运的是&#xff0c;Python提供了一系列强大的库和工具&#xff0c;可以帮助我们自动化那些乏味且重复的任务&#xff0c;从而释放我们的时间&#xff0c;让我们可以专注于更有创造性和有意义的工作。下面&#xff0c;我们将探…

6、Linux-服务管理、权限管理和授权(sudo权限)

一、服务管理 systemctl list-unit-files&#xff1a;查看服务systemctl start 服务名&#xff1a;启动服务systemctl stop 服务名&#xff1a;关闭服务systemctl restart 服务名&#xff1a;重启服务systemctl status 服务名&#xff1a;查看服务状态systemctl enable 服务名…

BioTech - 药物晶型预测与剂型设计 概述

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/136441046 药物晶型预测与剂型设计是指利用计算机模拟和优化药物分子在固态形式下的结构、性质和稳定性&#xff0c;以及与制剂工艺和质…

Python实现微信电脑版微信支付收款监听及支付回调通知

摘要 为什么要监听收款&#xff1f;那是因为现在还有人在使用微信的收款码、商业码、赞赏码实现免签支付&#xff0c;这类实现方法的最终方案还是监听收款结果。 技术原理 通过Python实时解析微信电脑版控件的文本内容来获取信息。不需要Hook和抓包&#xff0c;也不是走任何…

[DevOps云实践] 跨AWS账户及Region调用Lambda

[DevOps云实践] 跨AWS账户及Region调用Lambda 本文將幫大家理清一下幾個問題: 如何跨不同AWS賬戶,不同Region來調用Lambda? 不同Lambda之間如何互相調用?有時我們希望我們的Lambda脚本能夠運行在多個AWS賬戶中的不同Region下,但是,我們還不希望每個下面都去建立一個運行…

温湿度传感器SHT21

SHT21是一款基于IIC的温湿度传感器&#xff0c;它的引脚及定义如下&#xff1a; 标准的IIC器件&#xff0c;没有其他多余的引脚&#xff0c;应用框图如下&#xff1a; 温度的测量范围是-40到125℃&#xff0c;湿度测量范围0-100%RH&#xff0c;具体参数及采样精度见下图&#x…

HM_2019在面积不变情况下编辑网格

首先&#xff0c;应该保存其形状&#xff0c;计算他的面积。让面积不变作为一个约束&#xff0c;然后进行网格的形变。

【网站项目】154大学生创新创业平台竞赛管理子系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

d2-crud-plus 使用小技巧(二)—— 路由跳转查询

需求 项目中要在a.vue界面点击表格中数据&#xff0c;携带参数跳转到b.vue界面&#xff0c;并进行查询。需要在d2-crud-plus框架下实现。 解决方法 使用插槽将要点击的数据添加上点击事件&#xff0c;在点击事件中添加路由跳转&#xff0c;并携带参数。 在目标界面使用对外…

GIN与Echo:选择正确Go框架的指南

您是否在Go中构建Web应用&#xff1f;选择正确的框架至关重要&#xff01;GIN和Echo是两个热门选择&#xff0c;每个都有其优势和特点。本指南将详细介绍每个框架的特性、速度、社区热度以及它们各自擅长的项目类型。最后&#xff0c;您将能够为您的下一个Web项目选择完美的框架…

C++11常用知识分享(一)【列表初始化 || 简化声明 || 范围for || 左右值 || 可变参数模板】

目录 一. 列表初始化 1&#xff09;用法 2) initializer_list 小节&#xff1a; 二&#xff0c;简化声明 1) &#xff0c;auto 2) &#xff0c;decltype类 3)&#xff0c;nullptr 三&#xff0c;范围for 四&#xff0c;C11后&#xff0c;STL容器变化 五&#xff0c…

一篇文章教会你如何在IOS真机上完美运行React Native

一篇文章教会你如何在IOS真机上完美运行React Native 项目初始化项目配置可能遇到的问题没有账号也没有Team设备上没有打开开发者模式&#xff0c;也没有信任开发者证书 无线调试 项目初始化 在终端使用**npx react-native init ProjectName**初始化React Native项目。 进入项…

力扣550 游戏玩法分析 IV

目录 题目描述 思路整理 1. 首次登录日期 2. 第二天登录 3. 计算比率 实现思路 完整代码及解释 题目描述 Table: Activity ----------------------- | Column Name | Type | ----------------------- | player_id | int | | device_id | int | | ev…

117.移除链表元素(力扣)

题目描述 代码解决 class Solution { public:ListNode* removeElements(ListNode* head, int val) {//删除头节点while(head!NULL&&head->valval){ListNode*tmphead;headhead->next;delete tmp;}//删除非头节点ListNode*curhead;while(cur!NULL&&cur-&g…

安卓虚拟机ART和Dalvik

目录 一、JVM和Dalvik1.1 基于栈的虚拟机字节码指令执行过程 1.2 基于寄存器的虚拟机 二、ART与Dalvikdex2aotAndroid N的运作方式 三、总结 一、JVM和Dalvik Android应用程序运行在Dalvik/ART虚拟机&#xff0c;并且每一个应用程序对应有一个单独的Dalvik虚拟机实例。 Dalvik…

Vue.js 实用技巧:深入理解 Vue.set 方法

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

20 个不同的 Python 函数实例

Python 是一种广泛使用的高级编程语言&#xff0c;其函数是 Python 编程中至关重要的概念之一。函数是一段可以重复使用的代码块&#xff0c;可以接收输入参数并返回输出结果。使用函数能够提高代码的可读性、可维护性和重用性。 基础知识 在 Python 中&#xff0c;函数使用关…

【如何在Docker中,修改已经挂载的卷(Volume)】

曾梦想执剑走天涯&#xff0c;我是程序猿【AK】 提示&#xff1a;添加投票&#xff01;&#xff01;&#xff01; 目录 简述概要知识图谱 简述概要 如何在Docker中&#xff0c;修改已经挂载的卷&#xff08;Volume&#xff09; 知识图谱 在Docker中&#xff0c;修改已经挂载…