Chciałbym jeszcze raz poruszyć sprawę przystosowania symka do komunikacji z takim pulpitem (bo budowa pulpitu to akurat najmniejszy problem, raczej czasochłonna niż skomplikowana rzecz).
Potrzebne by było jednak, aby:
- Można było komunikować się z symkiem poprzez porty COM. Jak będzie współpraca poprzez COM to nie będzie problemu ze zrobieniem pulpitu na USB - wystarczy dołożyć do pulpitu popularny scalaczek FT232BM albo FT232R i już mamy USB - żadna filozofia. Od strony programu korzystającego z COMa nie ma różnicy czy fizycznie jest to RS-232 czy port emulowany przez FT232 dołączony do USB.
- Najważniejsze: musi być możliwość zadania symkowi bezpośrednio numeru pozycji nastawnika, lub, jeżeli mamy pozostać przy up/down, możliwość odpytania symka o aktualną pozycję.
Najlepiej gdyby można było i zadawać pozycję bezpośrednio i odpytywać.
- To co powyżej, ino z hamulcem. Zarówno dla zaworu głównego jak i pomocniczego.
- Musi też być możliwość zapytania o stan lampek jazdy na oporach, wszelkich mierników itd. Można wymyślić protokół podobny do komend AT Hayesa dla modemów:
Odpytanie kompa o pozycję nastawnika:
pulpit> NAS?<CR>
komp> 23<CR>
Musi oczywiście być też możliwość odpytania o to samo pulpitu.
Zadanie pozycji nastawnika (znaki <CR> na końcu pominąłem).
pulpit> NAS!25
komp> OK
albo
pulpit> NAS!48
komp> ERROR
(bo np. aktualnie prowadzona lokomotywa nie ma tylu pozycji nastawnika ;-) )
Inne, np. prędkość:
VEL?
58.62
Oczywiście bardziej normalne będzie jeżeli to komp będzie nakazywał ustawienie wskazówki na mierniku gdy prędkość się zmieni:
VEL!35.20
OK
Pulpit pyta symka o jakąś lampkę:
LA004?
1
Nakazanie przez symka włączenia albo wyłączenia jakiejś lampki na pulpicie:
LA004!1
OK
LA004!0
OK
To przede wsystkim komp powinien powiadamiać pulpit o zmianie stanu wszelakich wskaźników, bo przecież bezsensensem byłoby aby pulpit co chwilę odpytywał kompa o wszystkie lampki, mierniki itd.
Podobnie jak pulpit powinien powiadamiać kompa gdy użyszkodnik przełączy jakiś przełącznik, poruszy nastawnikiem itd. Jednak na wszelki wypadek odwrotna komunikacja też musi być zapewniona.
Jeżeli kiedyś będziecie to implementować w symku to pamiętajcie aby:
- nazwy elementów były łatwe do zrozumienia, np. NAS (nastawnik), HAMG (hamulec główny), HAMP (pomocniczy) itd.
- zainicjalizować port do pracy z niezbyt wielką prędkością, np. 9600 i bez wynalazków typu parzystość, handshaking (bo po cholerę sobie tym jeszcze głowę zawracać) itd.
BTW - czy w prawdziwym elektrowozie dźwignia bocznikowania daje się ruszyć z położenia 0 tylko w pozycjach bezoporowych, czy też można bocznikować przy dowolnej pozycji nastawnika, tak jak w symku? A jeżeli się nie da, to czy po włączeniu bocznikowania można przestawić nastawnik na pozycję oporową, czy też nie da się go wtedy ruszyć?
A pulpit bym sobie chętnie sklecił, może nawet uda mi się uzbierać ze starych tablic elektrycznych trochę takich lampek jak na pulpicie EU07. Trochę się tego wala pod stołami ;-)