我正在尝试使用 FileOutputStream 将单个字节写入 Vala 中的串行端口:
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
但它的行为很奇怪。Byte 0x13 好像被多次写入,有时 /dev/ttyACM0 被阻塞了几秒钟,有时甚至在 Vala 程序退出后被阻塞,有时根本没有被阻塞。如果我将 FileOutputStream 写入文件并通过一切将其发送到串行端口,cat byte_file > /dev/ttyACM0
一切都很好。
在我看来,GIO 似乎在为文件是一个设备这一事实而苦苦挣扎。我的问题是我需要 GIO 来监控 /dev/ttyACM0 是否已插入并进行异步读取。