【问题标题】:compare pointer to byte in C++ (Arduino)在 C++ (Arduino) 中比较指向字节的指针
【发布时间】:2018-03-04 03:17:36
【问题描述】:

我正在玩 Arduino,我想比较来自 MQTT 消息的字符串。

这是我捕获传入消息的代码:

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  int i=0;
  for (i=0;i<length;i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();

Serial.println((char)payload[0]);

  if(topic==topic_conmutador){
    if(strcmp((char*)(payload[0]), "0")==0)
    digitalWrite(built_in_PIN, LOW);
  }

}

if(strcmp((char*)(payload[0]), "0")==0){ 行给了我这个错误信息:

error: invalid conversion from 'byte {aka unsigned char}' to 'const char*' [-fpermissive]

我做错了什么?我只想检查传入消息的第一个字符是否为 0。

【问题讨论】:

  • topic==topic_conmutador 这是错误的,除非你在比较指针
  • 比较一个字节和一个指针是没有意义的。

标签: c++ arduino type-conversion


【解决方案1】:

你可能只是想要:

if (payload[0] == '0')

这是将字符串payload 的第一个字符与字符'0' 进行比较。

注意:"0" 是一个字符的字符串类型,'0' 是字符类型。

【讨论】:

    猜你喜欢
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    相关资源
    最近更新 更多