C++ 我不知道如何使用Serial.println
我写了下面的代码。但是Serial.println发生了错误 我相信代码是错误的。但我不知道怎么了。 你能告诉我怎么解决这个问题吗C++ 我不知道如何使用Serial.println,c++,arduino,C++,Arduino,我写了下面的代码。但是Serial.println发生了错误 我相信代码是错误的。但我不知道怎么了。 你能告诉我怎么解决这个问题吗 class Move { public: int x; int y; void go(int w, int h); }; void Move::go(int w, int h) { x += w; y += h; } Move m; void setup() { Serial.begin(9600); m
class Move {
public:
int x;
int y;
void go(int w, int h);
};
void Move::go(int w, int h) {
x += w;
y += h;
}
Move m;
void setup() {
Serial.begin(9600);
m.x = 10;
m.y = 20;
Serial.println("at start: x is %d, y is %d", m.x, m.y);
}
void loop() {
m.go(10, 20);
Serial.println("x is %d, y is %d", m.x, m.y);
}
错误如下:
c:\Users\a\Dropbox\!Arduino\class\classes.ino: In function 'void setup()':
classes:19:58: error: no matching function for call to 'HardwareSerial::println(const char [27], int&, int&)'
Serial.println("at start: x is %d, y is %d", m.x, m.y);
^
In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:26:0,
from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/HardwareSerial.h:29,
from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:233,
from sketch\classes.ino.cpp:1:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:77:12: note: candidate: size_t Print::println(const __FlashStringHelper*)
size_t println(const __FlashStringHelper *);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:77:12: note: candidate expects 1 argument, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:78:12: note: candidate: size_t Print::println(const String&)
size_t println(const String &s);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:78:12: note: candidate expects 1 argument, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:79:12: note: candidate: size_t Print::println(const char*)
size_t println(const char[]);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:79:12: note: candidate expects 1 argument, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:80:12: note: candidate: size_t Print::println(char)
size_t println(char);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:80:12: note: candidate expects 1 argument, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:81:12: note: candidate: size_t Print::println(unsigned char, int)
size_t println(unsigned char, int = DEC);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:81:12: note: candidate expects 2 arguments, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:82:12: note: candidate: size_t Print::println(int, int)
size_t println(int, int = DEC);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:82:12: note: candidate expects 2 arguments, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:83:12: note: candidate: size_t Print::println(unsigned int, int)
size_t println(unsigned int, int = DEC);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:83:12: note: candidate expects 2 arguments, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:84:12: note: candidate: size_t Print::println(long int, int)
size_t println(long, int = DEC);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:84:12: note: candidate expects 2 arguments, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:85:12: note: candidate: size_t Print::println(long unsigned int, int)
size_t println(unsigned long, int = DEC);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:85:12: note: candidate expects 2 arguments, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:86:12: note: candidate: size_t Print::println(double, int)
size_t println(double, int = 2);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:86:12: note: candidate expects 2 arguments, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:87:12: note: candidate: size_t Print::println(const Printable&)
size_t println(const Printable&);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:87:12: note: candidate expects 1 argument, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:88:12: note: candidate: size_t Print::println()
size_t println(void);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:88:12: note: candidate expects 0 arguments, 3 provided
c:\Users\a\Dropbox\!Arduino\class\classes.ino: In function 'void loop()':
classes:24:48: error: no matching function for call to 'HardwareSerial::println(const char [17], int&, int&)'
Serial.println("x is %d, y is %d", m.x, m.y);
^
In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:26:0,
from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/HardwareSerial.h:29,
from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:233,
from sketch\classes.ino.cpp:1:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:77:12: note: candidate: size_t Print::println(const __FlashStringHelper*)
size_t println(const __FlashStringHelper *);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:77:12: note: candidate expects 1 argument, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:78:12: note: candidate: size_t Print::println(const String&)
size_t println(const String &s);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:78:12: note: candidate expects 1 argument, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:79:12: note: candidate: size_t Print::println(const char*)
size_t println(const char[]);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:79:12: note: candidate expects 1 argument, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:80:12: note: candidate: size_t Print::println(char)
size_t println(char);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:80:12: note: candidate expects 1 argument, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:81:12: note: candidate: size_t Print::println(unsigned char, int)
size_t println(unsigned char, int = DEC);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:81:12: note: candidate expects 2 arguments, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:82:12: note: candidate: size_t Print::println(int, int)
size_t println(int, int = DEC);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:82:12: note: candidate expects 2 arguments, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:83:12: note: candidate: size_t Print::println(unsigned int, int)
size_t println(unsigned int, int = DEC);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:83:12: note: candidate expects 2 arguments, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:84:12: note: candidate: size_t Print::println(long int, int)
size_t println(long, int = DEC);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:84:12: note: candidate expects 2 arguments, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:85:12: note: candidate: size_t Print::println(long unsigned int, int)
size_t println(unsigned long, int = DEC);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:85:12: note: candidate expects 2 arguments, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:86:12: note: candidate: size_t Print::println(double, int)
size_t println(double, int = 2);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:86:12: note: candidate expects 2 arguments, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:87:12: note: candidate: size_t Print::println(const Printable&)
size_t println(const Printable&);
^~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:87:12: note: candidate expects 1 argument, 3 provided
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:88:12: note: candidate: size_t Print::println()
size_t println(void);
^~~~~~~
请告诉我有什么问题。问题是您使用的是串行.println(),就好像它在printf()中一样。中指定的Serial.println()只接受两个参数,第一个参数是要通过串行端口打印的值,第二个参数是要发送该值的格式
要实现最初的目标,您需要做的是先将要发送的值连接起来,然后使用Serial.println()发送它们。如果要打印四件东西,最快、最有效的方法通常是只调用print 4次。与涉及格式字符串相比,打印非常轻量级。如果你是为个人电脑写作,谁会在乎呢。但是,如果你是为阁楼、联合国办事处或其他机构写作,那么你通常可以使用节省下来的钱
Serial.println("at start: x is %d, y is %d", m.x, m.y);
变成:
Serial.print("at start: x is ");
Serial.print(m.x);
Serial.print(", y is ");
Serial.println(m.y);
请注意,除了最后一个外,我在所有的上都使用了打印。只有最后一个是println。那样的话,只有最后一条会换行,接收者无法知道我发送的是一条语句还是三条语句。它们都在同一个缓冲区中,并以相同的方式输出。“但是Serial.println发生了错误”-复制错误并将其作为文本放入问题中,这样就更容易找出问题所在。不象
printf
那样工作。它打印第一个参数。如果第一个参数是数字,则第二个可选参数指定base。请检查:不要绕过关于代码太多、文本不够的警告。这是有原因的。您提供了一页又一页的错误文本,仅共享相关错误。您是否可以粘贴(或提供链接)任何说明或暗示Serial.println的文档(“开始时:x是%d,y是%d”,m.x,m.y)代码>合法吗?谢谢你给我的建议。那么我应该使用什么函数来代替println呢?在python“print('Hello%s!'%'World')中,您仍然可以使用该函数,但不必编写Serial.println(“开始时:x是%d,y是%d”,m.x,m.y)
您应该编写Serial.println(“开始时:x是“+std::to_string(m.x)+”,y是“+std::to_string(m.y))使用Arduino上的Serial
进行编码,您可以调用print
来构造输出,并使用println
完成该行。没有必要提前构造完整响应。@AntoniodeHaro大多数Arduino安装都没有标准库<代码>标准::字符串
通常不可用,除非用户特意安装了一个。编辑:ArduinoSDK确实提供了一个类。