Я пытаюсь записать отдельные байты в последовательный порт в Vala, используя FileOutputStream:
var dev = File.new_for_path("/dev/ttyACM0");
var dev_io = dev.open_readwrite();
var dev_o = dev_io.output_stream as FileOutputStream;
dev_o.write({0x13});
dev_o.flush();
Моя цель - сделать это похоже на echo -en '\x13' > /dev/ttyACM0
, но он просто ведет себя странно. Кажется, что байт 0x13 записывается несколько раз, иногда /dev/ttyACM0 блокируется на несколько секунд, иногда даже блокируется после выхода программы Vala, а иногда вообще не блокируется. Если я запишу свой FileOutputStream в файл и отправлю его на последовательный порт через cat byte_file > /dev/ttyACM0
, все будет в порядке.
Мне кажется, что GIO борется с тем, что файл является устройством. Моя проблема в том, что мне нужен GIO для мониторинга /dev/ttyACM0, если он подключен, и для асинхронного чтения.