我想知道我的代码中有什么问题 或者它实际上是否正确?
目前我有4个代码保存变量:
我将其输入到字符数组(allcode)中,然后将其传送到它们到达的接收方(希望格式相同?)。
问题是输出有额外的字符,我无法弄清楚原因。它只是Arduino串行监视器吗?
也许我没有设置空字符或没有在每个或所有数组中分配足够的内存。
为了测试sprintf
和scanf
,我已将所有内容都放在同一草图中,这可能就是问题所在。
渴望的是:
1234,12,123,1234
1234,12,123,1234
我的代码是:
//declare "code-holding" vars for send
char hDroid[5] = {
"1234" }; //4 or less digits/keys eg 1234 + NULL
char pDroid[3] = {
"21" }; //2 digits/keys eg 12 + NULL
char ooDroid[4] = {
"123" }; //3 or less digits/keys eg 123 + NULL
char devDroid[5] = {
"1234" }; //4 or less digits/keys eg 9999 + NULL
char allDroid[18] = {
'\0' }; //total array count including NULL's
//declare "code-holding" vars for receive
char hDroid1[5] = {
'\0' }; //4 or less digits/keys eg 1234 + NULL
char pDroid1[3] = {
'\0' }; //2 digits/keys eg 12 + NULL
char ooDroid1[4] = {
'\0' }; //3 or less digits/keys eg 123 + NULL
char devDroid1[5] = {
'\0' }; //4 or less digits/keys eg 9999 + NULL
void setup() {
Serial.begin(9600);
}
void loop() {
sprintf(allDroid, "%s,%s,%s,%s", hDroid, pDroid, ooDroid, devDroid);
Serial.println("This is allDroid "); //show content of allDroid
Serial.println(allDroid); //show content of allDroid
delay(1000);
sscanf(allDroid, "%s,%s,%s,%s", &hDroid1, &pDroid1, &ooDroid1, &devDroid1); // Converts a string to an array
Serial.println("this is hDroid1,pDroid1,ooDroid1,devDroid1 "); //show content of allDroid
Serial.println(hDroid1);
Serial.println(pDroid1);
Serial.println(ooDroid1);
Serial.println(devDroid1);
//clear the arrays
memset(allDroid, 0, sizeof(allDroid));// This line is for reset the StringReceived
memset(hDroid1, 0, sizeof(hDroid1));// This line is for reset the StringReceived
memset(pDroid1, 0, sizeof(pDroid1));// This line is for reset the StringReceived
memset(ooDroid1, 0, sizeof(ooDroid1));// This line is for reset the StringReceived
memset(devDroid1, 0, sizeof(devDroid1));// This line is for reset the StringReceived
}
输出是:
This is allDroid
1234,21,123,1234
this is hDroid1,pDroid1,ooDroid1,devDroid1
1234,21,123,1234
21,123,1234
123,1234
1234
答案 0 :(得分:1)
好的,我今天有时间。我运行你的代码,它的工作非常好。这是我的输出。我使用的是最新的Arduino IDE,我的主板是Arduino Nano。
我认为垃圾值是因为旧的ide串行监视器。只需使用升级后的IDE。
答案 1 :(得分:0)
似乎只有在arduino IDE 1.0.5-r2上使用串行监视器时,我在Arduino IDE 1.6.5版本上尝试了相同的代码,并且'奇怪的字符从输出窗口消失了!
This is allDroid
1234,21,123,1234
this is hDroid1,pDroid1,ooDroid1,devDroid1
1234,21,123,1234
作为一个完整性检查可以某种灵魂,请检查我的代码在数组及其维度和Null终止方面的正确性?