Beispiel #1
0
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.

}
Beispiel #3
0
// 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;
		}