Connect USB HID Barcode Scanner and Scan any product. Add a case for storing your products in the database
Fork of USBHostKeyboard_HelloWorld by
main.cpp@7:4e0c80b26ba6, 2015-03-15 (annotated)
- Committer:
- Parkz
- Date:
- Sun Mar 15 11:37:05 2015 +0000
- Revision:
- 7:4e0c80b26ba6
- Parent:
- 1:2063e3713a99
Scan a product from barcode scanner and display total bill amount & no. of items scanned. Just 4 products stored for reference
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
samux | 0:88d52e197201 | 1 | #include "mbed.h" |
samux | 0:88d52e197201 | 2 | #include "USBHostKeyboard.h" |
Parkz | 7:4e0c80b26ba6 | 3 | int price=0,items=0,temp=0; |
Parkz | 7:4e0c80b26ba6 | 4 | unsigned long long int code=0; |
samux | 0:88d52e197201 | 5 | DigitalOut led(LED1); |
Parkz | 7:4e0c80b26ba6 | 6 | void update_price(int p); |
samux | 0:88d52e197201 | 7 | void onKey(uint8_t key) { |
Parkz | 7:4e0c80b26ba6 | 8 | printf("%c", key); |
Parkz | 7:4e0c80b26ba6 | 9 | if(key!=0x0A) |
Parkz | 7:4e0c80b26ba6 | 10 | { |
Parkz | 7:4e0c80b26ba6 | 11 | temp=key; |
Parkz | 7:4e0c80b26ba6 | 12 | temp-=48; |
Parkz | 7:4e0c80b26ba6 | 13 | code=temp+code*10; |
Parkz | 7:4e0c80b26ba6 | 14 | } |
Parkz | 7:4e0c80b26ba6 | 15 | else |
Parkz | 7:4e0c80b26ba6 | 16 | { |
Parkz | 7:4e0c80b26ba6 | 17 | switch(code) |
Parkz | 7:4e0c80b26ba6 | 18 | { |
Parkz | 7:4e0c80b26ba6 | 19 | case 42204268: update_price(200); |
Parkz | 7:4e0c80b26ba6 | 20 | break; |
Parkz | 7:4e0c80b26ba6 | 21 | case 8906002080021: update_price(25); |
Parkz | 7:4e0c80b26ba6 | 22 | break; |
Parkz | 7:4e0c80b26ba6 | 23 | case 8904043901015: update_price(17); |
Parkz | 7:4e0c80b26ba6 | 24 | break; |
Parkz | 7:4e0c80b26ba6 | 25 | case 8904004403756:update_price(36); |
Parkz | 7:4e0c80b26ba6 | 26 | break; |
samux | 0:88d52e197201 | 27 | } |
Parkz | 7:4e0c80b26ba6 | 28 | code=0; |
Parkz | 7:4e0c80b26ba6 | 29 | } |
Parkz | 7:4e0c80b26ba6 | 30 | } |
Parkz | 7:4e0c80b26ba6 | 31 | void update_price(int p) |
Parkz | 7:4e0c80b26ba6 | 32 | { |
Parkz | 7:4e0c80b26ba6 | 33 | items++; |
Parkz | 7:4e0c80b26ba6 | 34 | price+=p; |
Parkz | 7:4e0c80b26ba6 | 35 | printf("No. of items=%d\tPrice=Rs.%d\n",items,price); |
Parkz | 7:4e0c80b26ba6 | 36 | } |
samux | 0:88d52e197201 | 37 | void keyboard_task(void const *) { |
samux | 0:88d52e197201 | 38 | |
samux | 0:88d52e197201 | 39 | USBHostKeyboard keyboard; |
samux | 0:88d52e197201 | 40 | |
samux | 0:88d52e197201 | 41 | while(1) { |
samux | 0:88d52e197201 | 42 | // try to connect a USB keyboard |
samux | 0:88d52e197201 | 43 | while(!keyboard.connect()) |
samux | 0:88d52e197201 | 44 | Thread::wait(500); |
samux | 0:88d52e197201 | 45 | |
samux | 0:88d52e197201 | 46 | // when connected, attach handler called on keyboard event |
samux | 0:88d52e197201 | 47 | keyboard.attach(onKey); |
samux | 0:88d52e197201 | 48 | |
samux | 0:88d52e197201 | 49 | // wait until the keyboard is disconnected |
samux | 0:88d52e197201 | 50 | while(keyboard.connected()) |
samux | 0:88d52e197201 | 51 | Thread::wait(500); |
samux | 0:88d52e197201 | 52 | } |
samux | 0:88d52e197201 | 53 | } |
samux | 0:88d52e197201 | 54 | |
samux | 0:88d52e197201 | 55 | int main() { |
samux | 0:88d52e197201 | 56 | Thread keyboardTask(keyboard_task, NULL, osPriorityNormal, 256 * 4); |
samux | 0:88d52e197201 | 57 | while(1) { |
samux | 0:88d52e197201 | 58 | led=!led; |
samux | 0:88d52e197201 | 59 | Thread::wait(500); |
samux | 0:88d52e197201 | 60 | } |
samux | 0:88d52e197201 | 61 | } |