Я постараюсь захватить данные со сканера штрих-кода.Формат штрих-кода - cade 93.
КОД 93 СИМВОЛОГИЯ : http://www.barcodeisland.com/code93.phtml
Мне удаётся захватить дату со сканера штрих-кода с помощью программы perl, но я не получаюНе понимаю, как преобразовать двоичный файл в строку или ascii?
Мой тестовый штрих-код 'TEST93'.Кодировка с CODE 93 будет 101011110 110100110 110010010 110101100 110100110 100001010 101000010 101011110
Я получил hexdump:
0x0000 : 02 00 17 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
0x0000 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
0x0000 : 02 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
0x0000 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
0x0000 : 02 00 16 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
0x0000 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
0x0000 : 02 00 17 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
0x0000 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
0x0000 : 00 00 26 00 00 00 00 00 00 00 00 00 00 00 00 00 : ..&.............
0x0000 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
0x0000 : 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 : .. .............
0x0000 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
0x0000 : 00 00 28 00 00 00 00 00 00 00 00 00 00 00 00 00 : ..(.............
0x0000 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
ПРИМЕР КОДИРОВАНИЯ 93 КОДА 93
The START character (*): 101011110.
The digit "T": enocded as 110100110.
The digit "E": enocded as 110010010.
The digit "S": enocded as 110101100.
The digit "T": enocded as 110100110.
The digit "9": enocded as 100001010.
The digit "3": enocded as 101000010.
The STOP character (*): 101011110.
$char2bin{'T'} = '110100110'
$value2char{'29'} = 'T'
I recieve the barcode scanner binary and get hexdump :
0x0000 : 02 00 17 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
0x0000 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
Как преобразоватьдвоично в строку?
use Device::HID;
use Data::Hexdumper qw(hexdump);
my $dev = Device::HID->new(vendor => 0x04b4, product => 0x0100) or die "No such device !\n";
$dev->timeout = 0.1; # seconds (=100 ms)
my $buf;
my $len=128;
my $i=0;
my %char2bin=(
'T' => '110100110',
'E' => '110010010',
'S' => '110101100',
'9' => '100001010',
'3' => '101000010',
'*' => '101011110', # start/stop
);
my %value2char=(
'29' => 'T',
'14' => 'E',
'28' => 'S',
'9' => '9',
'3' => '3',
'-' => '*', # start/stop
);
while(defined(my $in = $dev->read_data($buf, $len))){
if ($in == 0) {
next;
}
print hexdump(
data => $buf, # what to dump
suppress_warnings => false,
space_as_space=> true,
);
}