本文整理汇总了C++中OutputBuffer::printf方法的典型用法代码示例。如果您正苦于以下问题:C++ OutputBuffer::printf方法的具体用法?C++ OutputBuffer::printf怎么用?C++ OutputBuffer::printf使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OutputBuffer
的用法示例。
在下文中一共展示了OutputBuffer::printf方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
// Get the JSON status response for the web server (or later for the M105 command).
// Type 1 is the ordinary JSON status response.
// Type 2 is the same except that static parameters are also included.
// Type 3 is the same but instead of static parameters we report print estimation values.
OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
{
// Need something to write to...
OutputBuffer *response;
if (!OutputBuffer::Allocate(response))
{
// Should never happen
return nullptr;
}
// Machine status
char ch = GetStatusCharacter();
response->printf("{\"status\":\"%c\",\"coords\":{", ch);
// Coordinates
const size_t numAxes = reprap.GetGCodes()->GetNumAxes();
{
float liveCoordinates[DRIVES + 1];
#if SUPPORT_ROLAND
if (roland->Active())
{
roland->GetCurrentRolandPosition(liveCoordinates);
}
else
#endif
{
move->LiveCoordinates(liveCoordinates, GetCurrentXAxes());
}
if (currentTool != nullptr)
{
const float *offset = currentTool->GetOffset();
for (size_t i = 0; i < numAxes; ++i)
{
liveCoordinates[i] += offset[i];
}
}
// Homed axes
response->cat("\"axesHomed\":");
ch = '[';
for (size_t axis = 0; axis < numAxes; ++axis)
{
response->catf("%c%d", ch, (gCodes->GetAxisIsHomed(axis)) ? 1 : 0);
ch = ',';
}
// Actual and theoretical extruder positions since power up, last G92 or last M23
response->catf("],\"extr\":"); // announce actual extruder positions
ch = '[';
for (size_t extruder = 0; extruder < GetExtrudersInUse(); extruder++)
{
response->catf("%c%.1f", ch, liveCoordinates[numAxes + extruder]);
ch = ',';
}
if (ch == '[')
{
response->cat(ch);
}
// XYZ positions
response->cat("],\"xyz\":");
if (!gCodes->AllAxesAreHomed() && move->IsDeltaMode())
{
// If in Delta mode, skip these coordinates if some axes are not homed
response->cat("[0.00,0.00,0.00");
}
else
{
// On Cartesian printers, the live coordinates are (usually) valid
ch = '[';
for (size_t axis = 0; axis < numAxes; axis++)
{
response->catf("%c%.3f", ch, liveCoordinates[axis]);
ch = ',';
}
}
}
// Current tool number
const int toolNumber = (currentTool == nullptr) ? -1 : currentTool->Number();
response->catf("]},\"currentTool\":%d", toolNumber);
// Output - only reported once
{
bool sendBeep = (beepDuration != 0 && beepFrequency != 0);
bool sendMessage = (message[0] != 0);
if (sendBeep || sendMessage)
{
response->cat(",\"output\":{");
// Report beep values
if (sendBeep)
{
response->catf("\"beepDuration\":%d,\"beepFrequency\":%d", beepDuration, beepFrequency);
if (sendMessage)
//.........这里部分代码省略.........
示例2: if
// Get the JSON status response for PanelDue or the old web server.
// Type 0 was the old-style webserver status response, but is no longer supported.
// Type 1 is the new-style webserver status response.
// Type 2 is the M105 S2 response, which is like the new-style status response but some fields are omitted.
// Type 3 is the M105 S3 response, which is like the M105 S2 response except that static values are also included.
// 'seq' is the response sequence number, if it is not -1 and we have a different sequence number then we send the gcode response
OutputBuffer *RepRap::GetLegacyStatusResponse(uint8_t type, int seq)
{
// Need something to write to...
OutputBuffer *response;
if (!OutputBuffer::Allocate(response))
{
// Should never happen
return nullptr;
}
// Send the status. Note that 'S' has always meant that the machine is halted in this version of the status response, so we use A for pAused.
char ch = GetStatusCharacter();
if (ch == 'S') // if paused then send 'A'
{
ch = 'A';
}
else if (ch == 'H') // if halted then send 'S'
{
ch = 'S';
}
response->printf("{\"status\":\"%c\",\"heaters\":", ch);
// Send the heater actual temperatures
const int8_t bedHeater = heat->GetBedHeater();
if (bedHeater != -1)
{
ch = ',';
response->catf("[%.1f", heat->GetTemperature(bedHeater));
}
else
{
ch = '[';
}
for (size_t heater = E0_HEATER; heater < GetToolHeatersInUse(); heater++)
{
response->catf("%c%.1f", ch, heat->GetTemperature(heater));
ch = ',';
}
response->cat((ch == '[') ? "[]" : "]");
// Send the heater active temperatures
response->catf(",\"active\":");
if (heat->GetBedHeater() != -1)
{
ch = ',';
response->catf("[%.1f", heat->GetActiveTemperature(heat->GetBedHeater()));
}
else
{
ch = '[';
}
for (size_t heater = E0_HEATER; heater < GetToolHeatersInUse(); heater++)
{
response->catf("%c%.1f", ch, heat->GetActiveTemperature(heater));
ch = ',';
}
response->cat((ch == '[') ? "[]" : "]");
// Send the heater standby temperatures
response->catf(",\"standby\":");
if (bedHeater != -1)
{
ch = ',';
response->catf("[%.1f", heat->GetStandbyTemperature(bedHeater));
}
else
{
ch = '[';
}
for (size_t heater = E0_HEATER; heater < GetToolHeatersInUse(); heater++)
{
response->catf("%c%.1f", ch, heat->GetStandbyTemperature(heater));
ch = ',';
}
response->cat((ch == '[') ? "[]" : "]");
// Send the heater statuses (0=off, 1=standby, 2=active)
response->cat(",\"hstat\":");
if (bedHeater != -1)
{
ch = ',';
response->catf("[%d", static_cast<int>(heat->GetStatus(bedHeater)));
}
else
{
ch = '[';
}
for (size_t heater = E0_HEATER; heater < GetToolHeatersInUse(); heater++)
{
response->catf("%c%d", ch, static_cast<int>(heat->GetStatus(heater)));
ch = ',';
}
response->cat((ch == '[') ? "[]" : "]");
//.........这里部分代码省略.........
示例3: ProcessFirstFragment
// Process the first fragment of input from the client.
// Return true if the session should be kept open.
bool Webserver::ProcessFirstFragment(HttpSession& session, const char* command, bool isOnlyFragment)
{
// Process connect messages first
if (StringEquals(command, "connect") && GetKeyValue("password") != nullptr)
{
OutputBuffer *response;
if (OutputBuffer::Allocate(response))
{
if (session.isAuthenticated || reprap.CheckPassword(GetKeyValue("password")))
{
// Password is OK, see if we can update the current RTC date and time
const char *timeVal = GetKeyValue("time");
if (timeVal != nullptr && !platform->IsDateTimeSet())
{
struct tm timeInfo;
memset(&timeInfo, 0, sizeof(timeInfo));
if (strptime(timeVal, "%Y-%m-%dT%H:%M:%S", &timeInfo) != nullptr)
{
time_t newTime = mktime(&timeInfo);
platform->SetDateTime(newTime);
}
}
// Client has logged in
session.isAuthenticated = true;
response->printf("{\"err\":0,\"sessionTimeout\":%u,\"boardType\":\"%s\"}", httpSessionTimeout, platform->GetBoardString());
}
else
{
// Wrong password
response->copy("{\"err\":1}");
}
network->SendReply(session.ip, 200 | rcJson, response);
}
else
{
// If we failed to allocate an output buffer, send back an error string
network->SendReply(session.ip, 200 | rcJson, "{\"err\":2}");
}
return false;
}
if (StringEquals(command, "disconnect"))
{
network->SendReply(session.ip, 200 | rcJson, "{\"err\":0}");
DeleteSession(session.ip);
return false;
}
// Try to authorise the user automatically to retain compatibility with the old web interface
if (!session.isAuthenticated && reprap.NoPasswordSet())
{
session.isAuthenticated = true;
}
// If the client is still not authenticated, stop here
if (!session.isAuthenticated)
{
network->SendReply(session.ip, 500, "Not authorized");
return false;
}
if (StringEquals(command, "reply"))
{
SendGCodeReply(session);
return false;
}
// rr_configfile sends the config as plain text well
if (StringEquals(command, "configfile"))
{
const char *configPath = platform->GetMassStorage()->CombineName(platform->GetSysDir(), platform->GetConfigFile());
char fileName[FILENAME_LENGTH];
strncpy(fileName, configPath, FILENAME_LENGTH);
SendFile(fileName, session);
return false;
}
if (StringEquals(command, "download") && GetKeyValue("name") != nullptr)
{
SendFile(GetKeyValue("name"), session);
return false;
}
if (StringEquals(command, "upload"))
{
const char* nameVal = GetKeyValue("name");
const char* lengthVal = GetKeyValue("length");
const char* timeVal = GetKeyValue("time");
if (nameVal != nullptr && lengthVal != nullptr)
{
// Try to obtain the last modified time
time_t fileLastModified = 0;
struct tm timeInfo;
memset(&timeInfo, 0, sizeof(timeInfo));
if (timeVal != nullptr && strptime(timeVal, "%Y-%m-%dT%H:%M:%S", &timeInfo) != nullptr)
{
//.........这里部分代码省略.........