微光互聯 TX800-U 掃碼器無法輸出中文到光標的問題

問題背景某檢測場有一批掃碼器 , 購于微光互聯 , 型號 TX800-U,用于在不同辦理窗口間掃描紙質材料上的二維碼,簡化錄入過程 。掃碼器通過 USB 接入 PC 系統 (windows),自動安裝驅動 , 接電即可使用,掃描的信息會直接輸出在光標所在位置,掃碼器大概長這樣:

微光互聯 TX800-U 掃碼器無法輸出中文到光標的問題

文章插圖
問題現象在一次 IT 系統升級后,發現它們掃描不了車輛外觀檢驗單上的車牌二維碼了,掃車架號二維碼是沒問題的,兩者的區別就是是否帶漢字,車牌第一個字符為地區標識,例如“京”,而車架號全部由數字和大寫字母組成 。
拿到設備后,第一時間驗證了上面的問題,掃碼后都有滴的一聲,但是車牌號沒有任何信息上屏 。為了驗證這個問題確實和漢字有關 , 找到一個制造二維碼的網站 (草料二維碼) , 造了幾個不同的二維碼供掃碼器掃描 , 發現帶漢字的果然掃不出來,而只要去掉漢字,就能正確上屏 。
同樣的二維碼,通過微信掃一掃是可以得到漢字結果的,另外升級 IT 系統前掃碼器也是正常的,所以初步判斷這個問題和漢字編碼相關,可能是升級系統后修改了默認字符編碼集導致掃碼器出問題了 。
問題的解決聯系了廠家的售后,拉了個微信群,開發人員說這是已知問題,要想解決需要二次開發 。
二次開發不就是調用 sdk 接口嗎 , 這個我熟啊 。從官網找到對應產品和型號:
微光互聯 TX800-U 掃碼器無法輸出中文到光標的問題

文章插圖
下載了 windows 上的 C/C++ 二次開發 sdk:
微光互聯 TX800-U 掃碼器無法輸出中文到光標的問題

文章插圖
另外發現一個配置工具,感覺蠻有用 , 一起搞下來:
微光互聯 TX800-U 掃碼器無法輸出中文到光標的問題

文章插圖
話說這公司夠實誠 , 設計圖紙都開源了
開發者模式擼了一遍文檔,大概明白了 , 這個掃碼器默認工作在普通模式 , 這種模式下會將掃到字符直接輸出到系統光標位置;如果想要二次開發 , 需要先將掃碼器設置為開發者模式,在這種模式下,掃到的信息不會輸出到光標,而是借由 sdk 接口返回給調用者,在這里就可以對數據進行任意加工了 。來看看如何配置開發者模式,共有兩種方式
  • 通過配置工具 VguangConfig
  • 直接掃描文檔中的二維碼
其實第一步最終也是生成一個二維碼,殊途同歸,不過可以選擇的設置項更豐富一些,先來看看這種方式吧
VguangConfig
微光互聯 TX800-U 掃碼器無法輸出中文到光標的問題

文章插圖
打開后的界面是這樣,當掃碼器處于普通模式時會自動識別并連接設備:
如果已經處于開發者模式,則無法自動連接,這里直接點“下一頁”
微光互聯 TX800-U 掃碼器無法輸出中文到光標的問題

文章插圖
工作方式選擇“開發”后點“下一頁”:
微光互聯 TX800-U 掃碼器無法輸出中文到光標的問題

文章插圖
這里有一些高級設置,在當前場景下主要關注掃碼設置這頁 , 里面有諸如碼制、前后綴、添加回車換行符、掃碼間隔時間、掃碼后動作、背光燈開關等,一般選擇默認即可 。配置好后點右側的“生成配置碼”,得到一張二維碼配置圖:
微光互聯 TX800-U 掃碼器無法輸出中文到光標的問題

文章插圖
掃碼器掃這個碼后再重新加電就可以按新模式工作了 。同理可以設置掃碼器按普通模式工作:
微光互聯 TX800-U 掃碼器無法輸出中文到光標的問題

文章插圖
文檔中的配置二維碼上面那個配置工具的優點是靈活 , 缺點是只支持 windows 平臺 , 如果沒有 windows 機器,可以直接使用開發文檔中幾個預定義的配置二維碼:
微光互聯 TX800-U 掃碼器無法輸出中文到光標的問題

文章插圖
這個文檔位于 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 版本也行,啟動后界面如下:

推薦閱讀