本文整理汇总了C++中Port::StopRxThread方法的典型用法代码示例。如果您正苦于以下问题:C++ Port::StopRxThread方法的具体用法?C++ Port::StopRxThread怎么用?C++ Port::StopRxThread使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Port
的用法示例。
在下文中一共展示了Port::StopRxThread方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: EWMicroRecorderPrintf
bool
EWMicroRecorderDevice::Declare(const Declaration *decl)
{
// Must have at least two, max 12 waypoints
if (decl->size() < 2 || decl->size() > 12)
return false;
port->StopRxThread();
port->SetRxTimeout(500); // set RX timeout to 500[ms]
if (!TryConnect())
return false;
port->Write('\x18'); // start to upload file
port->Write(user_data);
EWMicroRecorderPrintf(port, _T("%-15s %s\r\n"),
_T("Pilot Name:"), decl->PilotName);
EWMicroRecorderPrintf(port, _T("%-15s %s\r\n"),
_T("Competition ID:"), decl->AircraftRego);
EWMicroRecorderPrintf(port, _T("%-15s %s\r\n"),
_T("Aircraft Type:"), decl->AircraftType);
port->Write("Description: Declaration\r\n");
for (unsigned i = 0; i < 11; i++) {
if (i+1>= decl->size()) {
EWMicroRecorderPrintf(port, _T("%-17s %s\r\n"),
_T("TP LatLon:"), _T("0000000N00000000E TURN POINT\r\n"));
} else {
const Waypoint &wp = decl->waypoints[i];
if (i == 0) {
EWMicroRecorderWriteWayPoint(port, wp, _T("Take Off LatLong:"));
EWMicroRecorderWriteWayPoint(port, wp, _T("Start LatLon:"));
} else if (i + 1 < decl->size()) {
EWMicroRecorderWriteWayPoint(port, wp, _T("TP LatLon:"));
}
}
}
const Waypoint &wp = decl->waypoints[decl->size() - 1];
EWMicroRecorderWriteWayPoint(port, wp, _T("Finish LatLon:"));
EWMicroRecorderWriteWayPoint(port, wp, _T("Land LatLon:"));
port->Write('\x03'); // finish sending user file
bool success = ExpectStringWait(port, "uploaded successfully");
port->Write("!!\r\n"); // go back to NMEA mode
port->SetRxTimeout(0); // clear timeout
port->StartRxThread(); // restart RX thread
return success;
}
示例2: DownloadFlightInner
bool
Nano::DownloadFlight(Port &port, const RecordedFlightInfo &flight,
const TCHAR *path, OperationEnvironment &env)
{
port.StopRxThread();
FILE *file = _tfopen(path, _T("wb"));
if (file == NULL)
return false;
bool success = DownloadFlightInner(port, flight.internal.lx.nano_filename,
file, env);
if (fclose(file) != 0)
success = false;
return success;
}
示例3: DeclareInner
bool
EWDevice::Declare(const struct Declaration *decl, OperationEnvironment &env)
{
port->StopRxThread();
lLastBaudrate = port->SetBaudrate(9600L); // change to IO Mode baudrate
port->SetRxTimeout(500); // set RX timeout to 500[ms]
bool success = DeclareInner(decl, env);
port->Write("NMEA\r\n"); // switch to NMEA mode
port->SetBaudrate(lLastBaudrate); // restore baudrate
port->SetRxTimeout(0); // clear timeout
port->StartRxThread(); // restart RX thread
return success;
}
示例4: reader
bool
Nano::ReadFlightList(Port &port, RecordedFlightList &flight_list,
OperationEnvironment &env)
{
port.StopRxThread();
PortNMEAReader reader(port, env);
TimeoutClock timeout(2000);
int nflights = GetNumberOfFlights(port, reader, env, timeout);
if (nflights <= 0)
return nflights == 0;
env.SetProgressRange(nflights);
unsigned requested_tail = 1;
while (true) {
const unsigned room = flight_list.max_size() - flight_list.size();
const unsigned remaining = nflights - requested_tail + 1;
const unsigned nmax = std::min(room, remaining);
if (nmax == 0)
break;
/* read 8 records at a time */
const unsigned nrequest = std::min(nmax, 8u);
timeout = TimeoutClock(2000);
if (!GetLogbookContents(port, reader, flight_list,
requested_tail, nrequest, env, timeout))
return false;
requested_tail += nrequest;
env.SetProgressPosition(requested_tail - 1);
}
return true;
}