华夏相机/臻识相机车牌识别器同LED屏幕语音对接以及javaDemo

2023-10-27

上篇文章说过在本地买的华夏相机T83因为当地的销售人员只懂安装,一点技术支持也给不了,导致语音/屏幕 均不能实现自己想要的功能(自定义修改文字,语音播放余额等),经过自己进一步的研究发现,这个led屏幕和语音只需要自己买一块几十块的主板更换上对接就可以
上篇文章:华夏相机开发/臻识相机开发/车牌识别器开发对接使用总结

1. 这是对接资料

在这里插入图片描述

2. 通过文档以及demo更改的javaDemo工具类

/**
 * LED
 *
 * @author Lion 157239486@qq.com
 * @since 1.0.0 2022-12-28
 */
public class DucpUtils {

    public static final int LED_COLOR_RED = 0x000000FF; //红色
    public static final int LED_COLOR_GREEN = 0x0000FF00; //绿色
    public static final int LED_COLOR_YEELOW = 0x0000FFFF; //黄色
    public final int[] ColorMap = new int[]{0xff, 0xff00, 0xff0000, 0xffff, 0xffff00, 0xff00ff, 0xffffff, 0x000000};
    //{
    //            "静态显示",
    //            "向左移动",
    //            "向右移动",
    //            "向上移动",
    //            "向下移动",
    //            "向左展开",
    //            "向右展开"}

    public static final void Camera485Transmission(SDK sdk, byte[] Buff, int Len) {
        //相机透传的接口 发送协议数据
        sdk.ICE_IPCSDK_TransSerialPort(Buff);
    }

    public static void LED_MuiltLineDisAndPlayVoice(SDK sdk, TextContext[] TextContext, String VoiceText, int SaveFlag) {
        int BuffPos;
        byte[] Buff = new byte[255]; //分配缓冲数组
        int CRC;
        byte TextContextNum = (byte) TextContext.length;

        /*0.填充命令参数*/
        BuffPos = 0;
        Buff[BuffPos++] = 0x00; //显示屏地址
        Buff[BuffPos++] = 0x64; //固定参数
        Buff[BuffPos++] = (byte) 0xFF; //包序列
        Buff[BuffPos++] = (byte) 0xFF; //包序列
        Buff[BuffPos++] = 0x6E; //指令
        Buff[BuffPos++] = 0; //数据长度

        /*1.填充文本参数*/
        Buff[BuffPos++] = (byte) SaveFlag; //文本类型,1为广告语,0为临时信息
        Buff[BuffPos++] = TextContextNum; //文本数量
        for (int i = 0; i < TextContextNum; i++) {
            Buff[BuffPos++] = (byte) TextContext[i].lid; //行号
            Buff[BuffPos++] = (byte) TextContext[i].disMode; //显示模式
            Buff[BuffPos++] = 0x01; //显示速度
            Buff[BuffPos++] = (byte) TextContext[i].delayTime; //停留时间
            Buff[BuffPos++] = (byte) TextContext[i].disTimes; //显示次数
            Buff[BuffPos++] = (byte) (TextContext[i].textColor & 0xff); //32位字体颜色 红色分量
            Buff[BuffPos++] = (byte) ((TextContext[i].textColor >> 8) & 0xff); //32位字体颜色 绿色分量
            Buff[BuffPos++] = (byte) ((TextContext[i].textColor >> 16) & 0xff); //32位字体颜色 蓝色分量
            Buff[BuffPos++] = (byte) ((TextContext[i].textColor >> 24) & 0xff); //32位字体颜色 保留字节

            byte[] TextBuff = TextContext[i].Text.getBytes(); //把string 类型字符串 读取到字节数组里面.注意字符串编码必须是GB2312 WINDOWS代码页为936
            if ((BuffPos + TextBuff.length) >= 255) { //整包长度不能大于255
                return;
            }
            Buff[BuffPos++] = (byte) TextBuff.length; //文本长度
            for (int z = 0; z < TextBuff.length; z++) //复制文本到缓冲
            {
                Buff[BuffPos++] = TextBuff[z];
            }

            if (i == (TextContextNum - 1)) { //添加文本分隔符
                Buff[BuffPos++] = 0x00;
            } else {
                Buff[BuffPos++] = 0x0D;
            }
        }

        /*2.填充语音参数*/
        byte[] VoiceTextBuff = VoiceText.getBytes(); //把string 类型字符串 读取到字节数组里面.注意字符串编码必须是GB2312 WINDOWS代码页为936
        if (VoiceTextBuff.length > 0) {
            Buff[BuffPos++] = 0x0A; //语音分隔符
            Buff[BuffPos++] = (byte) VoiceTextBuff.length; //语音文本长度
            if ((BuffPos + VoiceTextBuff.length) >= 255) { //长度检查
                return;
            }
            for (int z = 0; z < VoiceTextBuff.length; z++) //复制文本到缓冲
            {
                Buff[BuffPos++] = VoiceTextBuff[z];
            }
        } else {
            Buff[BuffPos++] = 0x00;
        }
        Buff[BuffPos++] = 0;
        Buff[5] = (byte) (BuffPos - 6); //重新修改数据长度

        /*3.计算校验码*/
        CRC = MB_CRC16(Buff, BuffPos);
        Buff[BuffPos++] = (byte) (CRC & 0xff); //校验码低字节
        Buff[BuffPos++] = (byte) ((CRC >>> 8) & 0xff); //校验码高字节

        /*4.最后在这里把Buff的内容发送出去,长度为BuffPos */
        Camera485Transmission(sdk, Buff, BuffPos);
    }

   

    public static int byteToInteger(byte b) {
        int value;
        value = b & 0xff;
        return value;
    }

}

代码均有注释就不单独做说明了
注意:这种方式是通过相机SDK透传,华夏相机/臻识相机只需要更换Camera485Transmission这个方法里的sdk即可。

如果是需要通过websocket/mqtt等网络协议通讯的,只需要回传对应的485数据给相机透传就可以,透传的数据需要转换为hex2string

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

华夏相机/臻识相机车牌识别器同LED屏幕语音对接以及javaDemo 的相关文章

  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • 从 BroadcastReceiver 类调用活动方法

    我知道我可以做一个内部接收器类来调用接收器中的任何方法 但我的主要活动太大了 要做的事情也很多 因此 我需要一个扩展广播接收器的类 但它不是内部类 并且可以从我的主要活动中调用一种方法 我不知道是否可能 但我的活动是家庭活动和 single
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • 对于一个单元格,RecyclerView onBindViewHolder 调用次数过多

    我正在将 RecyclerView 与 GridLayoutManager 一起使用 对于网格中的每个项目 我需要调用 REST api 来检索数据 然后 从远程异步获取数据后 我使用 UIL 加载 显示图像 一切似乎都很好 但我发现 on
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • okhttp 获取失败响应

    我已经在我的 android 客户端中实现了 okhttp 来进行网络调用 当我收到失败响应时 我会收到失败代码以及与该代码相关的文本作为消息 但我没有收到服务器发送给我的自定义失败响应 在我实施的代码中的失败响应中 我收到的消息只是 错误
  • Mipmap 与可绘制文件夹[重复]

    这个问题在这里已经有答案了 我正在使用 Android Studio 1 1 Preview 1 我注意到 当我创建一个新项目时 我得到以下层次结构 不同 DPI 的 Mipmap 文件夹 不再有不同 DPI 的可绘制文件夹 我应该将所有资
  • Android 2.3 模拟器在更新位置时崩溃

    我正在使用 Eclipse 编写和调试 Android 应用程序 我需要做的事情之一是更新设备的位置 因此我尝试使用模拟器控制窗口中的位置控制面板 在 手动 选项卡上 我选择 十进制 输入有效的纬度和经度 然后单击 发送 不幸的是 接下来发
  • 如何在 Android 中从 WorkManager 取消工作?

    我已经保存了 WorkManagerUUID转换成String在领域数据库中 这是代码 Constraints constraints new Constraints Builder setRequiredNetworkType Netwo
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 没有支持 FEATURE_CAMERA_EXTERNAL 的 Android 设备

    根据this doc https source android com devices camera external usb cameras一些 Android 设备允许使用 Camera2 API 访问外部 USB 摄像头 我检查了大约
  • 在 Android 应用程序资源中使用 JSON 文件

    假设我的应用程序的原始资源文件夹中有一个包含 JSON 内容的文件 我如何将其读入应用程序 以便我可以解析 JSON See 开放原始资源 http developer android com reference android conte
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • 错误:(23, 13) 无法解决:com.google.android.gms:play-services:11.2.0“安装存储库和同步项目”不起作用

    我正在尝试在我的 Android 应用程序中获取位置并更新到服务器 这是我的 Gradle 代码 我在这里包含了compile com google android gms play services 11 2 0 这条线是从文档中 htt
  • 我的应用程序中的后退按钮出现问题[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想在手机关闭时清除共享首选项值 你
  • Git 实验分支还是单独的实验存储库?

    我正在开发一个 Android 应用程序 并且在整个开发周期中一直使用 Git 现在 我想构建并发布实验性功能 供人们尝试和安装 同时仍将原始的 稳定的应用程序安装在他们的设备上 现在 这意味着我需要使用不同的包名称 这会更改开发项目中的一

随机推荐

  • spdlog同时输出到控制台和文件中,可设置文件大小及数目,define方式

    因为自己想要个题目那种效果的 又没找到很符合的博客 就整合了下大佬们的博客封了个 具体的内容都放到代码注释里了 我这个目前在windows下只能将log文件创建到exe所处的目录中 暂时仍未解决该问题 欢迎大佬指正 已解决 直接将文件名设置
  • acwing 博弈论 拆分-Nim游戏

    include
  • 安装最新版Calico

    准备calico yaml 进入calico网站 Install Calico networking and network policy for on premises deployments 找到 Install Calico gt K
  • Android 对data/data/(your packagename)目录下的数据读写、删除操作

    一 数据存储 App自身的数据存储在 data data packagename 目录下 大致结构如下图 Activity提供了getCacheDir 和getFilesDir 方法 getCacheDir getAbsolutePath
  • qt std::cout 中文乱码

    char out 输入操作 r n std cout lt lt out QString qOut 输入操作 r n std cout lt lt qOut toStdString std cout lt lt qOut toStdWStr
  • python3---情感分析(基于词典中文)

    写在前面 现有的情感分析比较常用的有两种 分别是基于词典的和机器学习 前者也属于非监督学习 后者自然一般属于监督学习 刚开始学情感分析 下面先从 基于词典的情感分析 开始进行 词典 我东搜西找找到了一些感觉是常用的字典 主要有 台湾大学NT
  • 2.NanoPi M1(全志H3)的GPIO控制总结(内核驱动)

    开发环境 VM Ubuntu 编译环境 linux3 4 交叉编译工具 arm linux gcc 4 4 3 GPIO内核驱动程序链接 https download csdn net download ddffyhg 11022291 用
  • ABAP DOI 下载SMW0的EXCEL和WORD模板

    用 FUNCTION SAP OI LOAD MIME DATA 下载SMW0的模板 用METHOD LR PROXY gt OPEN DOCUMENT FROM TABLE 打开模板 没找到和ole一样先下载 在打开的方法 SMWO上载模
  • 用正则表达式爬豆瓣电影数据

    学了正则表达式后 简单的用它来爬取豆瓣网的数据 import re from urllib request import urlopen def getPage url 获取网页的字符串 response urlopen url retur
  • STL_set——set::find

    Reference Returns an iterator addressing the location of an element in a set that has a key equivalent to a specified ke
  • 酷比魔方AI慧读器评测 – 实用,值,但不够智能

    转自 https post m smzdm com p ar07qo8x 前段时间在网上看到了酷比魔方AI慧读器的宣传 说是可以让孩子爱上阅读 还可以教会孩子正宗的伦敦腔英语 真的让人很好奇这是一款什么样的神奇产品 正好4月份是小侄子三岁的
  • 使用具有OpenCV和Tesseract的Raspberry Pi光学字符识别(OCR)

    了解如何使用Tesseract和OpenCV通过Raspberry Pi相机从PDF等图像中提取文本 在本教程中 我将向您展示如何使用光学字符识别通过Raspberry Pi相机和Raspberry Pi从图像中提取文本 Pi相机将捕获图像
  • CentOS6.8环境下,通过docker创建Anaconda3容器的基础使用

    目录 一 主要步骤 1 查找docker里评分最高的Anaconda 2 拉取下来 3 运行Anaconda虚拟容器 并挂载 4 进入容器后 创建虚拟环境 5 进入虚拟环境 6 进入虚拟环境后 就可以下载自己所需要的第三方库了 7 执行相关
  • 图形图像学习随笔:计算机图形学的一些基本概念

    本文内容摘抄于 计算机图形学的概念 一 计算机图形学的范畴 1 图形主要分为两类 一类是基于线条信息表示的 如工程图 等高线地形图 曲面的线框图等 另一类是明暗图 也就是通常所说的真实感图形 2 计算机图形学利用计算机建立图形所描述的场景和
  • Django小结02

    1 数据库设置 1 打开myproject settings py 配置mysql数据库 需要添加密码 默认端口3306 在myproject init py中 import pymysql pymysql install as MySQL
  • 自动化Playwright专题汇总

    文章目录 序言 一 特性 1 测试和自动化框架 2 支持所有主流浏览器 3 快速可靠的执行 4 强大的自动化功能 5 自动化工具对比 在这里插入图片描述 https img blog csdnimg cn 97189e12b617477a8
  • 多线程爬取百度关键字结果,并获取真实url

    项目目的 练习 项目要求 根据给定的关键字 检索百度的结果 将结果保存到文件中 遇到问题 1 python list取值问题 有些看不清晰的 用for index item in enumerate array 查看 2 选取想要的元素 两
  • Linux系统磁盘扩容

    本机为CentOS7 9 在虚拟机环境下给Linux系统磁盘扩容 直接添加硬盘无法使用 还需要在系统内部有磁盘挂载操作 给虚拟机添加磁盘 查看系统盘分区类型 root Para110 fdisk dev sda 列出系统分区 欢迎使用 fd
  • springboot框架主要用来做什么?

    Spring Boot是一个开源的Java框架 主要用于简化和加速基于Java的应用程序的开发 它提供了一套开发工具和约定 使得构建独立 可执行的 生产级别的Spring应用变得更加容易 Spring Boot的主要目标是简化Spring应
  • 华夏相机/臻识相机车牌识别器同LED屏幕语音对接以及javaDemo

    上篇文章说过在本地买的华夏相机T83因为当地的销售人员只懂安装 一点技术支持也给不了 导致语音 屏幕 均不能实现自己想要的功能 自定义修改文字 语音播放余额等 经过自己进一步的研究发现 这个led屏幕和语音只需要自己买一块几十块的主板更换上