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

上篇文章说过在本地买的华夏相机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即可。

### 部署 Stable Diffusion 的准备工作 为了成功部署 Stable Diffusion,在本地环境中需完成几个关键准备事项。确保安装了 Python 和 Git 工具,因为这些对于获取源码和管理依赖项至关重要。 #### 安装必要的软件包和支持库 建议创建一个新的虚拟环境来隔离项目的依赖关系。这可以通过 Anaconda 或者 venv 实现: ```bash conda create -n sd python=3.9 conda activate sd ``` 或者使用 `venv`: ```bash python -m venv sd-env source sd-env/bin/activate # Unix or macOS sd-env\Scripts\activate # Windows ``` ### 下载预训练模型 Stable Diffusion 要求有预先训练好的模型权重文件以便能够正常工作。可以从官方资源或者其他可信赖的地方获得这些权重文件[^2]。 ### 获取并配置项目代码 接着要做的就是把最新的 Stable Diffusion WebUI 版本拉取下来。在命令行工具里执行如下指令可以实现这一点;这里假设目标路径为桌面下的特定位置[^3]: ```bash git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git ~/Desktop/stable-diffusion-webui cd ~/Desktop/stable-diffusion-webui ``` ### 设置 GPU 支持 (如果适用) 当打算利用 NVIDIA 显卡加速推理速度,则需要确认 PyTorch 及 CUDA 是否已经正确设置好。下面这段简单的测试脚本可以帮助验证这一情况[^4]: ```python import torch print(f"Torch version: {torch.__version__}") if torch.cuda.is_available(): print("CUDA is available!") else: print("No CUDA detected.") ``` 一旦上述步骤都顺利完成之后,就可以按照具体文档中的指导进一步操作,比如调整参数、启动服务端口等等。整个过程中遇到任何疑问都可以查阅相关资料或社区支持寻求帮助。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值