c++ - 使用 strncmp 函数在 Arduino IDE 中出错
问题描述
我正在使用以下代码比较两个字符串并得到错误:
> #define _EXFUN(name, proto) name proto
>
> ^
>
> exit status 1 invalid conversion from 'char' to 'const char*'
> [-fpermissive]
据我了解,strncmp 函数正在寻找“const char*”,但是当我将“聊天”转换为“const char*”时,我在串行监视器中得到了奇怪的结果:
> Exception (28): epc1=0x40209035 epc2=0x00000000 epc3=0x00000000
> excvaddr=0x00000030 depc=0x00000000
>
> ctx: cont sp: 3ffffda0 end: 3fffffd0 offset: 01a0
>
> >>>stack>>> 3fffff40: 40100fee 3ffe8c3c 000026fe 00000000 3fffff50: 401011c4 000026fe 3ffee75c 00000000 3fffff60: 3ffe8c70 3ffee75c
> 3ffe850c 3ffee75c 3fffff70: 3ffee6e0 3ffee7c8 40202fe8 3fffefb0
> 3fffff80: 402014ce 00000001 00000001 402014c3 3fffff90: 00002580
> 3ffee6dc 00000014 4020292c 3fffffa0: feefeffe 00000000 3ffee7c0
> 3ffee7c8 3fffffb0: 3fffdad0 00000000 3ffee7c0 40203074 3fffffc0:
> feefeffe feefeffe 3ffe850c 401000e5 <<<stack<<< ?)⸮
代码本身:
#include <Wire.h>
#define I2C_ESP_ADDRESS 8
int count=0;
char model;
char reading;
char incoming;
void setup()
{
Serial.begin(9600);
Wire.begin(5,4);//Change to Wire.begin() for non ESP.
/*model[0] = "e";
model[1] = "0";
for (int i = 1; i < 20; i++) {
model[i] = 0;
}*/
}
void loop()
{
Wire.requestFrom(I2C_ESP_ADDRESS,20);
while (Wire.available())
{
delay(1);
incoming = Wire.read();
if (strncmp(incoming,"elxxxxxxxxxxxxxxxxxx",2) == 1 ) {
model = incoming;
} else {
reading = incoming;
}
}
}
解决方案
所以这是对我有用的正确代码:
void loop() {
Wire.requestFrom(I2C_ESP_ADDRESS,18);
while (Wire.available()){
incoming = Wire.read();
Serial.print(incoming);
//Serial.print(incoming);
//sprintf (incomingArray, "%.20", incoming);
if ( incoming == 'e') {
modelArray[0] = 'e';
for (int i = 1; i < 18; i++ ){
modelArray[i] = (char) Wire.read();
Serial.print(modelArray[i-1]);
}
}
if ( incoming == 'a') {
readingArray[0] = 'a';
// Serial.print("Got Reading: ");
for (int j = 1; j < 18; j++ ){
readingArray[j] = (char) Wire.read();
Serial.print(readingArray[j-1]);
}
Serial.println();
}
}
推荐阅读
- node.js - Mongoose Update 仅更改了多个嵌套数组中的数据字段
- html - HTML 表查询不是序列
- mysql - 更新随机行并在 MySQL 中获取行结果
- reactjs - 为什么我不能在 React 中对类名使用字符串插值?
- python - 为什么 TensorFlow - tf.keras.utils.get_file 不从谷歌驱动器读取文件?
- javascript - 确认警报消息不起作用后删除
- javascript - Node.js https.request() Error: socket hang up
- java - javax 验证是否适用于继承?
- python - Matplotlib xlim() 删除行
- python - python3中的min()函数