文档中的配置二维码上面那个配置工具的优点是灵活,缺点是只支持 windows 平台,如果没有 windows 机器,可以直接使用开发文档中几个预定义的配置二维码:
文章插图
这个文档位于 C/CPP 开发包解压后的如下路径:“USB接口C-CPP语言SDK20220411\USB接口C&CPP语言SDK20220411\扫码器C&CPP简易开发指南v2.1.pdf”,其它开发包是否有这个文件没有验证过 。
对比两组图,生成的二维码和文档中的几乎一样,看起来后者也像通过工具生成的 。
Demohidprotocal进入开发模式后再扫码就只是滴滴叫不上屏了,此时需要使用 sdk 写一个程序来获取扫码器的输出,在 C/CPP 开发包有中一个现成的 demo:USB接口C-CPP语言SDK20220411\USB接口C&CPP语言SDK20220411\Demohidprotocal\Release\Demohidprotocal.exe,这是 release 版本,选择 debug 版本也行,启动后界面如下:
文章插图
表示连接扫码器成功,分别扫描车架号和车牌号:
vbar_open success!开始解码:二维码长度:18LFV3A23C083027701二维码长度:10浜琈D0926车架号是正常的,而车牌号果然是乱码 。
【微光互联 TX800-U 扫码器无法输出中文到光标的问题】找到 Demohidprotocol 源码 (USB接口C-CPP语言SDK20220411\USB接口C&CPP语言SDK20220411\Demohidprotocal\Demohidprotocal\main.cpp):
#include "channel.h"#include <stdio.h>#include <windows.h>#include <string.h>struct vbar_channel *dev;/*背光灯开关控制 state为1时打开补光灯,为0时关闭补光灯*/void lightswitch(int state){ unsigned char buf[1025] = { 0 }; if (state == 1) {buf[0] = 0x55;buf[1] = 0xAA;buf[2] = 0x24;buf[3] = 0x01;buf[4] = 0x00;buf[5] = 0x01;buf[6] = 0xDB;vbar_channel_send(dev, buf, 1024); } else {buf[0] = 0x55;buf[1] = 0xAA;buf[2] = 0x24;buf[3] = 0x01;buf[4] = 0x00;buf[5] = 0x00;buf[6] = 0xDA;vbar_channel_send(dev, buf, 1024); }}/*扫码开关控制 state为1时打开扫码,为0时关闭扫码*/void scanswitch(int state){ unsigned char buf[1025] = {0}; if (state == 1) {buf[0] = 0x55;buf[1] = 0xAA;buf[2] = 0x05;buf[3] = 0x01;buf[4] = 0x00;buf[5] = 0x00;buf[6] = 0xfb;vbar_channel_send(dev, buf, 1024); } else {buf[0] = 0x55;buf[1] = 0xAA;buf[2] = 0x05;buf[3] = 0x01;buf[4] = 0x00;buf[5] = 0x01;buf[6] = 0xfa;vbar_channel_send(dev, buf, 1024); }}int main() { dev = vbar_channel_open(1, 1); if (!dev) {printf("open dev fail!\n");return -1; } else {printf("open dev success!\n"); } printf("开始解码:\r\n"); scanswitch(1); //接收扫码 unsigned char bufresult[1024] = {0}; unsigned char bufferrecv_1[1024] = {0}; unsigned char readBuffers[2048] = {0}; while (1) {if (vbar_channel_recv(dev, bufresult, 1024, 200) > 0){if (bufresult[0] == 0x55 && bufresult[1] == 0xAA && bufresult[2] == 0x30){int datalen = bufresult[4] + (bufresult[5] << 8);if (datalen <= 1017){for (int s1 = 0; s1 < datalen; s1++){readBuffers[s1] = bufresult[6 + s1];}}if (1017 < datalen && datalen <= 2041){for (int s1 = 0; s1 < 1018; s1++){readBuffers[s1] = bufresult[6 + s1];}vbar_channel_recv(dev, bufferrecv_1, 1024, 200);for (int s2 = 0; s2 < datalen + 7 - 1025; s2++){readBuffers[s2 + 1018] = bufferrecv_1[s2];}}printf("二维码长度:%d\n", datalen);readBuffers[datalen + 7] = '\0';printf("%.*s\n", datalen, readBuffers);}} }}
经验总结扩展阅读
- 通过openlayers加载dwg格式的CAD图并与互联网地图叠加
- 互联网电视机哪个好 国产品牌小米果断上榜
- vivo互联网机器学习平台的建设与实践
- Go的网络编程详解
- bt是什么
- 三星手机互联网已停止如何修复
- 为什么互联网公司没有进入汽车终端领域
- MES与工业互联网的关联边界在哪里?
- 工业互联网领域的企业,都已经接入了ERP或者MES系统了吗?
- 互联网迷信是什么意思?