Аппарат Primera Bravo XRP позволяет автоматизировать запись данных и печать маркировки на CD-диски, максимальная емкость 50 + 50 дисков.Подключается это устройство через USB.
В системе появляются три устройства (через внутренний usn hub), два cdrw и lp:
usb 2-2: new high-speed USB device number 62 using ehci_hcd
usb 2-2: New USB device found, idVendor=04b4, idProduct=6560
usb 2-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
hub 2-2:1.0: USB hub found
hub 2-2:1.0: 4 ports detected
usb 2-2.1: new full-speed USB device number 63 using ehci_hcd
usb 2-2.1: New USB device found, idVendor=0f25, idProduct=0012
usb 2-2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 2-2.1: Product: CD/DVD
usb 2-2.1: Manufacturer: Primera
usb 2-2.1: SerialNumber: 1000001
usblp0: USB Bidirectional printer dev 63 if 0 alt 0 proto 2 vid 0x0F25 pid 0x0012
usb 2-2.3: new high-speed USB device number 64 using ehci_hcd
usb 2-2.3: New USB device found, idVendor=0dbf, idProduct=0700
usb 2-2.3: New USB device strings: Mfr=2, Product=3, SerialNumber=1
usb 2-2.3: Product: USB to SATA Bridge
usb 2-2.3: Manufacturer: TSI
usb 2-2.3: SerialNumber: TSI08102925ad
scsi10 : usb-storage 2-2.3:1.0
usb 2-2.4: new high-speed USB device number 65 using ehci_hcd
usb 2-2.4: New USB device found, idVendor=0dbf, idProduct=0700
usb 2-2.4: New USB device strings: Mfr=2, Product=3, SerialNumber=1
usb 2-2.4: Product: USB to SATA Bridge
usb 2-2.4: Manufacturer: TSI
usb 2-2.4: SerialNumber: TSI081029002d
scsi11 : usb-storage 2-2.4:1.0
scsi 10:0:0:0: CD-ROM PIONEER DVD-RW DVR-215D 9.13 PQ: 0 ANSI: 0
sr0: scsi3-mmc drive: 40x/40x writer cd/rw xa/form2 cdda tray
sr 10:0:0:0: Attached scsi CD-ROM sr0
sr 10:0:0:0: Attached scsi generic sg1 type 5
scsi 11:0:0:0: CD-ROM PIONEER DVD-RW DVR-215D 9.13 PQ: 0 ANSI: 0
sr1: scsi3-mmc drive: 40x/40x writer cd/rw xa/form2 cdda tray
sr 11:0:0:0: Attached scsi CD-ROM sr1
sr 11:0:0:0: Attached scsi generic sg2 type 5
На сайте производителя есть драйверы для Linux, но они работают только с принтером (печать этикеток для CD).
Модель встроенного принтера, очень похоже, Lexmark Z80.
Работа с роботом-автоматом производится путем посылки бинарного пакета в порт принтера (/dev/usb/lp0)
Пакет состоит из 8 байт:
заголовок [0x1B, 0x04], команда [byte], резерв [0x00, 0x00, 0x00, 0x00], сумма 7 байт [byte]
Так же, на сайте производителя, указано что, если вы хотите получить все hex-коды, необходимо подписать Non-disclosure Agreement (NDA).
Но можно и не подписывать, основные необходимые дествия уже [[http://www.volny.cz/davidef/linux/index-en.html расписаны]] пользователем davidef для модели Primera Bravo II.
Состояние устройства можно получить через чтение порта принтера.
Вы получите две строки (последняя постоянно повторяется циклически с изменениями):
binary data 1, 0x0D
binary data 2, 0x0D
Я же подведу итог:
Манипуляции с cdrw производятся как обычно через eject и cdrecord ;)
Описание команд робота, на которые я получил хоть какую то реакцию:
05 - сброс устройства, пауза ~30 сек
80 - взять с левого лотка, положить на верхний CD
81 - взять с левого лотка, положить на принтер
82 - взять с левого лотка, положить на правый лоток
83 - взять с правого лотка, положить на верхний CD
84 - взять с правого лотка, положить на принтер
85 - взять с правого лотка, положить на левый лоток
86 - взять с верхнего CD положить на принтер
87 - взять с верхнего CD положить направо
88 - взять с верхнего CD положить налево
89 - взять с верхнего CD положить вниз (нижний CD либо наружу) !! не забудьте закрыть верхний CD !!
8A - взять с принтера положить направо
8B - взять с принтера положить налево
8С - взять с принтера положить на нижний CD (либо выбросит наружу)
8D - ?
8E - каретка в центр (пауза ~10 сек, возврат)
8F - каретка в центр (пауза ~10 сек, возврат)
90 - каретка влево (пауза ~10 сек, возврат)
91 - каретка в центр (пауза ~10 сек, возврат)
92 - взять диск (с последней позиции)/положить диск
93 - открыть принтер
94 - закрыть принтер
95 - каретка налево, картриджы направо, индикаторы перемигиваются, ждет какой то команды, если неверная команда происходит reset (пауза ~30 сек)
96 - каретка налево, картриджы направо, индикаторы постоянны
97 - возврат из 96 в исходное
98 - взять с принтера положить на верхний CD (либо выбросит наружу)
99 - проверяет диски в обеих лотках (слева и справа)
9A - взять слева ?
9B - опускает каретку с диском на 1 см, таймаут 10сек, поднимает в исходное
9С - каретка направо, картрижды налево, каретка вниз до упора и устройство выключается
9D - взять слева, положить на нижний CD
9E - взять справа, положить на нижний CD
9F - взять с нижнего CD положить на принтер
A0 - взять с нижнего CD положить направо
A1 - взять с нижнего CD положить налево
A2 - взять с нижнего CD, каретка вверх, положить на нижний CD (либо выбросит наружу)
A3 - каретка в центр (пауза ~10 сек, возврат)
A4 - взять слева, положить на верхний CD, взять еще один диск слева
A5 - взять справа, положить на верхний CD, взять еще один диск слева
A6 - взять слева, положить на нижний CD, взять еще один диск слева
A7 - взять справа, положить на нижний CD, взять еще один диск слева
A8 - взять с принтера положить на нижний CD (либо выбросит наружу), аналогично 8C
A9 - каретка в центр (пауза ~10 сек, возврат)
Этого вполне достаточно для автоматизации процесса, любым скриптовым языком.
Состояние устройства:
binary data 1:
65 байт - состояние устройства, 0x43 (открыта крышка), 0x42 (робот в процессе манипуляций), 0x49 (в готовности, обычное состояние)
binary data 2:
62 байт - количество дисков в правом лотке, после команды 99
63 байт - количество дисков в левом лотке, после команды 99
URL:
Обсуждается: http://www.opennet.dev/tips/info/2666.shtml