void InitLcd(DisplayOrientation dor, uint8_t language) { lcd.InitLCD(dor); // set up the LCD Fields::CreateFields(language); // create all the fields mgr.RefreshAll(true); // redraw everything currentTab = NULL; }
void ECCalibrateScreen::begin() { // Initial setup myUTFT.InitLCD(); myUTFT.clrScr(); myTouch.InitTouch(); myTouch.setPrecision(PREC_MEDIUM); myUTFT.setFont(BigFont); myUTFT.setBackColor(0, 0, 255); myButtons.setTextFont(BigFont); resetButtons(); sensorstring = ""; sensorstring.reserve(30); //set aside some bytes for receiving data inputstring = ""; waiting_for_info = false; waiting_for_single_reading = false; sensor_stringcomplete = false; factReset = false; inStopMode = false; waiting_for_dry = false; Serial3.begin(38400); //To communicate with the sensor. Serial.begin(115200); //Start Read straight away. inputstring = ( waterTempString + ",C\r"); //Start based on temp. Serial3.print(inputstring); //send command to sensor. }
// Process a touch event void ProcessTouch(DisplayField *df) { if (df->IsButton()) { Button *f = static_cast<Button*>(df); currentButton = f; mgr.Press(f, true); Event ev = (Event)(f->GetEvent()); switch(ev) { case evTabControl: case evTabPrint: // case evTabFiles: case evTabMsg: case evTabInfo: ChangeTab(f); break; case evAdjustActiveTemp: case evAdjustStandbyTemp: if (static_cast<IntegerButton*>(f)->GetValue() < 0) { static_cast<IntegerButton*>(f)->SetValue(0); } Adjusting(f); mgr.SetPopup(setTempPopup, tempPopupX, popupY); break; case evAdjustSpeed: case evExtrusionFactor: Adjusting(f); mgr.SetPopup(setTempPopup, tempPopupX, popupY); break; case evSetInt: if (fieldBeingAdjusted != NULL) { int val = static_cast<const IntegerButton*>(fieldBeingAdjusted)->GetValue(); switch(fieldBeingAdjusted->GetEvent()) { case evAdjustActiveTemp: { int heater = fieldBeingAdjusted->GetIParam(); if (heater == 0) { SerialIo::SendString("M140 S"); SerialIo::SendInt(val); SerialIo::SendChar('\n'); } else { SerialIo::SendString("G10 P"); SerialIo::SendInt(heater - 1); SerialIo::SendString(" S"); SerialIo::SendInt(val); SerialIo::SendChar('\n'); } } break; case evAdjustStandbyTemp: { int heater = fieldBeingAdjusted->GetIParam(); if (heater > 0) { SerialIo::SendString("G10 P"); SerialIo::SendInt(heater - 1); SerialIo::SendString(" R"); SerialIo::SendInt(val); SerialIo::SendChar('\n'); } } break; case evExtrusionFactor: { int heater = fieldBeingAdjusted->GetIParam(); SerialIo::SendString("M221 P"); SerialIo::SendInt(heater); SerialIo::SendString(" S"); SerialIo::SendInt(val); SerialIo::SendChar('\n'); } break; default: { const char* null cmd = fieldBeingAdjusted->GetSParam(); if (cmd != NULL) { SerialIo::SendString(cmd); SerialIo::SendInt(val); SerialIo::SendChar('\n'); } } break; } mgr.SetPopup(NULL); StopAdjusting(); } break; case evAdjustInt: if (fieldBeingAdjusted != NULL) { static_cast<IntegerButton*>(fieldBeingAdjusted)->Increment(f->GetIParam()); ShortenTouchDelay(); } break; case evMove: mgr.SetPopup(movePopup, movePopupX, movePopupY); break; case evMoveX: case evMoveY: case evMoveZ: SerialIo::SendString("G91\nG1 "); SerialIo::SendChar((ev == evMoveX) ? 'X' : (ev == evMoveY) ? 'Y' : 'Z'); SerialIo::SendString(f->GetSParam()); SerialIo::SendString(" F6000\nG90\n"); break; case evListFiles: FileManager::DisplayFilesList(); break; case evListMacros: FileManager::DisplayMacrosList(); break; case evCalTouch: CalibrateTouch(); CheckSettingsAreSaved(); break; case evFactoryReset: PopupAreYouSure(ev, "Confirm factory reset"); break; case evRestart: PopupAreYouSure(ev, "Confirm restart"); break; case evSaveSettings: SaveSettings(); if (restartNeeded) { PopupRestart(); } break; case evSelectHead: { int head = f->GetIParam(); if (head == 0) { // There is no command to switch the bed to standby temperature, so we always set it to the active temperature SerialIo::SendString("M140 S"); SerialIo::SendInt(activeTemps[0]->GetValue()); SerialIo::SendChar('\n'); } else if (head < (int)maxHeaters) { if (heaterStatus[head] == 2) // if head is active { SerialIo::SendString("T-1\n"); } else { SerialIo::SendChar('T'); SerialIo::SendInt(head - 1); SerialIo::SendChar('\n'); } } } break; case evFile: { const char *fileName = f->GetSParam(); if (fileName != nullptr) { currentFile = fileName; SerialIo::SendString("M36 /gcodes/"); // ask for the file info SerialIo::SendString(currentFile); SerialIo::SendChar('\n'); fpNameField->SetValue(currentFile); // Clear out the old field values, they relate to the previous file we looked at until we process the response fpSizeField->SetValue(0); // would be better to make it blank fpHeightField->SetValue(0.0); // would be better to make it blank fpLayerHeightField->SetValue(0.0); // would be better to make it blank fpFilamentField->SetValue(0); // would be better to make it blank generatedByText.clear(); fpGeneratedByField->SetChanged(); mgr.SetPopup(filePopup, (DisplayX - filePopupWidth)/2, (DisplayY - filePopupHeight)/2); } else { ErrorBeep(); } } break; case evMacro: { const char *fileName = f->GetSParam(); if (fileName != nullptr) { if (fileName[0] == '*') // if it's a directory { } else { SerialIo::SendString("M98 P/macros/"); SerialIo::SendString(fileName); SerialIo::SendChar('\n'); } } else { ErrorBeep(); } } break; case evPrint: mgr.SetPopup(NULL); if (currentFile != NULL) { SerialIo::SendString("M32 "); SerialIo::SendString(currentFile); SerialIo::SendChar('\n'); printingFile.copyFrom(currentFile); currentFile = NULL; // allow the file list to be updated CurrentButtonReleased(); ChangeTab(tabPrint); } break; case evCancelPrint: CurrentButtonReleased(); mgr.SetPopup(NULL); currentFile = NULL; // allow the file list to be updated break; case evDeleteFile: CurrentButtonReleased();; PopupAreYouSure(ev, "Confirm file delete"); break; case evSendCommand: case evPausePrint: case evResumePrint: case evReset: SerialIo::SendString(f->GetSParam()); SerialIo::SendChar('\n'); break; case evScrollFiles: FileManager::Scroll(f->GetIParam()); ShortenTouchDelay(); break; case evKeyboard: mgr.SetPopup(keyboardPopup, keyboardPopupX, keyboardPopupY); break; case evInvertDisplay: nvData.lcdOrientation = static_cast<DisplayOrientation>(nvData.lcdOrientation ^ (ReverseX | ReverseY | InvertText | InvertBitmap)); lcd.InitLCD(nvData.lcdOrientation); CalibrateTouch(); CheckSettingsAreSaved(); break; case evSetBaudRate: Adjusting(f); mgr.SetPopup(baudPopup, fullWidthPopupX, popupY); break; case evAdjustBaudRate: nvData.baudRate = f->GetIParam(); SerialIo::Init(nvData.baudRate); baudRateButton->SetValue(nvData.baudRate); CheckSettingsAreSaved(); CurrentButtonReleased(); mgr.SetPopup(NULL); StopAdjusting(); break; case evSetVolume: Adjusting(f); mgr.SetPopup(volumePopup, fullWidthPopupX, popupY); break; case evAdjustVolume: nvData.touchVolume = f->GetIParam(); volumeButton->SetValue(nvData.touchVolume); TouchBeep(); // give audible feedback of the touch at the new volume level CheckSettingsAreSaved(); break; case evSetLanguage: Adjusting(f); mgr.SetPopup(languagePopup, fullWidthPopupX, popupY); break; case evAdjustLanguage: nvData.language = f->GetIParam(); languageButton->SetText(longLanguageNames[nvData.language]); CheckSettingsAreSaved(); // not sure we need this because we are going to reset anyway break; case evYes: CurrentButtonReleased(); mgr.SetPopup(nullptr); switch (eventToConfirm) { case evFactoryReset: FactoryReset(); break; case evDeleteFile: if (currentFile != nullptr) { SerialIo::SendString("M30 "); SerialIo::SendString(currentFile); SerialIo::SendChar('\n'); filesListTimer.SetPending(); currentFile = nullptr; } break; case evRestart: if (nvData != savedNvData) { SaveSettings(); } Restart(); break; default: break; } eventToConfirm = evNull; currentFile = NULL; break; case evCancel: eventToConfirm = evNull; currentFile = NULL; CurrentButtonReleased(); mgr.SetPopup(NULL); break; case evKey: if (!userCommandBuffer.full()) { userCommandBuffer.add((char)f->GetIParam()); userCommandField->SetChanged(); } break; case evBackspace: if (!userCommandBuffer.isEmpty()) { userCommandBuffer.erase(userCommandBuffer.size() - 1); userCommandField->SetChanged(); ShortenTouchDelay(); } break; case evSendKeyboardCommand: if (userCommandBuffer.size() != 0) { SerialIo::SendString(userCommandBuffer.c_str()); SerialIo::SendChar('\n'); } break; default: break; }