串口写Arduino

Serial write Arduino

函数 Serial.write() 有问题 我正在测试与 python 的连接,我可以发送数字、单词或字母,但是当我尝试发送值变量函数 Serial.write 给我一个错误。那么你能告诉我发生了什么事吗?

#define Pin A1
void setup() {
    pinMode(Pin, INPUT); 
    Serial.begin(9600); 
}
void loop() {
    String a = String(13);
    Serial.write(a);
    
}


ERROR
C:\Users\ADMIN\AppData\Local\Arduino15\packages\arduino\hardware\avr.8.2\cores\arduino/Print.h:52:12: note:   no known conversion for argument 1 from 'String' to 'const char*'

exit status 1
no matching function for call to 'HardwareSerial::write(String&)'

如果要发送字符串意味着您直接在 serial.write() 中输入字符串。而将字符串直接输入 serial.write() 则它将将该字符串作为 const char* 而不是作为字符串类型

Serial.write("hello");

否则你不能像serial.write那样直接发送字符串。你可以使用serial.print.use字符数组来发送

Serial.write(MyString, sizeof(MyString));

否则你可以发送每个字符

void writeString(String stringData) { // Used to serially push out a String with Serial.write()

  for (int i = 0; i < stringData.length(); i++)
  {
    Serial.write(stringData[i]);   // Push each char 1 by 1 on each loop pass
  }

}// end writeString

write 只能发送单个字节(或单个字符)、字节数组(明确提供长度)或以 nul 结尾的字符串(不是 String 对象)。

看起来你想要 Serial.print(a); 而不是 Serial.write(a);
或者 Serial.write(a.c_str()); 或者只是 Serial.print(13);.

由于您不想在发送 34、56、434、2 时得到“34564342”,我建议您将它们作为带有 println 的行发送,然后读取 [=23= 中的行].