Barcode scanner buffer read manipulation

Hello,

I'm facing some problems with a barcode scanner from Cygnal Inc, model Sweda SL-20. Info from lsusb -v:

Bus 003 Device 003: ID 10c4:ff11 Cygnal Integrated Products, Inc. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x10c4 Cygnal Integrated Products, Inc.
  idProduct          0xff11 
  bcdDevice            1.00
  iManufacturer           1 Gue
  iProduct                2 Gue
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           41
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              200mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
      iInterface              5 (error)
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.00
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      65
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               5
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               5
Device Status:     0x0001
  Self Powered

If I use the scanner on Windows or Linux default programs, no problem decoding the barcodes.

But I have a POS application that when I scan a barcode seems to be too fast for the application.

I used the manual barcode codes to setup the device, but no effect.

If I scan to gedit, nano, terminal, firefox, rdp client, etc, everything works, but in this particular application doesn't. I tried to contact the supplier, but they said that the device isn't certified by them, so no support at all.

Searching on google, I found several samples codes to simulate I want, I found bash script, python c++.

What I need is a way to intercept the input device buffer and resend the input with a bigger delay between each char.

How can I do this? using curses or ncurses?

Kind regards, JP

If you can't increase the interchar delay within the scanner, how about using stdbuf , given the application reads from stdin?

Hi,
Thank you for your quick replay. Can you explain or point e the direction to make use of the stdbuf?

Regards,
Minharo.

man stdbuf :

In your case, COMMAND would be your application.

Hello again,

Thank you for your help, I got this error:

I tried to use stdbuf, but it has not effect. It already has input mode to LINE BUFFER. I'm searcing about it, but if you have any sample code to provide, it'll help me a lot.

---------- Post updated 03-18-16 at 08:07 AM ---------- Previous update was 03-17-16 at 10:47 AM ----------

Hi,

Another suggestion ?

Regards,
Minharo