聚丰项目 > RedScanBoxlite
RedScanBoxlite 是一款轻量化的条码生成器.目前条码的协议格式有多种,现在实现了对 EAN-13 协议的支持.支持通过按键设置编码数据,然后一键快速生成对应的条码. 整个项目的开发多在 Linux 上完成. 软件开发使用 vim + gcc + openocd. 硬件开发使用 librecad + Kicad. RedScanBox 则是一款支持解析条码功能,同时,支持更多协议条码生成的设备.
iysheng
分享iysheng
团队成员
Red 嵌入式软件开发工程师
RedScanBoxlite 基于沁恒的 CH32V103R_NUCLE 板卡, 以扩展版的方式实现了该项目.扩展板上主要包括如下硬件模块:
* 5 个按键,实现 上\下\左\右\返回\确认 功能
* W25Q32 SPI FLASH 实现额外数据的存储
* 24LC04 EEPROM 保存系统加密有关的数据
* JHD256160-G03BEW 并口显示屏
* 扩展版预留 UART 调试口
其中扩展版的开发 硬件框图:
硬件开发在 Kicad 上完成, 3D 效果图如图所示:
扩展板顶视图:
扩展版底视图
软件说明: RedScanBoxlite 使用 RT-Thread nano 操作系统, 解码模块参考 zint 解码库.线程间通讯使用多个信号量完成.
软件流程图:
系统软件的开发调试工作均在 Linux 上完成,主要总结有如下几点:
* 前期 rt-thread 的移植部分,前期走了很多弯路,最后定位到是线程栈设置太小导致.通过这一部分的工作,让我对 RT 的线程调度有了进一步的理解.
* 在开发条码生成的时候,对条码的格式有了进一步的了解,比如 EAN-13 这种目前比较通用的格式
* 在移植 zint 解码库时候,首先在 Linux 上提取关键的部分进行测试,其中upcean.c
文件实现了 EAN 条码格式的解析,测试通过后直接移植到 RT-Thread nano 上进行编译.这也是后续对一些算法软件库移植的嵌入式设备的一个经验.
系统的演示视频放在了 bilibili 上,视频如图:
项目在 gitee 托管,地址是: https://gitee.com/iysheng/red_scan_box.git
----------------------------------------------------------------------------------
其中,软件的代码在项目仓库的 submodule 仓库。具体的拉取过程示意如图:
在此阐述一下仓库的各个目录及其内容:
.
├── docs -> 保存使用到的开发板原理图\数据手册等文档
│ ├── CH32V103DS0.PDF
│ ├── CH32V103EVT.ZIP
│ ├── CH32V103SCH.pdf
│ ├── CH32V103╞└╣└░х╦╡├ў╩щ.pdf
│ ├── CH32xRM.PDF
│ └── 学习文档.drawio
├── misc
│ ├── extend_board_skill.dxf -> 扩展版的 dxf 边框文件
│ ├── hard0_simulate.png
│ ├── hard1_simulate.png
│ ├── hard_diagram.png
│ ├── hardware -> 保存扩展板硬件原理图和 pcb 等文件
│ │ └── extend_board_ccd
│ │ └── extend_board
│ ├── soft_diagram.png
│ └── software
│ ├── LICENSE
│ └── rt-thread -> 基于 RT-thread nano 开发的工程代码
│ ├── AUTHORS
│ ├── bsp
│ ├── ChangeLog.md
│ ├── components
│ ├── docs
│ ├── include
│ ├── libcpu
│ ├── LICENSE
│ ├── README.md
│ ├── README_zh.md
│ └── src
├── notes -> 保存章节笔记目录
│ ├── chapter0.md
│ └── chapter1.md
└── README.md
14 directories, 20 files
特别地 程序文件所在的目录为 misc/software/rt-thread/bsp/ch32v103,具体如图所示: