拌合楼系统开发(二十)解决海康DS-TVL224系列屏幕显示二维码思路

前言:

         需求是想在通过程序动态控制显示屏显示二维码,最开始有些担心led这种点阵屏会不会对二维码显示出来后无法识别,实际测时候发现是没问题的。对于显示文字和语音播报,csdn上已经有大神有完整的代码。

海康威视道闸进出口LED屏DS-TVL224系列开发C#源码_ds-tvl224原厂程序及技术指导资料-CSDN博客

       开始以为会是个很简单的事情,但实际很悲催,找不到显示二维码的资料,全网搜了很多止步在显示文字和语音播报,官网就是个渣,中文网站内容不如英文网站内容多,但也没有啥帮助。到我写这篇文章前,我找到了一个思路可以通过程序控制显示二维码,but是固定的内容,还没找到完美的解决方案。

解决问题的过程

        一、设备调试工具

        1. 下载地址:        

         不知道为什么官网竟然下载不到,可以点击下面地址下载。【免费】海康威视道闸进出口LED屏DS-TVL224系列的调试工具,程序中密码led886,管理员密码就不得而知资源-CSDN文库     

          2.  工具简单实用教程

         线路连接很简单,网口接网线,电源直接接220v市电就可以了。

        双击搜到的设备,可以在这里修改设备的IP地址,其他参数就不建议大家修改了

    主界面置发送测试的文本内容,换行通过Ctrl+Enter换行,配置完成后再点击常规信息发送内容,看显示屏是否显示配置的内容

        其他操作包括发送二维码显示都很简单,拿到软件配合屏幕就很快可以上手。

          二、 程序控制显示的代码逻辑

        代码的核心就是建立TCP客户端,按照规则发送包给屏幕的地址,端口是10000,那么难的地方就是包怎么够造了。

          1.  发送文本        

   byte[] cmd_text_0 = { 0x55, 0xAA, 0x00, 0x00, 0x01, 0x00, 0x00, 0xDA, 0x00, 0x00 };
                byte[] cmd_text_1 = { 0x3D, 0x00, 0x00, 0x00 };//包长度(数据长度+51)
                byte[] cmd_text_2 = { 0x01, 0x01 };
                byte[] cmd_text_3 = { 0x3D, 0x00, 0x00, 0x00 };//帧长度(数据长度+51)
                byte[] cmd_text_4 = { 0x01, 0x01 };
                byte[] cmd_text_5 = { 0x3C, 0x00, 0x00, 0x00 };//节目长度(数据长度+50)
                byte[] cmd_text_6 = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 };
                byte[] cmd_text_7 = { 0x24, 0x00, 0x00, 0x00 };//区域数据长度 (数据长度+26)
                byte[] cmd_text_8 = { 0x0E, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x3F, 0x00 };
                byte[] cmd_text_9 = { 0x02 };//颜色 01 红 02 绿
                byte[] cmd_text_10 = { 0x00, 0x00, 0x01, 0xFF, 0x01, 0x01, 0x10 };
                byte[] cmd_text_11 = { 0x0A, 0x00, 0x00, 0x00 };//数据长度 低位在前
                byte[] cmd_text_12 = { 0xD2, 0xBB, 0xC2, 0xB7, 0xC6, 0xBD, 0xB0, 0xB2, 0x38, 0x36 };//数据内容
                byte[] cmd_text_13 = { 0x00, 0x00, 0x0D, 0x0A };//帧尾

          2. 发送语音:

 byte[] cmd_speak_0 = { 0x55, 0xAA, 0x00, 0x00, 0x01, 0x00, 0x00, 0xDA, 0x00, 0x00 };
                byte[] cmd_speak_1 = { 0x36, 0x00, 0x00, 0x00 };//包长度(数据长度+51)
                byte[] cmd_speak_2 = { 0x00, 0x00 };
                byte[] cmd_speak_3 = { 0x36, 0x00, 0x00, 0x00 };//帧长度(数据长度+51)
                byte[] cmd_speak_4 = { 0x01, 0x01 };
                byte[] cmd_speak_5 = { 0x35, 0x00, 0x00, 0x00 };//节目长度(数据长度+50)
                byte[] cmd_speak_6 = { 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01 };
                byte[] cmd_speak_7 = { 0x1D, 0x00, 0x00, 0x00 };//区域数据长度 (数据长度+26)
                byte[] cmd_speak_8 = { 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x01 };
                byte[] cmd_speak_9 = { 0x03, 0x00, 0x00, 0x00 };//数据长度 低位在前
                byte[] cmd_speak_10 = { 0x32, 0x33, 0x35 };//数据内容 (语音:“二百三十五”)
                byte[] cmd_speak_11 = { 0x00, 0x00, 0x0D, 0x0A };//帧尾      

        3. 二维码:

        推测如果要显示二维码,同样也是构造数据包给到屏幕就能够显示出来。但这个包该如何构造呢,我直接说出我的笨办法。

         既然是通过网络推送数据,那么就请出了wireshark这个网络抓包工具了。

   我发现这些数据包里面,这三条应该就是控制屏幕的数据包了。

        打开其中一条,定位到数据,发现是55 aa 00 00  符合屏幕控制的包头标识

   那如果我把这三条记录的数据通过程序发送给屏幕,是不是也可以控制显示出二维码,结论当然是可以的。


