Har helt kört fast i huvudet.. jag kör en Arduino plattform, dvs C språket.
Jag har sparat timme och minut som läses in i en byte array (eepromvarArray). Där jag har timme från (position eepromvarArray[4]) och minut från (position eepromvarArray[5]) m.m.
Dessa skulle jag vilja lägga ihop i en gemensam variabel av valfri typ, så länge jag kan jämföra mot annan likvärdig variabel enligt tid/klocka.
Jag vill alltså ha ex. timme 10 och minut 09 att sitta ihop i en variabel 1009 och givetvis går inte 10 + 9 eftersom det blir 19. Givetvis går inte (10*10) + 9 eftersom det blir 109.. jag behöver verkligen 1009 och jag lyckas verkligen inte...
Anledningen till att jag läser ur EEPROM med timme i en byte och minuter i en byte, är därför att "ramverket" i övrigt är byggt så och jag tyckte det fungerade rätt så bra.
Innan jag kom på att jag behöver jämföra både timme och minut samtidigt så jämförde jag timme med timme och minut med minut, då var det absolut inga problem. Men, utan att ha råkat ut för det, så tror jag att om jag har följande.. att klockan "nu" är säg 1326 och vi jämför med en starttimme som är 10 så är vi ju efter det värdet. Men om vi har en startminut på säg 30 så kommer vi de första 30 minuterna att få fel, varje timme. Därav så började jag titta på att få ihop timme med minut i en variabel för att jämföra det som ett enda värde istället..
Har provat med följande som inte fungerar..
Kod: Markera allt
uint16_t nowHour = 0;
uint16_t nowMinutes = 0;
uint16_t nowSeconds = 0;
uint16_t nowYear = 0;
uint16_t nowMonth = 0;
uint16_t nowDay = 0;
uint16_t nowWday = 0;
uint16_t validYear = 0;
uint16_t validMonth = 0;
uint16_t validDay = 0;
uint16_t validHourFrom = 0;
uint16_t validMinFrom = 0;
uint16_t validHourUntil = 0;
uint16_t validMinUntil = 0;
uint16_t validWday = 0;
validYear = eepromvarArray[1];
validMonth = eepromvarArray[2];
validDay = eepromvarArray[3];
validHourFrom = eepromvarArray[4];
validMinFrom = eepromvarArray[5];
validHourUntil = eepromvarArray[6];
validMinUntil = eepromvarArray[7];
validWday = eepromvarArray[8];
nowHour = tm.Hour;
nowMinutes = tm.Minute;
Med följande kod;
Kod: Markera allt
char validTimeFrom[5];
char validTimeUntil[5];
char timeNow[5];
sprintf(validTimeFrom, "%.2d%.2d",validHourFrom,validMinFrom);
sprintf(validTimeUntil, "%.2d%.2d",validHourUntil,validMinUntil);
sprintf(timeNow, "%.2d%.2d",nowHour,nowMinutes);
if ( validTimeFrom <= timeNow )
{
Serial.println("Efter starttid");
}
else
{
Serial.println("Innan starttid");
}
if ( validTimeUntil >= timeNow )
{
Serial.println("Innan sluttid!");
}
else
{
Serial.println("Efter sluttid!");
}
Det som "lurar" mig är ju att om jag kör en Serial.print på validTimeFrom, validTimeUntil, timeNow så ser de ju helt korrekta ut.. Jag får ut validTimeFrom = 1000, validTimeUntil = 2359, timeNow = 1921
Men med checken ovan validTimeFrom <= timeNow så får jag alltid else med "Innan starttid"... Jag vill ju ha att vi är efter starttid.. och det bör det ju vara i detta läge med timeNow = 1921, men är inte så..
Vad jag förmodar så är det därför jag jämför fel sorts värden!??
Har säkerligen missat hälften av vad jag tänkt skriva, även fast jag korrläst..
Blir galen av det här.. alltid "hatat" siffror och de där galna pilarna, större/mindre än, bråkar alltid med mig.. Använder de hur mycket som helst, men jag tror inte att jag förstår dem ändå efter 20 år plus det antal år man gick i skolan, det har helt enkelt aldrig fastnat..
Men det jag vill åstadkomma är hur som helst..
variabel1 = 10
variabel2 = 00
sättas ihop till variabel3 = 1000
Hur!?
Många tack på förhand!