Pharo:从Arduino串口读取字节

时间:2013-10-01 22:37:13

标签: serial-port arduino smalltalk pharo

我有一个挂掉/ 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.

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

看一下FileStream的类侧。在向FileFile请求oldFileNamed时,你会注意到你正在获得一个MultiByteStream(concreteStream)。 可以使用TextConverter或缓冲区。 open:forWrite:调用MultiByteStream,调用super。 StandardFileStream> open:forWrite:调用enableReadBuffering。

您可能想在流上调用disableReadBuffering。

答案 1 :(得分:1)

有一个Arduino软件包解决了所有这些问题,请看看这个回购:

http://ss3.gemstone.com/ss/Arduino.html