2010-10-20 93 views
1

我正在設計一個Web應用程序的過程中,我正在考慮合併一些條形碼讀取以方便數據輸入。假設我有一份快遞員需要完成的任務清單。我想打印類似如下頁面的內容:條碼網站互動

+----------------------------------------------------------------------+ 
| Task List         || || |||| || || ||| (a) | 
|                  | 
| Task One         ||| || |||||| || ||| (b) | 
| Task Two         ||| || || | | || ||| (c) | 
| Task Three         | |||||| || ||| |||| (d) | 
|                  | 
|            ||||| |||| || || ||| (e) | 
+----------------------------------------------------------------------+ 

的條形碼由||||| | ||| || (x)在每行的末尾表示。打印頁面應該直接使用條形碼servlet作爲燒烤。我想有一個通用的方法來攔截這些條形碼,並在jQuery中進行操作。例如:

  • 條形碼(一)可以是goto:/tasklist/123:
  • 條碼(b)中,(c)和(d)可以是add:31222:add:31223,和add:31224:
  • 條形碼(e)中可能是submit::

當掃描條形碼(一)我會去那個頁面。當掃描條形碼(b),(c),(d)時,我會填充頁面中的文本輸入。當掃描條形碼(e)時,我會提交表格。我正在考慮在每個頁面上都可以使用某種形式的jQuery偵聽器,我可以根據條形碼的第一個命令來註冊動作。我知道我可以對條形碼設備進行編程以合併某些邏輯,但是希望避免出現這種情況,這樣任何條形碼都可以實現,而且我不必處理編程它們。

我甚至認爲每個條形碼可能必須以一些魔術標記開始,以區分常規輸入和條形碼輸入。也許像$**$:goto:/tasklist/123:。現在的問題是,我將如何去做jQuery來攔截這組命令,以及爲我創建的不同動作註冊處理程序的正確方法是什麼(例如:$**$:add:31222:)?

+0

「打印頁面應該直接使用條形碼servlet作爲燒烤」 - 呃? :-P – 2010-10-20 03:05:42

+3

大多數(如果不是全部)條形碼掃描儀的工作方式幾乎與USB數字鍵盤一樣。他們掃描一個條形碼,然後「鍵入」數字,就好像它是一個鍵盤一樣 - 所以網頁實際上並不需要特殊的軟件來接收來自條形碼掃描器的輸入。 – 2010-10-20 03:07:24

+0

我最喜歡搞清楚javascript方面。 – rmarimon 2010-10-21 21:29:09

回答

3

我做了一個類似的應用程序,所以這裏是我的兩分錢。

USB掃描儀基本上像USB鍵盤一樣工作。大多數人會發送一個回車鍵作爲終止字符,但這可以在大多數設備上進行配置。我依靠終止字符在我的用戶界面中執行操作。 (回車會默認提交當前選擇的表格。)

另一個問題是,如果這是一個移動應用程序,你真的想避免往返於服務器儘可能多。我通過在UI中擁有大量應用程序邏輯來解決此問題,但所有業務邏輯仍在服務器上,因此爲了使操作生效,用戶需要連接並能夠POST到服務器。

所以,你的問題的核心。考慮這樣的事情:

var state = 'WAITING'; # super simple state 

function add(data) { 
    # courier checks an item, 'data' contains the data from the scanner 
} 

function input_handler(input) { 
    if (state == 'WAITING') { 
     if (input == 'DONE' || input == 'EXIT') { 
      state = 'DONE'; 
      # abort, whatnot 
     } else { 
      state = 'SCAN'; 
      input_handler(input); # recurse, with new state 
     } 
    } else { 
     add(input); 
    } 
} 

這基本上是一個手動編碼的狀態機。當快遞員檢查'我想開始掃描這個訂單' - 條形碼時,您會進入一種模式,其中每個輸入都會發送到您的掃描處理程序。當他掃描「我完成了」 - 條形碼,你驗證結果等。這可以通過實際使用真實狀態機來改進。

您應該保持條碼儘可能簡單。像'SCAN','EXIT','NOTHING_MORE_TO_SCAN'這樣的命令是很好的,因爲它們是通用的,你的應用程序不需要解析條形碼的含義。

讓他們簡單化的另一個原因是,您遇到標籤已損壞且無法掃描的情況。然後,用戶必須能夠手動輸入數據,而無需花費額外的時間查找特殊字符等。