IR HEX比较

use*_*454 -2 c arduino

我是c编程的新手,并试图比较IR HEX字符串.我收到错误:左值作为左操作数的赋值.

我的问题是我的问题是在第31行.这是代码:

/* IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
* An IR detector/demodulator must be connected to the input RECV_PIN.
* Version 0.1 July, 2009
* Copyright 2009 Ken Shirriff
* http://arcfn.com
*/

#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
String  stringAppleUp;  



void setup()
 {

  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
 }

void loop() {

if (irrecv.decode(&results)) {
  Serial.println(results.value, HEX);
  Serial.println ("See it");
  stringAppleUp = string('77E150BC');  //apple remote up button

if (    ????        = stringAppleUp)  {
  Serial.println("yes");
  }
else
  {
  Serial.println("No");
  }
irrecv.resume(); // Receive the next value
  }
}
Run Code Online (Sandbox Code Playgroud)

行:if(??? = stringAppleUp)我不知道放在哪里的变量??? 是.

谢谢您的帮助.将

mpf*_*aga 6

你在想这个目标.第一个results.value返回一个uint32_t,而不是一个字符串.其次,"String"与char的数组(又名"string")不同.注意资本S.

stringAppleUp = String('77E150BC');
Run Code Online (Sandbox Code Playgroud)

那你可以

String Foo = String('bar');
if (Foo == stringAppleUp ) {
...
Run Code Online (Sandbox Code Playgroud)

Foo是你想要测试的地方.注意"=="的测试与"="的分配

另外

char foo[] = "12345678";
if (strcmp(stringAppleUp, foo)) {
...
Run Code Online (Sandbox Code Playgroud)

你可以在这里找到strcmp数组

最后,HEX不是字符串,而是整数.只需测试结果.值.反对另一个整数.

#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{

  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {

  if (irrecv.decode(&results)) {
    Serial.print(F("result = 0x"));
    Serial.println(results.value, HEX);

    if (results.value == 0x77E150BC)  {
      Serial.println("yes");
    }
    else {
      Serial.println("No");
    }
    irrecv.resume(); // Receive the next value
  }
}
Run Code Online (Sandbox Code Playgroud)