当前位置: 首页 > news >正文

PHP实现轻量级WEB服务器接收HTTP提交的RFID刷卡信息并回应驱动读卡器显示播报语音

 本示例使用的读卡器:RFID网络WIFI无线TCP/UDP/HTTP可编程二次开发读卡器POE供电语音-淘宝网 (taobao.com)

<?php
mb_http_output('utf-8');
$port=88;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$bool = socket_bind($socket, "0.0.0.0", $port);
if($bool)echo "Server is listening on port:".$port."\n";
else{echo "Socket bind port:".$port." Error!";exit;
}while($bool){try {$bool = socket_listen($socket);if (!$bool) {echo "LISTEN ERROR:" . socket_strerror(socket_last_error()) . '\n';socket_close($socket);}$new_socket = socket_accept($socket);if (!$new_socket) {$bool=false;socket_close($socket);echo "ACCPET ERROR:" . socket_strerror(socket_last_error()) . '\n';}$string = socket_read($new_socket, 1024);$data = request($string);if(substr($data,0,10)=="Response=1") {$num = socket_write($new_socket, $data);if ($num == 0)echo "WRITE ERROR:" . socket_strerror(socket_last_error()) . "\n";}echo $data . "\n\n";socket_close($new_socket);}catch(Exception $e1) {echo "Server Err:".$e1."\n";}
}/* [读取get或post请求中的包序号、机号、卡号、卡类型、设备序号、读卡状态等,返回相应的字符串驱动读卡器显示文字及播报语音] */
function request($string)
{$info="";$card="";$request="";$ResponseStr="";try {echo $string . "\n";$requestmode = substr($string, 0, 4);if ($requestmode == "GET ") {$begin = stripos($string, "?") + 1;$end = stripos($string, "HTTP/1.1");$request = substr($string, $begin, $end - $begin);} elseif ($requestmode == "POST") {$pattern = "/\s+/";$FieldsList = preg_split($pattern, $string);$conuts = count($FieldsList);$isjson = stripos($string, "application/json");$request = $FieldsList[$conuts - 1];if ($isjson > 0) {          //可以直接使用JSON来解板,此处统一替换成字符串处理$request = str_replace("{", "", $request);$request = str_replace("}", "", $request);$request = str_replace("\"", "", $request);$request = str_replace(":", "=", $request);$request = str_replace(",", "&", $request);}}$Fields = explode("&", $request);$conuts = count($Fields);for ($p = 0; $p < $conuts; $p++) {$para = explode("=", $Fields[$p]);switch ($para[0]) {case "info":$info = $para[1];break;case "jihao":$jihao = $para[1];break;case "cardtype":$cardtype = $para[1];$typenum = hexdec($cardtype) % 16;                  //typenum=1 ID卡,2 HID卡,3 T5557卡,4 EM4305卡,5 IC卡,6 二代身份证,7 是15693卡,IClass"$pushortake = intval(hexdec($cardtype) / 128);  //pushortake=0 表示读卡,>0表示卡离开感应区break;case "card":$card = $para[1];break;case "data":$data = $para[1];break;case "dn":$dn = $para[1];break;case "status":$status = $para[1];break;}}if(strlen($info)>0 and strlen($info)>0) {if ($pushortake == 0)   //播报的中文语音,[v8]表示语音大小,取值v1 到 v16, TTS中文语音要转换编码$ChineseVoice = "[v8]" . GetChineseCode("读取卡号[n1]") . $card;else$ChineseVoice = "[v8]" . GetChineseCode("卡号[n1]") . $card . GetChineseCode("离开感应区");//此处可加入业务对数据库的查询、删除、增加、修改等操作,结果以文字、语音信息回应$DisplayStr = "{" . GetChineseCode("卡号") . ":}";  //显示的文字,{}内文字可以高亮显示,中文必须转换编码,英文字符、数字等不需要转换$DisplayStr = $DisplayStr . substr($card . "        ", 0, 12);$DisplayStr = $DisplayStr . substr(date('Y-m-d H:i:s', time()), 2, 17);//Response=1是固定的回应头信息+接收的包序号+显示文字+显示延时秒数+蜂鸣响声代码+TTS语音$ResponseStr = "Response=1," . $info . "," . $DisplayStr . ",20,1," . $ChineseVoice;}return $ResponseStr;}catch (Exception $e1) {echo "Request ERR:".$e1."\n";}
}//获取中文汉字GB2312编码,显示中文、TTS中文语音必须转换编码
function GetChineseCode($inputstr){if(mb_detect_encoding($inputstr, 'UTF-8', true) === true)$gbkstr=iconv("UTF-8","GB2312",$inputstr);      //中文必段强制使用GB2312编码格式else$gbkstr=$inputstr;$strlens=strlen($gbkstr);$hexcode="";for($i=0;$i<$strlens;$i++){if($i % 2 ==0) {$hexcode = $hexcode . "\\x";}$byte = ord($gbkstr[$i]);$b=substr('00'.dechex($byte ),-2);$hexcode=$hexcode.$b;}return $hexcode;
}

相关文章:

PHP实现轻量级WEB服务器接收HTTP提交的RFID刷卡信息并回应驱动读卡器显示播报语音

本示例使用的读卡器&#xff1a;RFID网络WIFI无线TCP/UDP/HTTP可编程二次开发读卡器POE供电语音-淘宝网 (taobao.com) <?php mb_http_output(utf-8); $port88; $socket socket_create(AF_INET, SOCK_STREAM, SOL_TCP); $bool socket_bind($socket, "0.0.0.0",…...

Neo4j之with基础

WITH 语句在 Cypher 查询中用于将之前的查询结果传递给后续的查询操作。它可以用来控制查询的流程&#xff0c;并且常常与其他语句如 MATCH、RETURN、CREATE、DELETE 等一起使用。以下是一些常用的示例和解释&#xff1a; 基本用法&#xff1a; MATCH (p:Person) WITH p RETU…...

60页数字政府智慧政务大数据资源平台项目可研方案PPT

导读&#xff1a;原文《60页数字政府智慧政务大数据资源平台项目可研方案PPT》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 项目需求分析 项目建设原则和基本策略…...

循环神经网络RNN完全解析:从基础理论到PyTorch实战

目录 一、循环神经网络全解1.1 什么是循环神经网络网络结构工作原理数学模型RNN的优缺点总结 1.2 循环神经网络的工作原理RNN的时间展开数学表述信息流动实现示例梯度问题&#xff1a;梯度消失和爆炸总结 1.3 循环神经网络的应用场景文本分析与生成1.3.1 自然语言处理1.3.2 机器…...

【SA8295P 源码分析】52 - 答疑之 QNX 创建镜像、Android修改CMDLINE

【SA8295P 源码分析】52 - 答疑之 QNX 创建镜像、Android修改CMDLINE 一、QNX 侧创建 img 镜像二、QNX 侧指定只编译某一个版本三、Android定制修改selinux权限,user版本采用enforcing,userdebug版本permissive系列文章汇总见:《【SA8295P 源码分析】00 - 系列文章链接汇总》…...

网络安全法律

立法的必要性&#xff1a;网络渗透&#xff0c;网络入侵&#xff0c;网络诈骗&#xff0c;网上钓鱼侵犯知识产权&#xff0c;宣传恐怖主义&#xff0c;极端主义等伤害共鸣利益的行为越发猖狂 信息系统运维安全管理规定&#xff08;范文&#xff09;| 资料 过程: 14-16 草案初…...

Redis缓存问题(穿透, 击穿, 雪崩, 污染, 一致性)

目录 1.什么是Redis缓存问题&#xff1f; 2.缓存穿透 3.缓存击穿 4.缓存雪崩 5.缓存污染&#xff08;或满了&#xff09; 5.1 最大缓存设置多大 5.2 缓存淘汰策略 6.数据库和缓存一致性 6.1 4种相关模式 6.2 方案&#xff1a;队列重试机制 6.3 方案&#xff1a;异步更新缓…...

网络时代拟态环境的复杂化

信息在网络上的制作、编码、传播机制和传统媒介有本质的区别&#xff0c;即传播者和 受传者的角色交叉&#xff0c;而且互联网本身可看作另一个有别于现实环境的虚拟世界&#xff0c;因 此网络媒介所营造出的拟态环境在一定程度上独立于传统大众传播的拟态环境。 一个是传统…...

湘潭大学 湘大 XTU OJ 1055 整数分类 题解(非常详细)

链接 整数分类 题目 Description 按照下面方法对整数x进行分类&#xff1a;如果x是一个个位数&#xff0c;则x属于x类&#xff1b;否则将x的各位上的数码累加&#xff0c;得到一个新的x&#xff0c;依次迭代&#xff0c;可以得到x的所属类。比如说24&#xff0c;246&#…...

什么是视频的编码和解码

这段描述中&#xff0c;视频解码能力和视频编码能力指的是不同的处理过程。视频解码是将压缩过的视频数据解开并还原为可播放的视频流&#xff0c;而视频编码是将原始视频数据压缩成更小的尺寸&#xff0c;以减少存储空间和传输带宽。在这个上下文中&#xff0c;解码能力和编码…...

LeetCode 2681. Power of Heroes【排序,数学,贡献法】2060

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…...

AVL树的讲解

算法拾遗三十八AVL树 AVL树AVL树平衡性AVL树加入节点AVL删除节点AVL树代码 AVL树 AVL树具有最严苛的平衡性&#xff0c;&#xff08;增、删、改、查&#xff09;时间复杂度为O&#xff08;logN&#xff09;&#xff0c;AVL树任何一个节点&#xff0c;左树的高度和右树的高度差…...

Unity 之 Input类

文章目录 总述具体介绍 总述 Input 类是 Unity 中用于处理用户输入的重要工具&#xff0c;它允许您获取来自键盘、鼠标、触摸屏和控制器等设备的输入数据。通过 Input 类&#xff0c;您可以轻松地检测按键、鼠标点击、鼠标移动、触摸、控制器按钮等用户输入事件。以下是关于 I…...

亚信科技AntDB数据库连年入选《中国DBMS市场指南》代表厂商

近日&#xff0c;全球权威ICT研究与顾问咨询公司Gartner发布了2023年《Market Guide for DBMS, China》&#xff08;即“中国DBMS市场指南”&#xff09;&#xff0c;该指南从市场份额、技术创新、研发投入等维度对DBMS供应商进行了调研。亚信科技是领先的数智化全栈能力提供商…...

AMBA总线协议(3)——AHB(一)

目录 一、前言 二、什么是AHB总线 1、概述 2、一个典型的基于AHB总线的微处理器架构 3、基本的 AHB 传送特性 三、AMBA AHB总线互联 四、小结 一、前言 在之前的文章中我们初步的了解了一下AMBA总线中AHB,APB,AXI的信号线及其功能&#xff0c;从本文开始我们…...

Git commit与pull的先后顺序

Git commit与pull的先后顺序_git先pull再commit_Mordor Java Girl的博客-CSDN博客 ​ 编辑yucoang2020.04.21 回复 28 先pull再commit的话, 你的commit也就不再纯粹了. 这一个commit不再是"你所编辑的xxx功能, 而是"别人所编辑的你所编辑的xxx". 我认为提交历…...

HarmonyOS/OpenHarmony应用开发-ArkTS语言渲染控制ForEach循环渲染

ForEach基于数组类型数据执行循环渲染。说明&#xff0c;从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使用。 一、接口描述 ForEach(arr: any[], itemGenerator: (item: any, index?: number) > void,keyGenerator?: (item: any, index?: number) > stri…...

Powered by Paraverse | 平行云助力彼真科技打造演出“新物种”

01 怎么看待虚拟演出 彼真科技 我们怎么看待虚拟演出&#xff1f; 虚拟演出给音乐人或者音乐行业带来了哪些新的机会&#xff1f;通过呈现一场高标准的虚拟演出&#xff0c;我们的能力延伸点在哪里&#xff1f; 先说一下我们认知里的虚拟演出的本质&#xff1a; 音乐演出是一…...

企微配置回调服务

1、企微配置可信域名 2、企微获取成员userID 3、企微获取用户敏感数据 4、企微配置回调服务 文章目录 一、简介1、概述2、相关文档地址 二、企微配置消息服务器1、配置消息接收参数2、参数解析3、参数拼接规则 三、代码编写—使用已有库1、代码下载2、代码修改3、服务代码编写 …...

机器人远程控制软件设计

机器人远程控制软件设计 That’s all....

【AI+教育】告别“硬啃”长文,它把文档直接变成你的专属视频课

在这个信息大爆炸的时代,我们最不缺的就是资料:网盘里屯满的行业报告、收藏了却从未打开的学术论文、买来盖泡面的大部头教材……知识就在那里,但“学进去”实在太难了。 秘塔推出的“今天学点啥”,就是为了解决这个痛点而生的。它的核心逻辑非常简单粗暴:你把看不进去的文…...

小白程序员必看:收藏这份上下文工程指南,轻松玩转大模型!

本文深入浅出地介绍了上下文工程在大语言模型中的重要性&#xff0c;阐述了指令、示例、知识、记忆、工具和安全护栏等六种上下文类型。文章详细解析了上下文工程的四个基本阶段&#xff1a;撰写上下文、选择上下文、压缩上下文和隔离上下文&#xff0c;并强调了上下文窗口的作…...

SLAM Toolbox应用宝典:从技术原理到实战落地的全面指南

SLAM Toolbox应用宝典&#xff1a;从技术原理到实战落地的全面指南 【免费下载链接】slam_toolbox Slam Toolbox for lifelong mapping and localization in potentially massive maps with ROS 项目地址: https://gitcode.com/gh_mirrors/sl/slam_toolbox SLAM Toolbox…...

终极指南:用VizTracer可视化Python代码执行的完整教程

终极指南&#xff1a;用VizTracer可视化Python代码执行的完整教程 【免费下载链接】viztracer VizTracer is a low-overhead logging/debugging/profiling tool that can trace and visualize your python code execution. 项目地址: https://gitcode.com/gh_mirrors/vi/vizt…...

Matlab中的QRBiGRU分位数回归双向门控循环单元模型:多图输出与多指标评估的时间序列区间预测

Matlab实现基于QRBiGRU分位数回归双向门控循环单元的时间序列区间预测模型&#xff1a; 1.Matlab实现基于QRBiGRU分位数回归双向门控循环单元的时间序列区间预测模型 2.多图输出、多指标输出(MAE、RMSE、MSE、R2)&#xff0c;多输入单输出&#xff0c;含不同置信区间图、概率密…...

CentOS 7.6 + Intel Parallel Studio XE 2017:手把手搞定VASP 5.4.4编译环境(附License激活避坑指南)

CentOS 7.6环境下Intel编译器与VASP 5.4.4的深度配置实战 在计算材料科学领域&#xff0c;VASP作为电子结构计算的黄金标准工具&#xff0c;其性能高度依赖底层编译环境的优化。本文将带您深入探索如何在CentOS 7.6系统上&#xff0c;通过Intel Parallel Studio XE 2017构建高性…...

告别格式转换烦恼!Marker让文档转换效率提升5倍

告别格式转换烦恼&#xff01;Marker让文档转换效率提升5倍 【免费下载链接】marker 一个高效、准确的工具&#xff0c;能够将 PDF 和图像快速转换为 Markdown、JSON 和 HTML 格式&#xff0c;支持多语言和复杂布局处理&#xff0c;可选集成 LLM 提升精度&#xff0c;适用于学术…...

HuTool代理请求遇阻:深入解析HTTP/1.1 407 Proxy Authentication Required的成因与实战解决方案

1. 当HuTool遇上407&#xff1a;代理认证失败的典型场景 最近在项目中使用HuTool发送HTTPS请求时&#xff0c;突然遇到一个让人头疼的错误——HTTP/1.1 407 Proxy Authentication Required。这个错误就像高速公路上的收费站&#xff0c;明明已经交了通行费&#xff08;设置了代…...

OpenAI Agent SDK实战:5分钟搞定MCP协议接入(附完整代码)

OpenAI Agent SDK与MCP协议深度整合实战指南 在当今AI技术快速迭代的背景下&#xff0c;工具链的标准化与互操作性成为开发者面临的核心挑战之一。OpenAI推出的Agent SDK与MCP协议组合&#xff0c;为构建可扩展的智能体系统提供了工业级解决方案。本文将带您从零开始&#xff0…...

效率倍增:用快马生成jdk一键配置脚本与docker环境模板

效率倍增&#xff1a;用快马生成JDK一键配置脚本与Docker环境模板 每次新换电脑或者重装系统&#xff0c;最头疼的就是重新配置开发环境。特别是Java开发&#xff0c;光是下载JDK、配置环境变量就得折腾半天。最近发现用InsCode(快马)平台可以快速生成自动化脚本&#xff0c;把…...