Немного фона, я работаю с необработанным потоком данных в Linux Mint (32 бит). Это из моей библиотеки ruby-buzz, которая считывает 24-битные комки из файла потока данных.Чтение входного потока USB из рубина.
Я только что переустановил свой ноутбук с Монетным двором Linux, 32-битным, и вдруг я вижу ошибку Errno::EINVAL: Invalid argument @ io_fread
.
[email protected] ~ $ sudo chmod 777 /dev/input/by-id/*
[email protected] ~ $ irb
2.2.1 :001 > path = '/dev/input/by-id/usb-Logitech_Logitech_Buzz_tm__Controller_V1-event-if00'
=> "/dev/input/by-id/usb-Logitech_Logitech_Buzz_tm__Controller_V1-event-if00"
2.2.1 :002 > f = File.open(path)
=> #<File:/dev/input/by-id/usb-Logitech_Logitech_Buzz_tm__Controller_V1-event-if00>
2.2.1 :003 > f.read(24)
Errno::EINVAL: Invalid argument @ io_fread - /dev/input/by-id/usb-Logitech_Logitech_Buzz_tm__Controller_V1-event-if00
from (irb):3:in `read'
from (irb):3
from /home/ajfaraday/.rvm/rubies/ruby-2.2.1/bin/irb:11:in `<main>'
2.2.1 :004 > f.read(32)
=> "\xAB>xW\x0E\xDC\x00\x00\x01\x00\xC0\x02\x01\x00\x00\x00\xAB>xW\x0E\xDC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
На той же системе, с тем же устройством ввода, я увидел проблему в /dev/input file created, but contains no data stream
Я не знаю, почему я раньше было хорошо использовать tail -f
смотреть сырым поток данных с терминала, и почему я ранее мог использовать file.read(24)
, чтобы захватить этот 24-битный кусок из ruby. В том числе на установку Монетного двора. Но теперь я тоже не могу.