⚠️ This Project is 8 years old: I refer to a newer project, based on this one. They modified the code some extent to provide better timeouts in the USB communication and maybe it will be more active in development: https://github.com/StefanMack/DokuCam
MultiOS Client for Elmo Document Camera based on libusb (pyusb) and pygame.
Elmo is a company which sells high res document viewer and other education based equipment, like voting systems and similar.
We are currently only focused on the document camera itself. The only camera we have on hand is a L-12 (predecessor of TT-12)
At the moment we are testing on linux devices.
You'll need: pygame, pil and pyusb.
you have to start ./start.sh
- Version
- Sync1
- Sync2
- Sync3
- Picture
- Version
- Picture
- Version ...
As far as we know, the syncs are not needed. We are not quite sure why they are there, and what these numbers are, but the original software asks for it.
self.msg = {
'version': [0,0,0,0,0x18,0,0,0,0x10,0x8B,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
,'picture': [0,0,0,0,0x18,0,0,0,0x8e,0x80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
,'buttons': [0,0,0,0,0x18,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
,'zoom_stop': [0,0,0,0,0x18,0,0,0,0xE0,0,0,0,0x00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
,'zoom_in': [0,0,0,0,0x18,0,0,0,0xE0,0,0,0,0x01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
,'zoom_out': [0,0,0,0,0x18,0,0,0,0xE0,0,0,0,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
,'focus_auto': [0,0,0,0,0x18,0,0,0,0xE1,0,0,0,0x00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
,'brightness_stop': [0,0,0,0,0x18,0,0,0,0xE2,0,0,0,0x04,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
,'brightness_dark': [0,0,0,0,0x18,0,0,0,0xE2,0,0,0,0x03,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
,'brightness_light':[0,0,0,0,0x18,0,0,0,0xE2,0,0,0,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
,'brightness_auto': [0,0,0,0,0x18,0,0,0,0xE2,0,0,0,0x05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
,'focus_wide': [0,0,0,0,0x18,0,0,0,0xEA,0,0,0,0x00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
,'focus_near': [0,0,0,0,0x18,0,0,0,0xEA,0,0,0,0x01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
,'focus_stop': [0,0,0,0,0x18,0,0,0,0xEA,0,0,0,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
}
The answers are provided below. Unfortunately the focus and the brightness have to be started and stopped. That's why there is a stop command.
Version
(IN 01:00:81, OUT 01:00:02)
<< 0000 0000 1800 0000 108B 0000 0000 0000
<< 0000 0000 0000 0000 0000 0000 0000 0000
>> 0100 0000 1800 0000 0000 0000 4C2D 3132 ............L-12
>> 0000 0000 0000 0000 0000 0000 0000 0000 ................
Sync1
(IN 01:00:81, OUT 01:00:02)
<< 0000 0000 1800 0000 118B 0000 0000 0000
<< 0000 0000 0000 0000 0000 0000 0000 0000
>> 0100 0000 1800 0000 0000 0000 5741 2E31 ............WA.1
>> 2E30 3034 0000 0000 0000 0000 0000 0000 .004............
Sync2
(IN 01:00:81, OUT 01:00:02)
<< 0000 0000 1800 0000 118B 0000 0100 0000
<< 0000 0000 0000 0000 0000 0000 0000 0000
>> 0100 0000 1800 0000 0000 0000 5741 2E31 ............WA.1
>> 2E31 3931 0000 0000 0000 0000 0000 0000 .191............
Sync3
(IN 01:00:81, OUT 01:00:02)
<< 0000 0000 1800 0000 118B 0000 0200 0000
<< 0000 0000 0000 0000 0000 0000 0000 0000
>> 0100 0000 1800 0000 0000 0000 5741 2E31 ............WA.1
>> 2E30 3630 0000 0000 0000 0000 0000 0000 .060............
Picture
(IN 01:00:83, OUT 01:00:04)
<< 0000 0000 1800 0000 8E80 0000 KK00 0000
<< 0000 0000 0000 0000 0000 0000 0000 0000
>> 2000 0000 1800 0000 XXXX 0000 0000 0000
>> 0000 0000 0000 0000 0000 0000 0000 0000
>> 0200 0000 DDDD 0000 PPPPPPPPPPPPPPPPPPP
>> PPPP ....
>> 0200 0000 DDDD 0000 PPPPPPPPPPPPPPPPPPP
>> PPPP ....
- X : size of picture without header
- K : JPEG Compression 10-100
- P : picture as bytestream (splitted in max 65272 bytes + 8 byte header)
- D : size of packet payload, max size: 0xfef8