我从一个网站获取此代码,我将其用作从连接到我的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*
是一个指向地址的指针。无论如何要将串行监视器中的字符串添加到文本中吗?
答案 0 :(得分:1)
您必须将Arduino User.aggregate([
{ '$unwind': '$pets' },
{
'$lookup': {
'from': 'pets',
'localField': 'pets',
'foreignField': '_id',
'as': 'pets'
}
},
{ '$unwind': { 'path': '$pets', 'preserveNullAndEmptyArrays': true } }
{
'$group': {
'_id': '$_id',
'role': { '$first': '$role' },
'isVolunteer': { '$first': '$isVolunteer' },
'pet_count': { '$sum': 1 },
'lost_pets': {
'$sum': {
'$cond': ['$pets.petLost.lost', 1, 0]
}
}
}
},
{
'$group': {
'_id': null,
'users_count': {
'$sum': {
'$cond': [{'$eq': ['$role', 'user']}, 1, 0]
}
},
'volunteer_count' : {
'$sum': {
'$cond': ['$isVolunteer', 1, 0]
}
},
'pet_count': { '$sum': '$pet_count' },
'lost_pets': { '$sum': '$lost_pets' }
}
},
{
'$project': {
'_id': 0, 'role': '$_id',
'statistics': {
'users': '$users_count',
'volunteers': '$volunteer_count',
'pets': '$pet_count',
'lostpets': '$lost_pets'
}
}
}
]).exec((err, result) => {
if (err) {
console.log(err);
}
res.status(200).json(result);
});
对象转换为标准C字符串。您可以使用String
类的c_str()方法执行此操作。它将返回String
指针。
现在,您可以使用C库char*
中的strncat函数连接两个字符串,也可以使用strncpy连接。
string.h
请注意,如果缓冲区中没有足够的空间,它将简单地删除剩余的数据。