serial-port – Pharo:从Arduino串口读取字节

我有一个挂掉/ dev / ttyUSB1的Arduino,以115kbaud进行通信.下面的陈述可以很好地进行下一次’方法调用,Pharo挂起. Arduino通过将单个字符$1发送回计算机来响应’99’命令.如果我拉出电缆,程序会继续,并且s包含字符$1,就像它应该的那样,但直到我拔出电缆.所以我的印象是“下一个”在它只读取一个字节之后才会返回(好吧,确定,没有任何内容表明它应该在读取单个字节后返回).如何从Pharo中的流中读取单个字节?或者如何打开读/写字节流?我没有在源类中找到任何似乎这样做的东西.我已经尝试将流设置为ascii,二进制,文本,并且它不会改变行为.

s := FileStream oldFileNamed: '/dev/ttyUSB1'.
s readWrite.
s nextPutAll: '99'. "'99' is successfully received by Arduino"
s next.             "hangs here"
s close.

谢谢你的帮助.

最佳答案 看一下FileStream的类侧.在向FileFile请求oldFileNamed时,你会注意到你正在获得一个MultiByteStream(concreteStream).

可以使用TextConverter或缓冲区. open:forWrite:调用MultiByteStream,调用super. StandardFileStream> open:forWrite:调用enableReadBuffering.

您可能希望在流上调用disableReadBuffering.

点赞