聚豐項目 > 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,具體如圖所示: