我是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
}
}
行:if(??? = stringAppleUp) 我不知道放在哪里的变量???是
感谢您的帮助。 将
答案 0 :(得分:6)
你正在考虑目标。 第一个results.value返回一个uint32_t,而不是一个字符串。 其次是&#34; String&#34;与char的数组不同(又名&#34;字符串&#34;)。注意资本S.
stringAppleUp = String('77E150BC');
然后你可以
String Foo = String('bar');
if (Foo == stringAppleUp ) {
...
Foo是你想要测试的地方。注意&#34; ==&#34;的测试与#34; =&#34;
的分配相对应或者
char foo[] = "12345678";
if (strcmp(stringAppleUp, foo)) {
...
您可以在其中找到strcmp of arrays here
最后,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
}
}