4

我有一个挂在 /dev/ttyUSB1 上的 Arduino,以 115kbaud 通信。下面的语句在 Pharo 挂起的“下一个”方法调用之前都可以正常工作。Arduino 通过将单个字符 $1 发送回计算机来响应“99”命令。如果我拔出电缆,程序将继续,并且 s 包含字符 $1 就像它应该的那样,但直到我拔出电缆。所以我的印象是'next'在读取一个字节后不会返回(好吧,当然,没有什么说它应该在读取一个字节后返回)。如何从 Pharo 中的流中读取单个字节?或者如何打开读/写字节流?我在源类中没有发现任何似乎这样做的东西。我尝试将流设置为 ascii、二进制、文本,但它不会改变行为。

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

谢谢你的帮助。

4

2 回答 2

1

看一下 FileStream 的类方面。在那里,您会注意到,当向 Filestream 询问 oldFileNamed: 时,您会得到一个 MultiByteStream(concreteStream)。可能涉及 TextConverter 或缓冲区。调用 MultiByteStream 的 open:forWrite:,并且调用 super。StandardFileStream>open:forWrite: 调用 enableReadBuffering。

您可能想在您的流上调用 disableReadBuffering。

于 2013-10-02T07:12:15.497 回答
1

有一个 Arduino 包解决了所有这些问题,看看这个 repo:

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

于 2013-10-02T07:43:29.853 回答