我一直在尝试用ATtiny 85创建串行电机控制器。我把它设置为奴隶。它一次从一个主字节接收字符,并将它们加载到char数组中进行解析。
我遇到的问题是我找不到连接它们的方法而不是添加值。
rxChrData = TinyWireS.receive();
rxString[rxIndex] = char(rxChrData);
rxIndex++;
if (rxChrData == ':'){
//rxString 2-3 each holds the value 9.
//The lines below print "27" on the serial line.
n = int(rxString[2]+rxString[3]+rxString[4]);
Serial.println(n);
rxIndex = 0;
}
n的值是27,我需要它是999。
我尝试将其转换为String,连接,然后返回整数。没运气。我也尝试了一些其他无能为力的工作而没有运气。
答案 0 :(得分:3)
喜欢这个
n = 100*rxString[2]+10*rxString[3]+rxString[4];
或者这个
n = rxString[2]+10*rxString[3]+100*rxString[4];
答案 1 :(得分:0)
另一种选择:使用strtol():
#include <cstdlib>
n = strtol( rxString+2, NULL, 10 );
答案 2 :(得分:0)
采用更一般的方法......
if (rxChardata == ':') {
// Consume the ':'
rxCharData = TinyWireS.receive();
int n = 0;
while (isdigit(rxCharData)) {
n = n * 10 + (rxCharData - '0');
rcCharData = TinyWireS.receive();
}
Serial.println(n);
}
但是你需要检查当你调用TinyWireS.receive()时会发生什么,并且没有更多的数字......它会返回'\ 0'吗?在这种情况下,上述方法将起作用。