2010-04-22 17 views
9

Gần đây tôi đã mua một máy quét mã vạch Metrologic (cổng USB), vì mọi người đều biết nó hoạt động như một bộ mô phỏng bàn phím ra khỏi hộp.Làm cách nào để đọc mã vạch mà trước tiên không có tiêu điểm người dùng tập trung vào hộp văn bản?

Làm cách nào để định cấu hình máy quét và ứng dụng của tôi để ứng dụng của tôi có thể xử lý dữ liệu mã vạch trực tiếp? Tức là, tôi không muốn người dùng tập trung vào một "trường văn bản" và sau đó xử lý dữ liệu khi sự kiện KeyPress kích hoạt.

Trả lời

5

Thông thường, máy quét mã vạch có thể được định cấu hình để gửi một số ký tự trước và sau chuỗi. Vì vậy, nếu bạn nối thêm ví dụ "F12" trước chuỗi mã vạch, bạn có thể nắm bắt và di chuyển tiêu điểm đến đúng trường.

Kiểm tra hướng dẫn sử dụng máy quét mã vạch cách thực hiện điều đó.

+3

Thông thường bạn * muốn * để có trường văn bản, để người dùng có thể nhập mã vạch theo cách thủ công nếu quá trình quét không thành công. Đó là lý do tại sao tôi nghĩ đây là lựa chọn tốt nhất. –

+0

Đây là cách chúng tôi làm điều đó với người đọc kiểm tra; cho dù đó là bàn phím hay USB, chúng tôi định cấu hình chúng để gửi chuỗi ký tự bắt đầu không dễ dàng nhập vào bàn phím.Khi chúng ta thấy chuỗi đó thông qua phương thức keydown của biểu mẫu, chúng ta nuốt các phím bấm đặc biệt đó và di chuyển tiêu điểm vào hộp chỉnh sửa mong muốn. Hoạt động khá tốt. – robsoft

1

tôi sẽ đoán là cách dễ nhất để làm điều này sẽ là để đánh chặn key-ép ở mức cao hơn, chẳng hạn như PreviewKeyDown trong winforms (hoặc sử dụng KeyDown trên biểu mẫu, thiết KeyPreview để true, và sử dụng e.SuppressKeyPress để ngăn chặn sự chủ chốt đi xuống các điều khiển). Có có thể là API trực tiếp cho thiết bị; có thể không.

0

Bạn có thể sử dụng sự kiện OnShortcut trên biểu mẫu để chặn các lần nhấn bàn phím. Kiểm tra xem tiền tố bạn đã định cấu hình trên vạch mã vạch có xuất hiện hay không, và đặt làm phím bấm Handled al cho đến khi bạn nhận được hậu tố của máy quét mã vạch. Trong trình xử lý Shortcut của bạn, hãy tạo chuỗi mã vạch

Mã sau đây được điều chỉnh từ thứ tôi sử dụng, nhưng chưa được kiểm tra ở dạng hiện tại.

// Variables defined on Form object 
GettingBarcode : boolean; 
CurrentBarcode : string; 
TypedInShiftState: integer; // 16=shift, 17=ctrl, 18=alt 

procedure Form1.FormShortCut(var Msg: TWMKey; var Handled: Boolean); 
var 
    Character:Char; 
begin 
    Character:=Chr(MapVirtualKey(Msg.CharCode,MAPVK_VK_TO_CHAR)); 
    if GettingBarcode then 
    begin 
    // Take care of case 
    if (TypedInShiftState<>16) and CharInSet(Character,['A'..'Z']) then 
     Character:=Chr(Ord(Character)+32); 
    TypedInShiftState:=0; 
    // Tab and Enter programmed as suffix on barcode scanner 
    if CharInSet(Character,[#9, #13]) then 
    begin 
     // Do something with your barcode string 
     try 
     HandleBarcode(CurrentBarcode); 
     finally 
     CurrentBarcode:=''; 
     Handled:=true; 
     GettingBarcode:=False; 
     end; 
    end 
    else if CharInSet(Character,[#0..#31]) then 
    begin 
     TypedInShiftState:=Msg.CharCode; 
     Handled:=True; 
    end 
    else begin 
     CurrentBarcode:=CurrentBarcode+Character; 
     Handled:=true; 
    end; 
    end 
    else begin 
    if Character=#0 then 
    begin 
     TypedInShiftState:=Msg.CharCode; 
    end 
    else if (TypedInShiftState=18) and (Character='A') then 
    begin 
     GettingBarcode:=True; 
     CurrentBarcode:=''; 
     Handled:=true; 
    end; 
    end; 
end; 
3

Mặc dù mã vạch của bạn có đầu nối USB. Nó có thể được lập trình như một bàn phím nêm hoặc RS232. Xem trang này http://www.instrumentsandequipmentco.com/support/faq-metrologic.htm đâu nó nói

H. Sự khác biệt giữa bàn phím USB và USB Point-of-Sale là gì? Khi MX009 được thiết lập để giao tiếp dưới dạng Bàn phím USB, dữ liệu được quét sẽ xuất hiện trong ứng dụng hiện tại đang hoạt động trên PC của bạn. Dữ liệu được nhập giống như khi các phím được nhấn trên bàn phím. Khi MX009 được thiết lập để giao tiếp dưới dạng thiết bị USB Point-of-Sale, dữ liệu được truyền tới cổng USB như dữ liệu RS232 và cổng USB phải được cấu hình giống như cổng COM. MX009 rời khỏi nhà máy được đặt cho Bàn phím USB hoặc USB Điểm bán hàng.

Khi chương trình của bạn chấp nhận RS232, bạn không còn cần tập trung vào trường văn bản nữa.

  1. lập trình lại mã vạch của bạn như Point-of-Sale (RS232)
  2. lập trình lại để gửi một hậu tố thường - vận chuyển-lợi nhuận/CR/$ 0D ở phần cuối của mã vạch.

Tìm Quay trở lại để biết khi nào mã vạch hoàn chỉnh có sẵn cho mã của bạn.

Các vấn đề liên quan