总结:

      虽然现在的方法只能显示固定的二维码,但至少迈出了代码控制显示二维码的第一部,后面重点就是思考怎么构造数据包了。

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

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

相关文章

java高级——String字符串探索(在jvm底层中如何实现,常量池中怎么查看)

java高级——String字符串探索(在jvm底层中如何实现,常量池中怎么查看) 文章介绍提前了解的知识点1. 常量池2. Jvm虚拟机3. 字节码 String类详解1. String对象在申明后将不可修改,是不可变类2. String进行相加相减等操作时一定会创…

常见的螺纹防松措施有哪些?——SunTorque智能扭矩系统

智能扭矩系统-智能拧紧系统-扭矩自动控制系统-SunTorque 螺纹连接作为机械工程中常见的连接方式,其稳定性和可靠性对于整个机械系统的正常运行至关重要。然而,由于振动、冲击、温度变化等因素的影响,螺纹连接往往会出现松动现象,…

react中子传父信息

思路是: 在父组件定义一个函数接受参数,接收的参数用于接收子组件的信息,把函数传给子组件,子组件调用父亲传来的函数并把要告诉父亲的话传到函数中,就实现了子传父消息 import { useState } from reactimport { use…

C++学习/复习7--泛型编程/函数模板/类模板

一、泛型编程 1.Swap()函数的模板实现 二、函数模板 1.概念 2.格式 3.实例化 (1)隐式与显示 注意事项:隐式与显示类型转换会产生临时变量,临时变量有常性,所以形参前加const 三、类模板 1.定义 2.例1 3.例2 4.注意事…

nginx流量监控:goAccess安装与使用

关于goAccess GoAccess 是一款实时、快速的日志分析工具,专门设计用于分析Web服务器日志,特别是Nginx日志。 安装 (1)准备相关依赖 # Missing development libraries for ncursesw # centOS yum install -y ncurses-devel # U…

qmt量化交易策略小白学习笔记第7期【qmt策略之股票快照指标】

qmt策略之股票快照指标 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 感谢关注,需免费开通量化回测与咨询实盘权限,可以和博主联系! 股票快照指标 提供标…

python双色球选号程序的实现与解析

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:双色球选号游戏的魅力 二、程序设计与实现 1. 生成红色球号码 2. 生…

OpenHarmony迎来首个互联网技术统一标准,鸿蒙OS生态走向如何?

开源三年半,OpenHarmony(以下简称“开源鸿蒙”)迎来了新进展。在5月25日召开的「OpenHarmony开发者大会」上,鸿蒙官宣了开源鸿蒙设备统一互联技术标准。 一直以来,各行业品牌操作系统相互独立、难以协同,成为其互联互通的痛点。为进一步解决…

USST新生训练赛div2+div3题解

目录 前言题解部分B Ichihime and Triangle(800)题目大意题解代码实现 C Kana and Dragon Quest game(900)题目大意题解代码实现 J Squares and Cubes(800)题目大意题解代码实现 F Double Sort(1200)题目大意题解代码实现 I Minimize the Thickness(1100)题目大意题解代码实现 …

华为CE6851-48S6Q-HI升级设备版本及补丁

文章目录 升级前准备工作笔记本和交换机设备配置互联地址启用FTP设备访问FTP设备升级系统版本及补丁 升级前准备工作 使用MobaXterm远程工具连接设备,并作为FTP服务器准备升级所需的版本文件及补丁文件 笔记本和交换机设备配置互联地址 在交换机接口配置IP&#…

LAMP源码编译安装——CentOS7

文章目录 LAMP是什么LAMP软件组件LinuxApacheMySQLPHP 源码安装Apache一、准备工作二、安装环境依赖包三、配置软件模块四、编译及安装五、优化配置文件路径六、添加httpd系统服务(有两种方法)方法一:方法二: 七、修改httpd 服务配…

LabVIEW软件需求分析文档内容和编写指南

编写LabVIEW软件需求分析文档(Software Requirements Specification, SRS)是软件开发的关键步骤之一。以下是详细的内容结构、编写指南和注意事项: 内容结构 引言 项目背景:简要介绍项目背景和目的。 文档目的:说明需…

利用NewGIS平台将FME模板发布为接口

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 一、模板编写 二、发布模板 三、接口获取 四、移动端调用 ​​​​​ 前言 在实际的应用生产过程中,尤其是移动端GIS软件的开发,针对一些闭…

C++学习笔记(21)——继承

目录 1. 继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1 定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化 继承的概念总结: 2. 基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数知识点:派生类中6个默认成员函数…

头文件大小写引发的报错

jenkins下打包编译报错如下,提示编译zynqCan.c时找不到“syscfgpll/sysCfgpll.h”文件。 但IDE下编译是没有报错也没有警告的,工程中也存在文件“syscfgpll/sysCfgPll.h”。 仔细观察发现,报错说的是找不到头文件“syscfgpll/sysCfgpll.h”…

蓝桥杯物联网竞赛_STM32L071_18_长短按键检测

长短按键的检测是国赛题里面遇到的,省赛没出过有两种实方法 定时器配置: 定时器的话要比delay准确,其中tim7定时器的准度最高 定时器预分配配置32 - 1,计数周期是10000 - 1这样做那么32MHZ/32也就是一秒钟记录10^6的数&#xf…

c++ vector实现出现的一些问题

目录 前言: 浅拷贝问题: typename指定类型: 前言: 最近学习了c vector的使用,然后也自己实现了一下vector的部分重要的功能。然后在其中出现了一些问题,在这就主要记录一下我解决哪些bug。 浅拷贝问题: 在实现res…

Weblogic SSRF漏洞 [CVE-2014-4210]

漏洞复现环境搭建请参考 http://t.csdnimg.cn/svKal docker未能成功启动redis请参考 http://t.csdnimg.cn/5osP3 漏洞原理 Weblogic的uddi组件提供了从其他服务器应用获取数据的功能并且没有对目标地址做过滤和限制,造成了SSRF漏洞,利用该漏洞可以向内…

若依跳转(新增)页面,在菜单中不显示的页面

在router.js文件中 跳转方式 this.$router.push(/monitor/b/b)

路由引入实验(思科)

华为设备参考:路由引入实验(华为) 技术简介 路由引入技术在网络通信中起着重要的作用,能够实现不同路由协议之间的路由传递,并在路由引入时部署路由控制,实现路径或策略的控制 实验目的 不同的路由协议之…