C#、JavaScript、VBScript解析JSON数据源码
本示例使用设备:WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com)
C#解析JSON数据
string dispstr = "{" + getChinesecode("扫码") + ":}" + data; //显示信息,注意中文汉字一定要转换为设备能显示的编码,其它字母数字符号不需要转换,{}内的信息反白显示
string ChineseVoice = getChinesecode("扫码") + data;string jsonText = "{\"Response\":\"json\",\"infotype\":\"1\""; //固定前缀,我们的设备以此来检索返回信息,表示 驱动设备显示和响声
jsonText = jsonText + ",\"info\":\"" + info + "\""; //提交的信息序号,一定要对应
jsonText = jsonText + ",\"disp\":\"" + dispstr + "\\n\\n\""; //显示文字,注意中文汉字一定要转换为设备能显示的编码,其它字母数字符号不需要转换,{}内的信息反白显示
jsonText = jsonText + ",\"dispdelay\":\"20\""; //显示时长20秒
jsonText = jsonText + ",\"beeptype\":\"1\""; //蜂鸣器发声种类,取值范围0-12
jsonText = jsonText + ",\"voicetype\":\"" + ChineseVoice + "\""; //播报的TTS语音
jsonText = jsonText + ",\"k1delay\":\"20\""; //第1继电器开启延时单位,每1个单位延时25mm,20*25表示500mm,取值为0表示关闭继电器
jsonText = jsonText + ",\"k2delay\":\"20\"}"; //第2继电器开启延时单位,以,分隔,总计可以控制8个继电器string disp=getjsonval(jsonText,"disp");public static string getjsonval(string totalstr, string namestr) //JSON解析
{string valustr = "";totalstr = totalstr.Replace("{", "");totalstr = totalstr.Replace("}", "");totalstr=totalstr.Replace ("\"","");string[] dataArray = totalstr.Split(new char[2] { ',', ',' });if (dataArray.GetUpperBound(0) > 0){for (int i = 0; i < dataArray.Length; i++){string[] dataArray2 = dataArray[i].Split(new char[2] { ':', ':' });if (dataArray2[0] == namestr){valustr = dataArray2[1];break;} }}return valustr;
}
VBScript解析JSON
poststrlen = Request.TotalBytes '获取字节数
If poststrlen > 0 Thenpoststr = bin2str(Request.BinaryRead(poststrlen))info = getpostval(poststr, "info") '信息序号jihao = getpostval(poststr, "jihao") '设备机号(可自编)cardtype = getpostval(poststr, "cardtype") '卡类型有IC、ID、ISO15693等heartbeattype = getpostval(poststr, "heartbeattype") '心跳信息类型scantype = getpostval(poststr, "scantype") '扫描枪信息类型card = getpostval(poststr, "card") '卡序列号data = getpostval(poststr, "data") '扇区内容dn = getpostval(poststr, "dn") '设备硬件序列号,出厂时已固化,全球唯一Status = getpostval(poststr, "status") '状态,如密码认证失败为12
End ifFunction bin2str(bindata)Dim rsStream, strlsSet rsStream = Server.CreateObject("ADODB.Stream")rsStream.Type = 2rsStream.OpenrsStream.WriteText bindatarsStream.Position = 0rsStream.Charset = "utf-8" '或GBKrsStream.Position = 2strls = rsStream.ReadTextrsStream.CloseSet rsStream = Nothingbin2str = strls
End FunctionFunction getjsonval(totalstr, namestr)Dim p1, p2, k, n, strlsn = Len(totalstr)If n < 5 Thengetjsonval = ""Exit FunctionEnd IfIf (Left(totalstr, 1) <> "{") Or (Right(totalstr, 1) <> "}") Thengetjsonval = ""Exit FunctionEnd Ifstrls = "," + Mid(totalstr, 2, n - 2) + ","k = Len(namestr) + 4p1 = InStr(strls, ",""" + namestr + """:")If p1 < 1 Thengetjsonval = ""Exit FunctionEnd Ifp2 = InStr(p1 + k, strls, ",")If p2 > (p1 + k) Thengetjsonval = Mid(strls, p1 + k, p2 - (p1 + k))If (Left(getjsonval, 1) <> """") Or (Right(getjsonval, 1) <> """") Thengetjsonval = ""Exit FunctionEnd Ifn = Len(getjsonval)If n < 3 Thengetjsonval = ""Exit FunctionEnd Ifgetjsonval = Mid(getjsonval, 2, n - 2)Elsegetjsonval = ""End If
End Function
JavaScript解析JSON
function bintostr(bindata) {var rsStream = new ActiveXObject("ADODB.Stream");rsStream.Type = 2;rsStream.Open();rsStream.WriteText(bindata);rsStream.Position = 0;rsStream.Charset = "utf-8"; //或GBKrsStream.Position = 2;strls = rsStream.ReadText;rsStream.Close();rsStream = null;return strls;
}var poststrlen = Request.TotalBytes;
if (poststrlen > 0) { //获取JSON方式提交的数据jsonstr = bintostr(Request.BinaryRead(poststrlen)); //解析JSON参数var jsontext = eval("(" + jsonstr + ")");var info = jsontext.info; //信息序号,回应时要带入此序号var jihao = jsontext.jihao; //设备机号(可自编)var cardtype = jsontext.cardtype; //卡类型 及 卡状态var heartbeattype = jsontext.heartbeattype; //心跳信息类型var scantype = jsontext.scantype; //扫码标识var card = jsontext.card; //16进制的卡序号var data = jsontext.data; //扇区内容 或 扫码数据var input = jsontext.input; //输入标识var output = jsontext.output; //输出标识var rand = jsontext.rand; //设备随机数var dn = jsontext.dn; //设备硬件序列号,出厂时已固化,全球唯一var status = jsontext.status; //读卡状态,如密码认证失败为12
}
相关文章:

C#、JavaScript、VBScript解析JSON数据源码
本示例使用设备:WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com) C#解析JSON数据 string dispstr "{" getChinesecode("扫码") ":}" data; //显示信息,注意中文汉字一定要转换为设备能显…...

JVM面试连环炮:你准备好迎接挑战了吗?
在Java开发领域,JVM面试一直是一个热门话题。作为一名优秀的开发者,你是否已经准备好迎接这场挑战了呢?今天,我们就来深度解析一下JVM面试的热点问题,帮助你更好地应对面试,一举拿下offer! 1、…...
Ansible通过kubernetes.core.k8s_info和kubernetes.core.k8s访问OCP
文章目录 环境OCPClient(Ansible控制节点) 步骤准备工作在client端配置ssh免密登录OCP端在client端安装Ansible kubernetes.core.k8s_info第1次尝试在OCP端安装python和pip3在OCP端安装kubernetes在OCP端安装PyYAML第2次尝试在OCP端配置config文件第3次尝…...

vscode汉化
安装插件 Chinese (Simplified) (简体中文) Language Pack for 重新打开,若还是没有汉化: 【CtrlShiftp】 输入“configure display language”,回车键 选择刚刚安装的 中文(简体)...
美易投资:美国圣诞树价格飙升,涨价的问题所在?
美国圣诞树价格飙升,商家称“拜登经济学”是导致涨价的罪魁祸首 随着圣诞节的临近,美国各地的家庭开始准备庆祝这一传统佳节。然而,今年美国的圣诞树价格却呈现出了明显的上涨趋势。据一些商家反映,这主要是由于“拜登经济学”所致…...

国内外聊天AI大比拼,你知道几个?一键了解最火聊天AI应用!
国内类ChatGPT的AI工具一网打尽 2022年,是一个不平凡的一年。ChatGPT迅速崭露头角,成为备受瞩目的热门话题。特别是在OpenAI发布了基于GPT-3.5模型的ChatGPT版本后,这一产品因其卓越的对话能力和广泛的应用潜力,很快引起了大众的…...

C++STL的vector模拟实现
文章目录 前言成员变量成员函数构造函数push_backpop_backinserterase析构函数拷贝构造 前言 成员变量 namespace but {template<class T>class vector{public:typedef T* iterator;private:iterator _start;iterator _finish;iterator _end_of_storage;}; }我们之前实…...
openssl 常用命令 pkcs12
openssl pkcs12 openssl pkcs12 官方文档 1. 描述 The pkcs12 command allows PKCS#12 files (sometimes referred to as PFX files) to be created and parsed. PKCS#12 files are used by several programs including Netscape, MSIE and MS Outlook. pkcs12 命令是用来创…...

2017下半年软工(桥接模式)
题目——桥接模式(抽象调用实现部分) package org.example.桥接模式;/*** 桥接模式的核心思想是将抽象部分与它的实现部分分离,使它们可以独立变化,就是说你在实现部分:WinImp、LinuxImp基础上还能加上RedHatImp&#…...
Hive 浅析
Hive是一个简单的LUA沙盒,除了基本的LUA解释器的功能以外,还提供了诸如热加载等功能。 了解HIVE的工作原理有利于了解Lua虚拟机的底层实现机理。 本文从是什么-怎么用-为什么三个维度介绍HIVE。 Hive Hive是什么 hive是一个简单的LUA应用框架,目前基于…...
C 语言中,结构体「.」与「->」的区别
简单来说 「 」的左边是结构体名字时用点符号「.」 「 」的左边是结构体指针时名字时用箭头「->」 对于要读取结构体种的数据时,有下面三种写法,操作是等价的。 struct ListNode a;struct ListNode *p1 &a;/*三种写法*/a.element 2333;p1->e…...

【Java Web学习笔记】5 - XML
项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/xml 零、在线文档 XML系列教程 一、XML引出 1.为什么需要XML 1.需求1 :两个程序间进行数据通信? 2.需求2:给一台服务器,做一个配置文件,当服务器程序启动时,去…...

在jupyter notebook中修改其他文件的解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...

如何在Android中旋转屏幕时避免重新绘制Activity
如何在Android中旋转屏幕时避免重新绘制Activity 在Android开发中,设备旋转通常导致当前活动(Activity)被销毁并重新创建,这可能导致用户界面重置和不必要的资源重新加载。然而,有时我们希望避免这种行为,…...
离线环境下安装python库(推荐pip download)
离线环境下安装python库(推荐pip download) 目录 1.需求 2.失败操作(注意) 3.成功操作 4.其它参考 1.需求 机器部署web系统环境后,就不可再次联网,所以升级python web后端,需要离线安装pyt…...
ubuntu16.04安装ROS+Gazebo
ubuntu16.04安装ROS参考文章 ros安装(一键最简安装,吹爆鱼香ROS,请叫我鱼吹) ROS篇——Ubuntu快速一键安装ROS或ROS2(通用) ubuntu安装ROS melodic(最新、超详细图文教程) 配置ubuntu以及安装ros2必要环…...

手动搭建koa+ts项目框架(路由篇)
文章目录 前言一、安装koa-router二、引入koa-router并使用三、优化路由配置总结如有启发,可点赞收藏哟~ 前言 本文基于手动搭建koats项目框架(基础篇)配置接口路由 一、安装koa-router npm i -S koa-router二、引入koa-router并使用 ./sr…...

c语言:文件操作(1)
前言:为什么要使用文件 使用文件可以让程序在不同运行之间保存和读取数据。这样可以实现持久化存储,即使程序关闭后数据也不会丢失。文件也可以用于数据交换,允许不同程序之间共享信息。在 C 语言中,文件还可以用于读取配置信息&…...

运筹学经典问题(三):最大流问题
问题描述 给定一个图网络 G ( V , E ) G(V, E) G(V,E),网络中连边的权重代表最大容量,在这个图中找出从起点到终点流量最大的路径。 数学建模 集合: I I I:点的集合; E E E:边的集合。 常量&#x…...
裸机开发与Linux驱动开发的区别
一. 简介 裸机开发,即我们常说的不带系统的单片机开发。 Linux驱动开发,即带文件系统的Linux驱动的开发。 二. 裸机开发与Linux驱动开发的区别 1. 裸机开发 比较底层,跟寄存器打交道,有些 MCU提供了库。 2. Linux驱动开发…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...