Re: [問題] BCB6 對應USB-條碼掃瞄器 指定edit
看板C_and_CPP作者charleshu (Analog Engineer)時間15年前 (2010/04/15 14:51)推噓3(3推 0噓 7→)留言10則, 3人參與討論串2/5 (看更多)
※ 引述《sommerno1 (神之玥)》之銘言:
: 小弟是bcb新手
: 最近在研究開發進銷存系統
: 目前卡在一個難題
: 就是我使用usb的條碼掃瞄器時
: 是否有辦法指定讓這串條碼
: 輸入至我指定的edit1中
: 例:當前mouse 不管 focus在edit1 edit2 或是任何地方
: 都將此筆掃描之條碼
: 輸入中edit1中
: 小弟只能提供p幣1000來給能幫忙的大大嚕
: 我只有這麼多>"<
: 請多指教q"q
1. 建立一個狀態值 state, 一開始為0
2. 攔截整個 Form 的 WM_CHAR 訊息.
3. 對任一個 WM_CHAR 訊息檢查
if (state==0) {
將 state 設為 1
並設定一個 timeout timer.
將畫面上每一個可能會被WM_CHAR影響的 edit box 儲存起來.
將 keybuffer 初使化為 WM_CHAR 裡的 key code.
} else if (state==1) {
將 現在的 key code 加進 keybuffer
判斷 keybuffer 裡是否已經有 EAN-13 的碼, 有公式可以算.
若是 將keybuffer 裡的 碼放進指定的 editbox 並取消
timeout, 恢復 state為0 並恢復所有 edit box
的值等清除工作
若不是, 重設 timeout timer 的時間, 避免 timeout
}
4. 若 timeout 發生, 清除 state 為 0.
整個大致上是這樣, 就是做一個大的 state machine, 當條件符合結束條件時,
就把整串從條碼來的資料放進指定的 editbox. 並恢復所有其他的 edit box,
因為在條碼輸入過程中可能會蓋到其他 editbox.
timeout 發生時就清除整個state, 因為有條碼時不可能 timeout. 若timeout
一定不是掃到條碼.
小心一點不難實做, 只是 code 瑣碎了點.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.67.195.213
推
04/15 15:52, , 1F
04/15 15:52, 1F
→
04/15 15:52, , 2F
04/15 15:52, 2F
→
04/15 15:53, , 3F
04/15 15:53, 3F
→
04/15 15:54, , 4F
04/15 15:54, 4F
→
04/15 15:57, , 5F
04/15 15:57, 5F
→
04/15 15:58, , 6F
04/15 15:58, 6F
推
04/15 16:08, , 7F
04/15 16:08, 7F
推
04/15 16:10, , 8F
04/15 16:10, 8F
→
04/15 16:11, , 9F
04/15 16:11, 9F
→
04/15 16:40, , 10F
04/15 16:40, 10F
討論串 (同標題文章)