WiThrottleServer

Boostrar, dekodrar, signaler, m.m. Montering av dekodrar i lok. Datorprogram och programmering.
Användarvisningsbild
daniel
Inlägg: 3619
Blev medlem: 2012-05-08, 10:15

WiThrottleServer

Inlägg av daniel »

Jonas Hjelm, Peter Ekelund och jag träffades i Kil och pratade om WiThrottle och Z21:an. Mobilappen WiThrottle för iPhone och mobilappen Engine Driver för Android använder normalt JMRI för att prata med modelljärnvägen men tyvärr finns det en bugg i JMRI som gör att Z21:an går in i programmeringsmode.

För att kunna använda WiThrottle / Engine Driver på våra träffar tillsammans med Z21 har jag tagit fram ett eget program, WiThrottleServer, som ersätter JMRI. Packa upp bifogad fil i valfritt bibliotek och starta filen WiThrottleServer.jar. Jag har lagt in stöd för LoconetOverTCP och UDP-kommunikation med Z21, och tanken är att även lägga till seriekommunikation (LocoBufferUSB).

Jag har hämtat mycket kod från JMRI och eftersom vi inte vet exakt vad som orsakar buggen mellan JMRI och Z21:an så finns det en liten risk att buggen finns även i mitt program, men i så fall bör vi kunna spåra buggen och åtgärda den.

Programmet är i beta-version med risk för diverse buggar men är testad med LoconetOverTCP till JMRI och Digitrax Zephyr. Jag har även lagt in stöd för Z21 över UDP-protokollet men då jag har ingen egen Z21 så någon annan får testa om jag har fått den delen rätt. Ibland verkar inte programmet starta riktigt av någon anledning så starta om programmet i så fall.

När man har ändrat inställningarna så måste man starta om programmet för att ändringarna ska slå igenom. Gör de ändringar som ska göras och klicka sedan i någon annan ruta i dialogrutan. Ändringar sparas när man lämnar textfältet. Och starta sedan om programmet.

Programmet annonserar inte sin IP-adress så som JMRI gör så man måste mata in IP-adressen manuellt. Men har man väl gjort det en gång så är den kvar så man kan välja den nästa gång.

Om appen Withrottle inte klarar välja ett lok så beror det troligen på att WithrottleServer inte har kontakt med Z21:an. Kontrollera i så fall IP-adressen till Z21:an. UDP-porten ska vara 21105 om jag förstått det hela rätt.

De två lok som kommer upp när man väljer ett nytt lok är för närvarande hårdkodade. Det ska ändras i en senare version.

-------

WiThrottleServer har möjlighet att ge apparna som ansluter en lista på tillgängliga lok och programmet kan hämta denna lista antingen från en fil i samma mapp som programmet, locolist.txt, eller genom att ansluta till en web service som kan leverera en loklista.

Programmet LocoManager är en sådan web service som kan leverera en loklista till WiThrottleServer. Fördelen är att man i LocoManager kan lägga till, ta bort och ändra lok, och WiThrottleServer hämtar en aktuell loklista från web service varje gång en WiThrottle-app ansluter. Men för att appen WiThrottle ska se den uppdaterade loklistan måste appen startas om.

Även LocoManager kan läsa en loklista från medlemssidorna på forumet. Exportera loklistan och spara filen i samma mapp som LocoManager och starta sedan programmet så kommer programmet använda denna lista.

Med vänlig hälsning
Daniel
Bilagor
WiThrottleServer_ver_0.3.zip
(163.25 KiB) Nerladdad 220 gånger
LocoManager version 0.1.zip
(41.31 KiB) Nerladdad 239 gånger
Användarvisningsbild
LLJ
Inlägg: 4314
Blev medlem: 2012-05-08, 10:27

Re: WiThrottleServer

Inlägg av LLJ »

Vore det inte bättre att få bort buggen ur JMRI versionen genom att ta hjälp av de som kodar JMRI än att skapa en parallell programversion?

Funderar Lars.
Användarvisningsbild
daniel
Inlägg: 3619
Blev medlem: 2012-05-08, 10:15

Re: WiThrottleServer

Inlägg av daniel »

JMRI består av väldigt mycket kod och det är inte helt enkelt att navigera i koden. Det är klasser som är beroende av klasser som är beroende av klasser som är beroende av klasser, programmet har en uppsjö av olika trådar (threads) och det dräller av "managers" som hanterar andra klasser. Koden är snyggt skriven så det är inget att klaga på så, men det massvis av kod i ett massivt garnnystan.

Sen upplever jag ibland JMRI som stort och otympligt. Det är bra på mycket, men ibland blir det lite för mycket. Mitt program är tänkt att vara ett litet och enkelt program utan alla de finesser som ingår i JMRI och som man ändå inte har någon nytta av på modulträffar.

Slutligen har jag ingen Z21 så jag kan inte leta efter buggen även om jag skulle vilja. Om buggen finns i mitt program också så är det mycket lättare att hitta den där än i stora JMRI eftersom jag har skalat bort en massa kod. Om det finns någon som har tid att leta buggen och som även har en Z21 så varsågod. Men jag tror det är svårt om man inte har ganska djupa kunskaper i JMRI.

Med vänlig hälsning
Daniel
Användarvisningsbild
daniel
Inlägg: 3619
Blev medlem: 2012-05-08, 10:15

Re: WiThrottleServer

Inlägg av daniel »

