ループを処理する必要があるかどうかを判断するために、クエリするパラメータに関係なくループに入るように見える単純なループに出くわしました。以下はループです。
if (result[4] == 0x01 || result[5] == 0x01 || result[6] == 0x01 || result[7] == 0x01 || result[8] == 0x01 || result[9] == 0x01 & deviceState == false)
{
deviceState = true;
mainUI.setAlarmColour(result, device);
}
注:最後のパラメーターとして「&」と「&&」を試しましたが、どちらも違いはありません。
このループでは、deviceStateがtrueに設定されている場合でも、ループに入ります。ただし、次のループを使用すると、この問題は停止します。
if (result[4] == 0x01 || result[5] == 0x01 || result[6] == 0x01 || result[7] == 0x01 || result[8] == 0x01 || result[9] == 0x01)
{
if (deviceState == false)
{
deviceState = true;
mainUI.setAlarmColour(result, device);
}
}
この2番目のループは問題を解決し、ループに進まなくなります。つまり、私の関数は呼び出されません。
ここで基本的な何かが欠けていますか?私はmessageBoxesを試し、それがfalseであることを確認しました。期待どおりに返されますが、それでも最初のループに入ります。