bool listen(datum::time_point Time_, bool Err_, const std::string& Str_)override{ if(Str_.size() == 0) return true; // Batt read ON if(static_cast<unsigned char>(Str_[0]) == 0x10){ if(Str_.size() != 1) return true; DataMode.set_pic(true); return false; // Batt read OFF } else if(static_cast<unsigned char>(Str_[0]) == 0x11){ if(Str_.size() != 1) return true; DataMode.set_pic(false); return false; // Batt data coming } else if(static_cast<unsigned char>(Str_[0]) == 0x00){ if(Str_.size() != BatteryNum_ * 2 + 1) return true; this_data_t Data; Data.time() = Time_; unsigned char i = 0; for(auto Itr = Data.begin(); Itr != Data.end(); ++Itr){ (*Itr) = toVoltage(static_cast<unsigned char>(Str_[2 * i + 1]), static_cast<unsigned char>(Str_[2 * i + 2])); } //新データ シグナル発信 signal_newData(Data); return false; } return true; }
//获取电量0-100% u8 getBatteryValue() { u32 v = toVoltage(ADC.getADCValue(1)); v = RV(v); if (v < Lbattery)return 0; if (v > Hbattery)v = Hbattery; return (v - Lbattery) * 100 / (Hbattery - Lbattery); }