为了账号安全,请及时绑定邮箱和手机立即绑定

串行写入 Arduino

串行写入 Arduino

繁星淼淼 2023-02-15 15:41:43
我的函数 Serial.write() 有问题我正在用 python 测试我的连接,我可以发送数字、单词或字母,但是当我尝试发送变量的值时,函数 Serial.write 给我一个错误。那么你能告诉我发生了什么事吗?#define Pin A1void setup() {    pinMode(Pin, INPUT);     Serial.begin(9600); }void loop() {    String a = String(13);    Serial.write(a);    }ERRORC:\Users\ADMIN\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.2\cores\arduino/Print.h:52:12: note:   no known conversion for argument 1 from 'String' to 'const char*'exit status 1no matching function for call to 'HardwareSerial::write(String&)'
查看完整描述

2 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

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


Serial.write("hello");

否则你不能直接在 serial.write 中发送字符串。你可以使用 serial.print.use char 数组发送


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


查看完整回答
反对 回复 2023-02-15
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

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

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

由于您不想在发送 34、56、434、2 时得到“34564342”,我建议您将它们作为行发送,然后println在 Python 中读取行。


查看完整回答
反对 回复 2023-02-15
  • 2 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信