SIM800L 字符串连接
SIM800L string concatenation
我从一个网站获得了这段代码,我将其用作从连接到我的 Arduino Mega 的 SIM800L 发送 SMS 消息的指南。
#include <Sim800l.h>
#include <SoftwareSerial.h>
Sim800l Sim800l; //declare the library
char* text;
char* number;
bool error;
void setup(){
Sim800l.begin();
text="Testing Sms";
number="+542926556644";
error=Sim800l.sendSms(number,text);
// OR
//error=Sim800l.sendSms("+540111111111","the text go here");
}
void loop(){
//do nothing
}
我在中间添加了一些代码,以便它可以通过串行连接在我的 Python GUI 中接收用户输入的字符串。
#include <Sim800l.h>
#include <SoftwareSerial.h>
Sim800l Sim800l; //declare the library
char* text;
char* number;
bool error;
String data;
void setup(){
Serial.begin(9600);
}
void loop(){
if (Serial.available() > 0)
{
data = Serial.readString();
Serial.print(data);
sendmess();
}
}
void sendmess()
{
Sim800l.begin();
text="Power Outage occured in area of account #: ";
number="+639164384650";
error=Sim800l.sendSms(number,text);
// OR
//error=Sim800l.sendSms("+540111111111","the text go here");
}
我正在尝试将我的 serial.readString()
中的数据连接到 text
的末尾。 +
和 %s
等常规方法不起作用。
在 Arduino IDE 我收到这个错误:
error: cannot convert ‘StringSumHelper’ to ‘char*’ in assignment
如果我没记错的话 char*
是一个指向地址的指针。有没有办法将串口监视器的字符串添加到文本中?
您必须将 Arduino String
对象转换为标准 C 字符串。您可以使用 String
class 的 c_str() 方法来完成此操作。它将 return 一个 char*
指针。
现在您也可以将两个字符串与 strncat function from C library, string.h
and also using strncpy 连接起来。
#include <string.h>
char message[160]; // max size of an SMS
char* text = "Power Outage occured in area of account #: ";
String data;
/*
* populate <String data> with data from serial port
*/
/* Copy <text> to message buffer */
strncpy(message, text, strlen(text));
/* Calculating remaining space in the message buffer */
int num = sizeof(message) - strlen(message) - 1;
/* Concatenate the data from serial port */
strncat(message, data.c_str(), num);
/* ... */
error=Sim800l.sendSms(number, message);
请注意,如果缓冲区中没有足够的 space,它将简单地切断剩余数据。
我从一个网站获得了这段代码,我将其用作从连接到我的 Arduino Mega 的 SIM800L 发送 SMS 消息的指南。
#include <Sim800l.h>
#include <SoftwareSerial.h>
Sim800l Sim800l; //declare the library
char* text;
char* number;
bool error;
void setup(){
Sim800l.begin();
text="Testing Sms";
number="+542926556644";
error=Sim800l.sendSms(number,text);
// OR
//error=Sim800l.sendSms("+540111111111","the text go here");
}
void loop(){
//do nothing
}
我在中间添加了一些代码,以便它可以通过串行连接在我的 Python GUI 中接收用户输入的字符串。
#include <Sim800l.h>
#include <SoftwareSerial.h>
Sim800l Sim800l; //declare the library
char* text;
char* number;
bool error;
String data;
void setup(){
Serial.begin(9600);
}
void loop(){
if (Serial.available() > 0)
{
data = Serial.readString();
Serial.print(data);
sendmess();
}
}
void sendmess()
{
Sim800l.begin();
text="Power Outage occured in area of account #: ";
number="+639164384650";
error=Sim800l.sendSms(number,text);
// OR
//error=Sim800l.sendSms("+540111111111","the text go here");
}
我正在尝试将我的 serial.readString()
中的数据连接到 text
的末尾。 +
和 %s
等常规方法不起作用。
在 Arduino IDE 我收到这个错误:
error: cannot convert ‘StringSumHelper’ to ‘char*’ in assignment
如果我没记错的话 char*
是一个指向地址的指针。有没有办法将串口监视器的字符串添加到文本中?
您必须将 Arduino String
对象转换为标准 C 字符串。您可以使用 String
class 的 c_str() 方法来完成此操作。它将 return 一个 char*
指针。
现在您也可以将两个字符串与 strncat function from C library, string.h
and also using strncpy 连接起来。
#include <string.h>
char message[160]; // max size of an SMS
char* text = "Power Outage occured in area of account #: ";
String data;
/*
* populate <String data> with data from serial port
*/
/* Copy <text> to message buffer */
strncpy(message, text, strlen(text));
/* Calculating remaining space in the message buffer */
int num = sizeof(message) - strlen(message) - 1;
/* Concatenate the data from serial port */
strncat(message, data.c_str(), num);
/* ... */
error=Sim800l.sendSms(number, message);
请注意,如果缓冲区中没有足够的 space,它将简单地切断剩余数据。