我有从 0 到 255 的整数,我需要将它们传递给编码为无符号字节的 OutputStream。我尝试使用这样的掩码进行转换,但如果 i=1,我的流的另一端(需要 uint8_t 的串行设备)认为我发送了一个无符号整数 = 6。
OutputStream out;
public void writeToStream(int i) throws Exception {
out.write(((byte)(i & 0xff)));
}
/dev/ttyUSB0
如果这会让事情变得或多或少有趣,我正在与使用 Ubuntu 的 Arduino 交谈。
这是Arduino代码:
uint8_t nextByte() {
while(1) {
if(Serial.available() > 0) {
uint8_t b = Serial.read();
return b;
}
}
}
我还有一些 Python 代码可以很好地与 Arduino 代码配合使用,如果我在 Python 中使用此代码,Arduino 很高兴收到正确的整数:
class writerThread(threading.Thread):
def __init__(self, threadID, name):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
def run(self):
while True:
input = raw_input("[W}Give Me Input!")
if (input == "exit"):
exit("Goodbye");
print ("[W]You input %s\n" % input.strip())
fval = [ int(input.strip()) ]
ser.write("".join([chr(x) for x in fval]))
我最终也想在 Scala 中执行此操作,但我在解决此问题时回退到 Java 以避免复杂性。