void setup() {
Serial.begin(9600);
int r = 0;
Serial.print("How long\n");
int lng = Serial.read();
while (Serial.available() == 0) {
//Empty
}
char string[] = {'0'};
while (r < 62) {
if(r == 10) {
string[0] += 7;
}
if(r ==36) {
string[0] += 6;
}
Serial.println(string);
r ++;
string[0] ++;
}
Serial.print(lng, DEC);
}
void loop() {
}
好的,第一个问题是第Serial.print(lng, DEC);
行。它在串行监视器上打印出-1。如果我在int lng = Serial.read()
期间输入3,我怎样才能让它返回输入?
其次,如何将字符串的长度设置为lng并确保每个空格以0
开头而不是空白?
最终工作代码:
void setup() {
Serial.begin(9600);
int r = 0;
Serial.print("How long\n");
int lng;
while (1)
if (Serial.available() > 0)
{
lng = Serial.read();
break;
}
int l = (lng - 48);
char string[l];
for (int i = 0; i < l; i++)
string[i] = '0';
while (r < 62) {
if (r == 10) {
string[0] += 7;
}
if (r == 36) {
string[0] += 6;
}
Serial.println(string);
r++;
string[0]++;
}
char eof = '/';
Serial.println(eof);
}
void loop() {
}
char eof ='/'是因为我有一个与Arduino对话的Python脚本。打印eof
是一个标志,让Python知道它已完成打印并关闭串行连接。
答案 0 :(得分:1)
程序在尝试读取后进入忙碌状态。所以它不会读任何东西。 改变这一部分:
int lng = Serial.read();
while(Serial.available() == 0){}
成:
int lng;
while(1)
if (Serial.available() > 0)
{
lng = Serial.read();
break;
}
关于第二个问题:
char myString[lng];
for (int i = 0; i < lng; i++)
myString[i] = '0';