本文整理汇总了C++中NMEAInputLine::ReadHex方法的典型用法代码示例。如果您正苦于以下问题:C++ NMEAInputLine::ReadHex方法的具体用法?C++ NMEAInputLine::ReadHex怎么用?C++ NMEAInputLine::ReadHex使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NMEAInputLine
的用法示例。
在下文中一共展示了NMEAInputLine::ReadHex方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
static bool
PDSWC(NMEAInputLine &line, NMEAInfo &info, Vega::VolatileData &volatile_data)
{
unsigned value;
if (line.ReadChecked(value) &&
info.settings.ProvideMacCready(fixed(value) / 10, info.clock))
volatile_data.mc = value;
auto &switches = info.switch_state;
auto &vs = switches.vega;
vs.inputs = line.ReadHex(0);
vs.outputs = line.ReadHex(0);
if (vs.GetFlapLanding())
switches.flap_position = SwitchState::FlapPosition::LANDING;
else if (vs.GetFlapZero())
switches.flap_position = SwitchState::FlapPosition::NEUTRAL;
else if (vs.GetFlapNegative())
switches.flap_position = SwitchState::FlapPosition::NEGATIVE;
else if (vs.GetFlapPositive())
switches.flap_position = SwitchState::FlapPosition::POSITIVE;
else
switches.flap_position = SwitchState::FlapPosition::UNKNOWN;
if (vs.GetUserSwitchMiddle())
switches.user_switch = SwitchState::UserSwitch::MIDDLE;
else if (vs.GetUserSwitchUp())
switches.user_switch = SwitchState::UserSwitch::UP;
else if (vs.GetUserSwitchDown())
switches.user_switch = SwitchState::UserSwitch::DOWN;
else
switches.user_switch = SwitchState::UserSwitch::UNKNOWN;
if (vs.GetAirbrakeLocked())
switches.airbrake_state = SwitchState::AirbrakeState::LOCKED;
else if (vs.GetAirbrakeNotLocked())
switches.airbrake_state = SwitchState::AirbrakeState::NOT_LOCKED;
else
switches.airbrake_state = SwitchState::AirbrakeState::UNKNOWN;
switches.flight_mode = vs.GetCircling()
? SwitchState::FlightMode::CIRCLING
: SwitchState::FlightMode::CRUISE;
if (line.ReadChecked(value)) {
info.voltage = fixed(value) / 10;
info.voltage_available.Update(info.clock);
}
return true;
}
示例2:
void
ParsePFLAE(NMEAInputLine &line, FlarmError &error, fixed clock)
{
char type[2];
line.Read(type, ARRAY_SIZE(type));
if (strcmp(type, "A") != 0)
return;
error.severity = (FlarmError::Severity)
line.ReadHex((long)FlarmError::Severity::NO_ERROR);
error.code = (FlarmError::Code)line.ReadHex(0);
error.available.Update(clock);
}
示例3:
void
ParsePFLAE(NMEAInputLine &line, FlarmError &error, double clock)
{
char type[2];
line.Read(type, ARRAY_SIZE(type));
if (!StringIsEqual(type, "A"))
return;
error.severity = (FlarmError::Severity)
line.Read((int)FlarmError::Severity::NO_ERROR);
error.code = (FlarmError::Code)line.ReadHex(0);
error.available.Update(clock);
}
示例4:
static bool
PDSWC(NMEAInputLine &line, NMEAInfo &info)
{
static long last_switchinputs;
static long last_switchoutputs;
fixed value;
if (line.ReadChecked(value))
info.settings.ProvideMacCready(value / 10, info.clock);
long switchinputs = line.ReadHex(0L);
long switchoutputs = line.ReadHex(0L);
if (line.ReadChecked(value)) {
info.voltage = value / 10;
info.voltage_available.Update(info.clock);
}
info.switch_state_available = true;
info.switch_state.airbrake_locked =
(switchinputs & (1<<INPUT_BIT_AIRBRAKELOCKED))>0;
info.switch_state.flap_positive =
(switchinputs & (1<<INPUT_BIT_FLAP_POS))>0;
info.switch_state.flap_neutral =
(switchinputs & (1<<INPUT_BIT_FLAP_ZERO))>0;
info.switch_state.flap_negative =
(switchinputs & (1<<INPUT_BIT_FLAP_NEG))>0;
info.switch_state.gear_extended =
(switchinputs & (1<<INPUT_BIT_GEAR_EXTENDED))>0;
info.switch_state.acknowledge =
(switchinputs & (1<<INPUT_BIT_ACK))>0;
info.switch_state.repeat =
(switchinputs & (1<<INPUT_BIT_REP))>0;
info.switch_state.speed_command =
(switchinputs & (1<<INPUT_BIT_SC))>0;
info.switch_state.user_switch_up =
(switchinputs & (1<<INPUT_BIT_USERSWUP))>0;
info.switch_state.user_switch_middle =
(switchinputs & (1<<INPUT_BIT_USERSWMIDDLE))>0;
info.switch_state.user_switch_down =
(switchinputs & (1<<INPUT_BIT_USERSWDOWN))>0;
/*
info.switch_state.Stall =
(switchinputs & (1<<INPUT_BIT_STALL))>0;
*/
info.switch_state.flight_mode =
(switchoutputs & (1 << OUTPUT_BIT_CIRCLING)) > 0
? SwitchInfo::FlightMode::CIRCLING
: SwitchInfo::FlightMode::CRUISE;
info.switch_state.flap_landing =
(switchoutputs & (1<<OUTPUT_BIT_FLAP_LANDING))>0;
long up_switchinputs;
long down_switchinputs;
long up_switchoutputs;
long down_switchoutputs;
// detect changes to ON: on now (x) and not on before (!lastx)
// detect changes to OFF: off now (!x) and on before (lastx)
down_switchinputs = (switchinputs & (~last_switchinputs));
up_switchinputs = ((~switchinputs) & (last_switchinputs));
down_switchoutputs = (switchoutputs & (~last_switchoutputs));
up_switchoutputs = ((~switchoutputs) & (last_switchoutputs));
int i;
long thebit;
for (i=0; i<32; i++) {
thebit = 1<<i;
if ((down_switchinputs & thebit) == thebit) {
InputEvents::processNmea(i);
}
if ((down_switchoutputs & thebit) == thebit) {
InputEvents::processNmea(i+32);
}
if ((up_switchinputs & thebit) == thebit) {
InputEvents::processNmea(i+64);
}
if ((up_switchoutputs & thebit) == thebit) {
InputEvents::processNmea(i+96);
}
}
last_switchinputs = switchinputs;
last_switchoutputs = switchoutputs;
return true;
}