Hi Micha,
habe mal mit dem Menu angefangen zu experimetieren, ist aber noch nicht so ganz zur meiner Zufriedenheit. Variablen auslesen / änern / schreiben habe ich noch nicht probiert
Hier mal mein geänderter code zum testen
void HandleMenu()
{
//JetiboxKey DOWN = 0xb0, UP = 0xd0, LEFT = 0x70, RIGHT = 0xe0
static int _nMenu = 10; //org _nMenu = 0
static bool _bSetDisplay = true;
uint8_t c = jetiEx.GetJetiboxKey();
/* Debug *****************************/
if(c != 0)
softSerial.println(c);
/*************************************/
// down
if( c == 0xb0 && _nMenu <= 22 ) //org < 2
{
_nMenu+=10; // org _nMenu++
_bSetDisplay = true;
}
// right
if( c == 0xe0 && _nMenu <= 31 )
{
if (_nMenu == 12 || _nMenu == 22)
return;
_nMenu++;
_bSetDisplay = true;
}
// up
if( c == 0xd0 )
{
if( _nMenu > 10 ) // org > 0
{
if (_nMenu == 11 || _nMenu == 12)
return;
_nMenu-=10; // org _nMenu--
_bSetDisplay = true;
}
else
{
jetiEx.SetJetiboxExit(); // todo does not exit menu
return;
}
}
// left
if( c == 0x70 )
{
if( _nMenu > 10 ) // org > 0
{
if (_nMenu == 20 || _nMenu == 30)
return;
_nMenu--;
_bSetDisplay = true;
}
else
{
jetiEx.SetJetiboxExit(); // todo does not exit menu
return;
}
}
if( !_bSetDisplay )
return;
/* Debug *****************************/
softSerial.println(_nMenu);
/***********************************/
switch( _nMenu )
{
case 10: // org case 0
// Jeti EX no floats, only integer numbers
//sprintf( line1, "Volt: %d", (int)7 );
//sprintf( line1, "Volt: %d", demoSensor.GetVoltage() ); // works, no float, no update
//sprintf( line1, "Volt: %d.%d", (int)demoSensor.GetVoltage(), (int)(demoSensor.GetVoltage()*100)%100 ); // works, float incorrect
char tempVolt[2];
dtostrf(demoSensor.GetVoltage()*0.1, 2, 1, tempVolt);
sprintf(line1, "Volt: %s V", tempVolt);
jetiEx.SetJetiboxText( JetiExProtocol::LINE1, line1 );
sprintf( line2, "Alt: %d m", demoSensor.GetAltitude() );
jetiEx.SetJetiboxText( JetiExProtocol::LINE2, line2 );
break;
case 11:
jetiEx.SetJetiboxText( JetiExProtocol::LINE1, "Menu 11 - Line 1" );
jetiEx.SetJetiboxText( JetiExProtocol::LINE2, "Menu 11 - Line 2" );
break;
case 12:
jetiEx.SetJetiboxText( JetiExProtocol::LINE1, "Menu 12 - Line 1" );
jetiEx.SetJetiboxText( JetiExProtocol::LINE2, "Menu 12 - Line 2" );
break;
case 20: // org case 1
jetiEx.SetJetiboxText( JetiExProtocol::LINE1, "Menu 20 - Line 1" );
jetiEx.SetJetiboxText( JetiExProtocol::LINE2, "Menu 20 - Line 2" );
break;
case 21:
jetiEx.SetJetiboxText( JetiExProtocol::LINE1, "Menu 21 - Line 1" );
jetiEx.SetJetiboxText( JetiExProtocol::LINE2, "Menu 21 - Line 2" );
break;
case 22:
jetiEx.SetJetiboxText( JetiExProtocol::LINE1, "Menu 22 - Line 1" );
jetiEx.SetJetiboxText( JetiExProtocol::LINE2, "Menu 22 - Line 2" );
break;
case 30: // org case 2
jetiEx.SetJetiboxText( JetiExProtocol::LINE1, "Menu 30 - Line 1" );
jetiEx.SetJetiboxText( JetiExProtocol::LINE2, "Menu 30 - Line 2" );
break;
case 31:
jetiEx.SetJetiboxText( JetiExProtocol::LINE1, "Menu 31 - Line 1" );
jetiEx.SetJetiboxText( JetiExProtocol::LINE2, "Menu 31 - Line 2" );
break;
case 32:
jetiEx.SetJetiboxText( JetiExProtocol::LINE1, "Menu 32 - Line 1" );
jetiEx.SetJetiboxText( JetiExProtocol::LINE2, "Menu 32 - Line 2" );
break;
}
_bSetDisplay = false;
}
[/code]