このソースコード全体を投稿することなく、誰でもこのbool
が値を変更している理由を知ることができますか?なぜこのブールは変化していますか?
const int redLed = 31;
const int greenLed = 33;
const int blueLed = 35;
const int irSensor = 2;
const int doorRelayPin = 14;
bool isDenied = false;
byte inputCard[4];
char cardID[4];
char passCode[10];
int passCount = 0;
char masterCode[10] = "1";
void loop(){
if(isPanic){
panicCounter++;
int interval = panicCounter % 2000;
Serial.println(interval);
if (interval == 0){
tryPost();
}
}else{
if (!digitalRead(doorRelayPin) && !isDenied){
greenSolid();
}else if(digitalRead(doorRelayPin) && !isDenied){
blueSolid();
t.stop(unlock);
}
}
Serial.print("isDenied bool: ");
Serial.println(isDenied);
}
そして、あなたは出力を理解するための関連するコードの次のビット...
Serial.println(F("Scanned PICC's UID on reader 1:"));
for (int i = 0; i < 4; i++) { //
inputCard[i] = idReader.uid.uidByte[i];
Serial.print(inputCard[i], HEX);
}
Serial.println("");
idReader.PICC_HaltA(); // Stop reading
getCardID(); // Get data ready
return 1;
あなたは、私がこのブールANYWHEREの値を変更しておりません見ることができるように、しかし、シリアル出力とループ機能の私のif statement
は値が変わったと言っています。それは読書とRFIDカードの間にPICC機能の間に起きているようです。ありがとう!以下
シリアル出力。
isDenied bool: 0
isDenied bool: 0
isDenied bool: 0
isDenied bool: 0
isDenied bool: 0
isDenied bool: 0
Scanned PICC's UID on reader 1:
F539A76B
isDenied bool: 54
ip=10.10.1.50&passcode=&rfid=f539a76b
connecting...Connected
disconnecting.
grant 10.10.1.50
Access Granted.
isDenied bool: 54
isDenied bool: 54
isDenied bool: 54
isDenied bool: 54
isDenied bool: 54
isDenied bool: 54
私は右if(isPanic)
の文の上にループ機能でこれを行うことにより、この問題を「ハック」しようとした場合、それがさらに奇数にするために、ブール値は変わることはありません。しかし、これらは、新たな文はどちらかが満たされることはありません場合は、出力ログは、これら2つのテストSerial.println
さん
if (isDenied == 54){
isDeniedBoolRecoverCounter++;
Serial.println("In this");
}
if (isDeniedBoolRecoverCounter > 10){
Serial.println("In the other one");
isDenied = false;
isDeniedBoolRecoverCounter = 0;
}
そして、あなたはどこでも 'isDenied'への割り当てを持っていませんか? 'isDenied'を取り巻く変数はどうでしょうか?配列はありますか?あなたは多分配列の境界から書き出しますか?正しく初期化されていないポインタを使用しますか? –
ネガティブ。あなたが見ているのはあなたが見るものです。私はもっと多くのコードがあることを意味しますが、私はすべてのクラスを通して何度も検索し、 'isDenied'はその関数中に他の場所に割り当てられません。私はこれをtrueに設定すると、そのほかに、値が、とにかく '1'ではない54の... – TheValyreanGroup
2つの理由:1)isDenied変更を呼び出される機能の一つ。つまり、どこにいても決して変更されなければ、なぜそれが最初の場所にあるのでしょうか? 2)Joachimが言っているように、おそらく読み込み関数から配列/ポインタを正しく初期化していません... – Lagerbaer