Jag har fixat en exportfunktion för loklistorna på medlemssidorna. Om ni går in på medlemssidorna så ser ni att för lokadress-tabellerna så har det kommit till alternativet "Exportera". Se tabellen "Lokadresser DT-16" som exempel. Klickar man på exportera så får man loklistan i en tabbseparerad textfil som enkelt kan läsas in av ett program. Första raden i filen innehåller namnen på kolumnerna och det rekommenderas att man använder dessa för att hitta rätt kolumn ifall ordningen på kolumnerna ändras vid ett senare tillfälle, t ex om fler poster i tabellen skulle tillkomma.

Jag har även fixat programmet WiThrottleServer så att det nu kan läsa in den här textfilen med loklistan. Ladda ner loklistan och lägg i samma bibliotek som WiThrottleServer.jar så kan ni välja mellan alla lok som är anmälda till träffen. Withrottle visar kolumnerna "Loktyp, Operatör Loknummer, Namn".

Jag bifogar inte loklistan i ZIP-filen eftersom ZIP-filen kan laddas ner av besökare som inte är medlemmar på forumet.

Med vänlig hälsning
Daniel
Bilagor
WiThrottle_ver_0.2.zip
(135.61 KiB) Nerladdad 237 gånger
Användarvisningsbild
Aurel
Inlägg: 143
Blev medlem: 2012-11-02, 14:43

Re: WiThrottleServer

Inlägg av Aurel »

Hej Daniel

Hittar ingen " Exportera " alternativ :roll:

/ Aurel
Användarvisningsbild
StefanFjällemark
Inlägg: 1419
Blev medlem: 2014-09-01, 07:35
Ort: Stenungsund på Västkusten

Re: WiThrottleServer

Inlägg av StefanFjällemark »

daniel skrev:Jag har även fixat programmet WiThrottleServer så att det nu kan läsa in den här textfilen med loklistan.
Nu finns även en webbservice för loklistan. Avsikten är att bland annat WiThrottleServer skall ha tillgång till lokala ändringar som görs under en träff. Jag exporterade loklistan och lade in den i en webbservice (enbart för test) som man anropar med http://locoregistryservice.azurewebsites.net/locos och då får man listan som JSON. OBS! I svaret från webbservicen exkluderas just nu lok med adress 0 och registreringar med adressintervall.

På modulträffar körs webbservicen antingen lokalt eller i molnet, lite beroende på vad som är praktiskt.

För den som är intresserad finns källkoden på https://github.com/fjallemark/Loco-Registry
Hälsningar från Stefan på västkusten :geek:
Medlem i FREMO, VMJF och MJF Rälsbiten
Användarvisningsbild
daniel
Inlägg: 3619
Blev medlem: 2012-05-08, 10:15

Re: WiThrottleServer

Inlägg av daniel »

Aurel skrev:Hittar ingen " Exportera " alternativ :roll:
Aurel: Gå in på den här sidan på medlemssidorna och bläddra ner på sidan tills du ser tabellen "Lokadresser DT-16". Längst till höger på den raden har du Ändra, Radera, Flytta och Exportera.

Med vänlig hälsning
Daniel
Användarvisningsbild
daniel
Inlägg: 3619
Blev medlem: 2012-05-08, 10:15

Re: WiThrottleServer

Inlägg av daniel »

StefanFjällemark skrev:
daniel skrev:Jag har även fixat programmet WiThrottleServer så att det nu kan läsa in den här textfilen med loklistan.
Nu finns även en webbservice för loklistan. Avsikten är att bland annat WiThrottleServer skall ha tillgång till lokala ändringar som görs under en träff. Jag exporterade loklistan och lade in den i en webbservice (enbart för test) som man anropar med http://locoregistryservice.azurewebsites.net/locos och då får man listan som JSON. OBS! I svaret från webbservicen exkluderas just nu lok med adress 0 och registreringar med adressintervall.
Tack!

Adress 0 ska aldrig vara tillgänglig på träffar då det är analogadressen så det är bara bra att den exkluderas. Och det har aldrig varit tanken att man ska registrera stora sjok med adresser i listan så det är nog bara bra att intervaller också exkluderas.

Med vänlig hälsning
Daniel
Användarvisningsbild
daniel
Inlägg: 3619
Blev medlem: 2012-05-08, 10:15

Re: WiThrottleServer

Inlägg av daniel »

En intressant upptäckt vid arbetet med WiThrottleServer:

Appen WiThrottle får loklistan när man startar appen och sedan behålls befintlig loklista så länge man har appen igång. Det innebär att om man uppdaterar loklistan så måste man avsluta och starta om appen WiThrottle för att ändringarna ska slå igenom. Det här är inget stort problem och det är först om man ändrar sitt lok under pågående modulträff som man behöver tänka på det. Alltså, om du vill köra ett nytt lok som inte finns i loklistan sedan tidigare och lägger till loket i loklistan på träffen så måste appen WiThrottle startas om för att den ska ta det nya loket.

Med vänlig hälsning
Daniel
Användarvisningsbild
Aurel
Inlägg: 143
Blev medlem: 2012-11-02, 14:43

Re: WiThrottleServer

Inlägg av Aurel »

Hej Daniel

Tyvärr Daniel jag ser inte Flytta och Exportera, ser bara Ändra och Radera :roll:

/ Aurel
Skriv svar

Återgå till "El, elektronik och programvara"