C# .aspx网页获取RFID读卡器HTTP协议提交的访问文件Request获得卡号、机号,Response回应驱动读卡器显示响声
本示例使用的设备:RFID网络WIFI无线TCP/UDP/HTTP可编程二次开发读卡器POE供电语音-淘宝网 (taobao.com)
服务端代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Web.Services;
using Newtonsoft.Json;public partial class HttpReader : System.Web.UI.Page
{public string RepStr = "";protected void Page_Load(object sender, EventArgs e){//Request方式:直接以对象索引的方式获取参数值,不受POST或GET方式影响。//Request.QueryString方式:在客户端使用GET方式进行提交时可以使用此方式获取。高效//Request.Form方式:在客户端使用POST方式进行提交时可以使用此方式进行获取。高效//Request.Params方式:该方式属于多种获取数据的一个集合,包括Cookie,此方式同样不受POST和GET方式影string info = "";string jihao = "";string cardtype = "";string card = "";string Data = "";string dn = "";string Status = "";Int16 cardtype16 = 0;int cardtypecode = 0;int pushortake = 0;string dispstr = "";string ChineseVoice = "[v8]"; //[v8]表示本次播报语音音量,取值范围v1 到 v16try { //GET、POST提交方式下解析获取提交的各项参数if (Request.Params["info"] != null) { info = Request.Params["info"]; } //信息序号if (Request.Params["jihao"] != null) { jihao = Request.Params["jihao"]; } //设备机号(可自编)if (Request.Params["cardtype"] != null){cardtype = Request.Params["cardtype"];} //卡类型,卡状态if (Request.Params["card"] != null) { card = Request.Params["card"]; } //卡序列号if (Request.Params["data"] != null) { Data = Request.Params["data"]; } //扇区内容if (Request.Params["dn"] != null) { dn = Request.Params["dn"]; } //设备硬件序列号,出厂时已固化,全球唯一if (Request.Params["status"] != null) { Status = Request.Params["status"]; } //读卡状态,如密码认证失败为12if (info != "" && jihao != "" && cardtype != "" && card != ""){ cardtype16 = Convert.ToInt16(cardtype, 16);pushortake = cardtype16 / 128; //pushortake=0 表示读卡,>0表示卡离开感应区cardtypecode = cardtype16 % 16; // cardtypecode=1 ID卡,2 HID卡,3 T5557卡,4 EM4305卡,5 IC卡,6 二代身份证,7 是15693卡,IClass" }else //如未获取到有效参数,使用JSON方式解析获取提交的参数{StreamReader sr = new StreamReader(Request.GetBufferlessInputStream());string response = sr.ReadToEnd();RootObject rb = JsonConvert.DeserializeObject<RootObject>(response);info = rb.info; //接收到的数据包号,需回应该包号jihao = rb.jihao; //设备机号(可自编)cardtype = rb.cardtype; //卡类型,卡状态card = rb.card; //接收到的原始16进制卡号,可根据需要自行转换成其他卡号Data = rb.data; //扇区内容dn = rb.dn; //设备硬件序列号,出厂时已固化,全球唯一Status = rb.status; //读卡状态,如密码认证失败为12if (info != "" && jihao != "" && cardtype != "" && card != ""){cardtype16 = Convert.ToInt16(cardtype, 16);pushortake = cardtype16 / 128; //pushortake=0 表示读卡,>0表示卡离开感应区cardtypecode = cardtype16 % 16; // cardtypecode=1 ID卡,2 HID卡,3 T5557卡,4 EM4305卡,5 IC卡,6 二代身份证,7 是15693卡,IClass" }}if (info != "" && card != "") //通过解析获取到了有效的参数,回应驱动读卡器显示文字、蜂鸣响声或播报语音{dispstr = "{" + getChinesecode("卡号") + ":}" + (card + " ").Substring(0, 12) + DateTime.Now.ToString("yy-MM-dd HH:mm:ss"); //显示信息,注意中文汉字一定要转换为设备能显示的编码,其它字母数字符号不需要转换,{}内的信息反白显示if (pushortake > 0){ChineseVoice = ChineseVoice + getChinesecode("卡号") + "[n1]" + card + getChinesecode("离开感应区!"); //TTS语音,注意中文汉字一定要转换为设备能识别的编码,[n1]表示数字播报方式,其它字母数字符号不需要转换 }else{ChineseVoice = ChineseVoice + getChinesecode("读取卡号") + "[n1]" + card;}RepStr = "Response=1"; //Response=1 固定前缀,我们的设备以此来检索返回信息,表示 驱动设备显示和响声RepStr = RepStr + "," + info; //提交的信息序号,一定要对应RepStr = RepStr + "," + dispstr; //读卡器上显示文字RepStr = RepStr + ",20"; //显示时长20秒RepStr = RepStr + ",2"; //蜂鸣器发声种类,取值范围0-12RepStr = RepStr + "," + ChineseVoice; //播报的TTS语音Response.Write(RepStr); //将回应信息传送到读卡器Response.End();}}catch { }}public static string getChinesecode(string inputip) //获取中文编码,显示汉字、TTS中文语音都要转换编码{byte[] Chinesecodearry = System.Text.Encoding.GetEncoding(936).GetBytes(inputip);int codelen = (byte)Chinesecodearry.Length;string hexcode = "";for (int i = 0; i < codelen; i++){if (i % 2 == 0) { hexcode = hexcode + "\\x"; }hexcode = hexcode + Chinesecodearry[i].ToString("X2");}return hexcode;}public class RootObject //json类{public string info { get; set; }public string jihao { get; set; }public string cardtype { get; set; }public string card { get; set; }public string data { get; set; }public string dn { get; set; }public string status { get; set; }}}
前端脚本 :
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="HttpReader.aspx.cs" Inherits="HttpReader" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title>Http读卡器Demo</title>
</head><body><form id="form1" runat="server"><div style="height: 96px"></div></form>
</body>
</html>
相关文章:

C# .aspx网页获取RFID读卡器HTTP协议提交的访问文件Request获得卡号、机号,Response回应驱动读卡器显示响声
本示例使用的设备:RFID网络WIFI无线TCP/UDP/HTTP可编程二次开发读卡器POE供电语音-淘宝网 (taobao.com) 服务端代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.…...

Kali Linux 2023.3 发布
Offective Security 发布了 Kali Linux 2023.3,这是其渗透测试和数字取证平台的最新版本。 Kali Linux 2023.3 中的新工具 除了对当前工具的更新之外,新版本的 Kali 通常还会引入新的工具。 这次,他们是: Calico – 云原生网络…...
如何用Python实现从pdf文件精准抓取数据生成数据库!
要从PDF文件中提取数据并生成数据库,你可以使用Python中的一些库和工具来实现。 1、安装必要的库:确保已安装所需的库。除了之前提到的PyPDF2、pdfminer.six和pdftotext之外,你可能还需要其他的库来处理提取的数据和数据库操作。例如&#x…...

科技资讯|苹果Apple Watch新专利,可根据服装、表带更换表盘颜色
根据美国商标和专利局(USPTO)公示的清单,苹果公司近日获得了一项 Apple Watch 相关的技术专利,最大的亮点在于配备颜色采样传感器,可以根据表带、服装自动变幻变盘颜色和主题。 Apple Watch 正面配备颜色采样传感器&am…...

猜数游戏-Rust版
cargo new guessing_game 创建项目 输入任意内容,并打印出来 main.rs: use std::io; // 像String这些类型都在预先导入的prelude里,如果要使用的不在prelude里,则需要显式导入fn main() { println!("猜数"); println!("…...

从零起步:学习数据结构的完整路径
文章目录 1. 基础概念和前置知识2. 线性数据结构3. 栈和队列4. 树结构5. 图结构6. 散列表和哈希表7. 高级数据结构8. 复杂性分析和算法设计9. 实践和项目10. 继续学习和深入11. 学习资源12. 练习和实践 🎉欢迎来到数据结构学习专栏~从零起步:学习数据结构…...
如何在浏览器中启用 WebGL 以使用 HTML5 3D 查看器
描述 WebCenter 中的 HTML5 3D Collada Viewer(自 14.1 以来新增)要求在浏览器中启用 WebGL。较旧的浏览器可能不支持此功能,或者要求用户首先显式启用此功能。本页介绍如何为所有主要浏览器启用此功能。WebGL 3D 查看器 本文是以下超级用户…...

【计算机协议】第一章——HTTP协议详解
前言 HTTP(Hypertext Transfer Protocol)即超文本传输协议,是一种用于传输超媒体文档(例如HTML)的应用层协议。HTTP协议采用C/S(客户端/服务器)模式,客户端发起请求,服务…...

【FAQ】安防监控视频汇聚平台EasyCVR接入GB国标设备,无法显示通道信息的排查方法
安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…...
Matlab 生成一定信噪比的信号
文章目录 【 1. 信噪比 】【 2. 功率归一化 】2.1 实信号实噪声2.2 实信号复噪声 【 3. 能量归一化 】3.1 实信号实噪声3.2 实信号复噪声 【 4. 小结 】 【 1. 信噪比 】 信噪比公式 1 : S N R 10 ∗ l o g 10 P s P n 信噪比公式1:SNR10*log_{10}\frac…...
[国产MCU]-W801开发实例-定时器
定时器 文章目录 定时器1、定时器介绍2、定时器驱动API3、定时器使用示例本文将详细介绍如何使用W801的定时器模块。 1、定时器介绍 W801的定时器包含一个32-bit自动加载的计数器,该计数器由系统时钟经过分频后驱动。 W801有 6路完全独立定时器。实现了精确的定时时间以及中断…...
基于 CentOS 7 构建 LVS-DR 群集,配置nginx负载均衡。
基于 CentOS 7 构建 LVS-DR 群集。 关闭防火墙 [rootlocalhost ~]# systemctl stop firewalld 安装ifconfig yum install net-tools.x86_64 -y 准备四台虚拟机 IP 用途 19.168.244.144 客户端 192.168.244.145 lvs 192.168.244.148 RS 192.168.244.149 RS 在DS上 …...

大数据——spark一文全知道
1、spark概述 spark是专为大规模数据处理而设计的快速通用计算引擎,与Hadoop的MapReduce功能类似,但它是基于内存的分布式计算框架,存储还是采用HDFS。 MapReduce和Spark的区别 MapReduce的MapReduce之间需要通过磁盘进行数据传递…...

Linux命令200例:telnet用于远程登录的网络协议(常用)
🏆作者简介,黑夜开发者,全栈领域新星创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 &…...

使用 eBPF 在云中实现网络可观测性
可观测性是一种了解和解释应用当前状态的能力,也是一种知道何时出现问题的方法。随着在 Kubernetes 和 OpenShift 上以微服务形式进行云部署的应用程序越来越多,可观察性受到了广泛关注。许多应用程序都有严格的承诺,比如在停机时间、延迟和吞…...

linux安装部署gitlab全教程,包含配置中文
linux安装部署gitlab全教程,包含配置中文 大家好,我是酷酷的韩~ 1.前期准备 安装包下载地址 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 我这里选择的这个gitlab-ce-15.7.3-ce.0.el7.x86_64.rpm 还有一些相关依赖包(地址等审核过我放到…...
软考高级系统架构设计师系列论文八十:论企业信息化战略规划技术
软考高级系统架构设计师系列论文八十:论企业信息化战略规划技术 一、企业信息化相关知识点二、摘要三、正文四、总结一、企业信息化相关知识点 软考高级系统架构设计师:企业信息化战略与实施...
使用ChatGPT构建一个AIML聊天机器人是什么体验
使用ChatGPT构建一个AIML聊天机器人是什么体验,使用ChatGPT将C#代码转换为Swift代码以实现Swift版的Aiml聊天机器人,AIML(全名为Artificial Intelligence Markup Language)是一种基于XML模式匹配的人工智能标记语言,…...

[JavaWeb]【九】web后端开发-SpringBootWeb案例(菜单)
目录 一、准备工作 1.1 需求 1.2 环境搭建 1.2.1 准备数据库&表 1.2.2 创建springboot工程 1.2.3 配置application.properties & 准备对应实体类 1.2.3.1 application.properties 1.2.3.2 实体类 1.2.3.2.1 Emp类 1.2.3.2.2 Dept类 1.2.4 准备对应的Mapper、…...
vue 主组件把日期选择器给子组件props传obj值, 与子组件监听 watch对象或对象属性
1 主组件 1.1 :passObj 这种 非v-model ; change"DateChange"触发事件 <template> <div class"date-picker-panel"><el-date-picker v-model"value2" type"datetimerange" :picker-options"pickerOptions"…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...