错误:没有' void sim :: sendSMS(char *)'在课堂上宣布的成员函数' sim'

时间:2016-10-26 15:36:46

标签: c++ class arduino

嘿伙计们在Arduino IDE中编译时遇到此错误

错误:没有' void sim :: sendSMS(char *)'在课程' sim'

中声明的成员函数

void sim :: sendSMS(char msg [160])

我的页眉文件是:

#ifndef sim_h
#define sim_h

#include "Arduino.h"

class sim
{
public:
sim();
void smstextmode();
void testSIM900();
void sendSMS(char _msg[160]);
private:
char _msg[160];
};

#endif

我的CPP档案:

#include "Arduino.h"
#include "sim.h"

sim::sim()
{
 _msg= msg;
}

void sim::smstextmode()
{
  Serial1.write("AT+CMGF=1\r\n");
  delay(2000); 
}

void sim::testSIM900()
{
  Serial1.write("AT\r\n");
  delay(1000);
  Serial1.write("AT+CSCS?\r\n");
  delay(1000);
}

void sim::sendSMS(char msg[160])
{
  Serial1.write("AT+CMGS=\"+8295724554\"\r\n");
  delay(1500);
  Serial1.write(msg);
  delay(1000);
  Serial1.write((char) 26)

}

1 个答案:

答案 0 :(得分:0)

这么多错误。例如:

sim::sim()
{
   _msg= msg;  // where it should get this msg?
               // Also it's not possible to do a copy of array like this.
}

如果要发送作为参数传递的msg,为什么需要_msg?

void sim::sendSMS(char msg[160])

如果要调用它,则必须使用完全相同的数据类型:

char something[160] = "some text to send";
instance.sendSMS(something);

但你不能直接传递字符串:

instance.sendSMS("some text to send");

因为它是const char *的类型而无法按类型char[160]处理。

此外,您不会在字符串末尾计算终止字符。