Autor Wątek:  MaSzyna z portem COM (SerialPort)  (Przeczytany 46806 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline tmj

  • Deweloper
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2351
Odp: MaSzyna z portem COM
« Odpowiedź #60 dnia: 17 Kwietnia 2020, 00:40:29 »
ale może poczekam na obsługę (enable/disable) zaworu trójdrogowego... Jest szansa?
Szansa zawsze jest :>

(komendy sa obslugiwane od wersji 20.416)

Offline maciek001

  • Wiadomości: 136
    • Zobacz profil
    • FanPage symulatora ET22
  • Otrzymane polubienia: 33
Odp: MaSzyna z portem COM
« Odpowiedź #61 dnia: 12 Maja 2020, 21:36:09 »
ale może poczekam na obsługę (enable/disable) zaworu trójdrogowego... Jest szansa?
Szansa zawsze jest :>
Jakbyście coś modyfikowali to dajcie znać na PW to będę czuwał nad aktualizacją plików ;)

EDIT: nie macie wrażenia, że jest trochę bałagan w ułożeniu bitów w bajtach wskaźników? Co o tym myślicie?
« Ostatnia zmiana: 26 Maja 2020, 19:54:03 wysłana przez maciek001 »
Wszystko da się zrobić tylko jeszcze nie wiem jak.

Offline tmj

  • Deweloper
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2351
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #62 dnia: 02 Lipca 2020, 21:15:04 »
Aktualny uklad zawartosci ramki, dla wersji 20.701

std::array<uint8_t, 52> buffer {
//preamble
0xEF, 0xEF, 0xEF, 0xEF,
//byte 0-1 (counting without preamble)
SPLIT_INT16(tacho),
//byte 2
(uint8_t)(
        trainstate.epbrake_enabled << 0
        | trainstate.ventilator_overload << 1
        | trainstate.motor_overload_threshold << 2),
//byte 3
(uint8_t)(
        trainstate.coupled_hv_voltage_relays << 0),
//byte 4
(uint8_t)(
        trainstate.train_heating << 0
        | trainstate.motor_resistors << 1
        | trainstate.wheelslip << 2
        | trainstate.alerter << 6
        | trainstate.shp << 7),
//byte 5
(uint8_t)(
        trainstate.motor_connectors << 0
        | trainstate.converter_overload << 2
        | trainstate.ground_relay << 3
        | trainstate.motor_overload << 4
        | trainstate.line_breaker << 5
        | trainstate.compressor_overload << 6),
//byte 6
(uint8_t)(
        m_trainstatecab << 2
        | trainstate.recorder_braking << 3
        | trainstate.recorder_power << 4
        | trainstate.radio_stop << 5
        | trainstate.springbrake_active << 6
        | trainstate.alerter_sound << 7),
//byte 7-8
SPLIT_INT16(brake_press),
//byte 9-10
SPLIT_INT16(pipe_press),
//byte 11-12
SPLIT_INT16(tank_press),
//byte 13-14
SPLIT_INT16(hv_voltage),
//byte 15-16
SPLIT_INT16(current1),
//byte 17-18
SPLIT_INT16(current2),
//byte 19-20
SPLIT_INT16(current3),
//byte 21-22
SPLIT_INT16((time.wYear - 1) * 12 + time.wMonth - 1),
//byte 23-24
SPLIT_INT16((time.wDay - 1) * 1440 + time.wHour * 60 + time.wMinute),
//byte 25-26
SPLIT_INT16(time.wSecond * 1000 + time.wMilliseconds),
//byte 27-30
SPLIT_INT16((uint16_t)odometer), SPLIT_INT16((uint16_t)(odometer >> 16)),
//byte 31-32
SPLIT_INT16(lv_voltage),
//byte 33
(uint8_t)trainstate.radio_channel,
//byte 34-48
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
Jesli jest zapotrzebowanie na zmiane ukladu, prosze zglaszac.

Offline mac310

  • Wiadomości: 494
    • Zobacz profil
    • Moim Okiem...
  • Otrzymane polubienia: 65
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #63 dnia: 03 Lipca 2020, 14:41:32 »
A ja mam takie pytanie bo zrobiłem sobie "atrapę" przedziału maszynowego i wszystko fajnie bo nie muszę bawić się z klawiaturą podczas przechodzenia między kabinami ale niestety nie do końca. Po wejściu do drugiej kabiny stoimy sobie na środku i trzeba użyć myszy, żeby usiąść zanastawnikiem. Czy jest jakaś metoda, żeby te kliknięcia myszą również zrealizować w komunikacji szeregowej?
Historia budowy pulpitu lokomotywy serii EU07.

Offline tmj

  • Deweloper
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2351
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #64 dnia: 11 Lipca 2020, 19:04:03 »
Obawiam sie ze nie bardzo, przynajmniej na razie -- zmiana polozenia kamery przypisana jest na sztywno w exe do przyciskow myszy i nie wykorzystuje systemu komend ktory steruje urzadzeniami pojazdu.

Jakims tam bieda-rozwiazaniem moze byc teoretycznie szamysntwo w postaci edycji pliku mmd pojazdu, i wpisanie tam takich samych parametrow dla driverXpos: i driverXsitpos: W takiej aranzacji kamera po wejsciu do kabiny bedzie umieszczona w tej samej pozycji w jakiej znajduje sie gdy "siadamy" uzywajac prawego przycisku.
« Ostatnia zmiana: 11 Lipca 2020, 19:07:44 wysłana przez tmj »

Offline mac310

  • Wiadomości: 494
    • Zobacz profil
    • Moim Okiem...
  • Otrzymane polubienia: 65
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #65 dnia: 15 Lipca 2020, 13:30:30 »
To mam jeszcze jedno pytanie w kwestii komunikacji szeregowej. Dlaczego po uruchomieniu symulacji i zainicjowaniu komunikacji stany przełączników nie są od razu zgodne z tym co fizycznie na pulpicie jest tylko trzeba przeklikać hebelek lub przełącznik? Przykładowo rodzaj hamulca zgłasza się domyślnie jako osobowy nawet jeśli przełącznik jest w innej pozycji. Dopiero przełączenie go na pulpicie powoduje przestawienie w symulatorze. Wydaje mi się, że bity są transmitowane na bieżąco i spodziewałbym się, że od razu po przesłąniu pierwszej ramki stan przełączników symulatora powinien odpowiadać fizycznemu położeniu tych przełączników na pulpicie.
Historia budowy pulpitu lokomotywy serii EU07.

Offline tmj

  • Deweloper
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2351
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #66 dnia: 16 Lipca 2020, 19:39:56 »
Ma to zwiazek z tym, ze stan przyciskow w danej kabinie ustawiany jest w momencie "wejscia" do niej, na podstawie lokalnego stanu pojazdu. Komendy obslugi urzadzen generowane sa jednorazowo przy stanie zmianu urzadzenia na pulpicie, dlatego tez dopoki taka zmiana nie ma miejsca, symulator w efekcie utrzymuje swoj "stan biezacy".

Offline miko22

  • Wiadomości: 613
  • Powoli wracam z "promocją"...
    • Zobacz profil
    • Nasze-Symulatory.pl
  • Otrzymane polubienia: 192
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #67 dnia: 01 Września 2020, 23:09:51 »
Mi to już od dawna działa dobrze, również na najnowszym (200824) exe @tmj, tzn. jeśli na fizycznym pulpicie przełącznik hamulca jest ustawiony np. na pospieszny, to po wczytaniu symulacji w MaSzynie też ten przełącznik od razu przestawia się na tą pozycję. Przy czym w eu07_input-uart nie używam komend powodujących przełączenie o jedną pozycję w którąś ze stron, ale ustawiających przełącznik w konkretnej pozycji:
toggle brakeactingspeedsetrapid // wybor trybu hamulca dla pociagu pospiesznego
toggle brakeactingspeedsetpassenger // wybor trybu hamulca dla pociagu osobowego
toggle brakeactingspeedsetcargo // wybor trybu hamulca dla pociagu towarowego
« Ostatnia zmiana: 01 Września 2020, 23:14:41 wysłana przez miko22 »

Offline mac310

  • Wiadomości: 494
    • Zobacz profil
    • Moim Okiem...
  • Otrzymane polubienia: 65
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #68 dnia: 03 Września 2020, 12:19:36 »
No to dziwne, ja w eu07_input-uart.ini też tak mam
35 toggle brakeactingspeedsetcargo
36 toggle brakeactingspeedsetpassenger
37 toggle brakeactingspeedsetrapid
Po uruchomieniu symulacji startuje na osobowym, tak jak jest bez pulpitu i muszę coś ruszyć, żeby się przestawiło.
Historia budowy pulpitu lokomotywy serii EU07.

Offline marcinn

  • Wiadomości: 36
    • Zobacz profil
    • Budowa symulatora do MaSzyny
  • Otrzymane polubienia: 24
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #69 dnia: 13 Września 2020, 14:43:49 »
Dzień dobry.

Panowie, może ślepy jestem, ale gdzie znajdę opis ramki wejściowej (z kontrolera do PC)? Pcham obecnie zera i nie mogę sterować z klawiatury. Patrzenie na LED od SHP już mi się znudziło ;)

Dzięki za snippety w tym wątku - dużo pomogły, bo dokumentacja jest bardzo skromna.

Czy jest gdzieś dostępna ta biblioteka dla arduino? Jakiś GitHub? Zamierzam zbudować pulpit dla dzieciaka i parę wierszy mógłbym do kodu dołożyć.

EDIT:
Odpowiadam sobie po części - zdaje się, że pierwsze bajty zamapowane są wg eu07_input-uart.ini

EDIT 26/05/2021
Aby obsłużyć więcej przełączników na moim Uno w celu testowania proponowanej przeze mnie obsługi świateł, musiałem dołożyć  multipleksery do hardware. Kod dla Arduino nieco się skomplikował, zrobił się nieczytelny i przestałem czerpać przyjemność z eksperymentów. A ponieważ będę dokładał więcej klamotów, to nadszedł czas na przygotowanie solidnych fundamentów.

Z tego powodu przerobiłem te moje próby na zalążek biblioteki dla Arduino, do obsługi całego pulpitu (a nawet wielu pulpitów - zależnie od limitów i koncepcji sprzętowych). Kod biblioteki wrzuciłem na Githuba: https://github.com/marcinn/maszynaduino

Biblioteka jest w fazie mocnego rozwoju i przewiduję zmiany w API (szczególnie w kontekście muxów). Głównym celem jest prostota użycia i czytelność kodu, bowiem wszelkie eksperymenty czy testy wymagają skupienia się, a warto skupiać się na "mięchu" a nie na wszystkich "bebechach", szczególnie kiedy ma się bardzo mało czasu na hobby.

Jeśli to kogoś zainteresuje, to zachęcam do zgłaszania sugestii najlepiej przez https://github.com/marcinn/maszynaduino/issues
Opis z przykładem jest w readme dostępnym z pierwszego odnośnika.

Aktualnie pracuję (w miarę możliwości czasowych) nad Maszynaduino v0.2. Będą większe zmiany:
- monitor do diagnostyki po UART (dedykowany program),
- wsparcie dla rejestrów przesuwnych do sterowania kontrolkami (wyjścia),
- ulepszona komunikacja UART z MaSzyną, wraz z synchronizacją i wyeliminowanym opóźnieniem związanym z oczekiwaniem na dane z PC (serial timeout),
- uporządkowana obsługa analogowych multiplekserów (wejścia).


Cytuj
Nie prościej jakieś ekspandery na I2C albo PISO i SIPO i komunikować przez SPI?

W kolejnych wersjach rozważam wsparcie dla układów typu MCP23017. Dotychczas I2C/SPI uważałem za "armatę na muchę", a mój prototyp powstaje w oparciu o rejestry 74595 w szeregu dla wyjść (kontrolki) i mux 74HC4067 dla wejść (przyciski, przełączniki).
« Ostatnia zmiana: 27 Maja 2021, 01:18:10 wysłana przez marcinn »

Offline miko22

  • Wiadomości: 613
  • Powoli wracam z "promocją"...
    • Zobacz profil
    • Nasze-Symulatory.pl
  • Otrzymane polubienia: 192
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #70 dnia: 13 Września 2020, 16:50:21 »
Tak, to tego pliku można sobie samemu wstawiać wpisy komend z eu07_input-keyboard we własnej kolejności i te, które są potrzebne. A nastawnikami i kranami powinno dać się sterować z klawiatury po zmianie w eu07.ini:
//uartfeature <nastawnik> <bocznik> <hamulec> <hamulec lokomotywy>
uartfeature yes yes yes yes
na:
//uartfeature <nastawnik> <bocznik> <hamulec> <hamulec lokomotywy>
uartfeature no no no no
ale od dłuższego czasu ta funkcja wyłączania obsługi nastawników i kranów nie działa. Pozostałymi urządzeniami zawsze powinno dać się sterować z klawiatury, nawet przy aktywnej komunikacji UART.

Offline marcinn

  • Wiadomości: 36
    • Zobacz profil
    • Budowa symulatora do MaSzyny
  • Otrzymane polubienia: 24
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #71 dnia: 30 Kwietnia 2021, 14:23:12 »
Cześć.

Czy aby nie brakuje poleceń enable/disable dla tylnych świateł?
Zdefiniowane polecenia to:


    headlighttogglerearleft,
    headlighttogglerearright,
    headlighttogglerearupper,
    redmarkertogglerearleft,
    redmarkertogglerearright,

 
Jak włączacie tylne światła hebelkami z pulpitu?

Offline mac310

  • Wiadomości: 494
    • Zobacz profil
    • Moim Okiem...
  • Otrzymane polubienia: 65
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #72 dnia: 30 Kwietnia 2021, 15:37:11 »
No raczej z jednego pulpitu to ciężko sensownie obsłużyć obie kabiny. Ja osobiście ignoruję oświetlenie tyłu. Można też przechodzić między kabinami i załączać co tam potrzeba. To nawet bardziej realne bo w realu raczej nie ma możliwości osygnalizowania obu stron z jednej kabiny. Trochę to dziwnie wygląda, bo trzeba wejść do kabiny, włączyć światła, przejść do drugiej kabiny, wyłączyć hebelki i włączyć znowu ten drugi koniec. W sumie można wyłączyć hebelki podczas przechodzenia, będąc jeszcze w przedziale maszynowym. To powinno zadziałać bo tam hebelki nie zareagują na światła.
Historia budowy pulpitu lokomotywy serii EU07.

Offline marcinn

  • Wiadomości: 36
    • Zobacz profil
    • Budowa symulatora do MaSzyny
  • Otrzymane polubienia: 24
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #73 dnia: 30 Kwietnia 2021, 16:26:09 »
Ok, rozumiem. Dzięki za wyjaśnienia!
Robię pulpit do stonki (custom, nie replika), a wszystkie heble od świateł są w niej na jednym pulpicie. 

Offline mac310

  • Wiadomości: 494
    • Zobacz profil
    • Moim Okiem...
  • Otrzymane polubienia: 65
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #74 dnia: 30 Kwietnia 2021, 16:34:01 »
No tak, przy tych jednokabinowych lokach to inna bajka :)
Historia budowy pulpitu lokomotywy serii EU07.

Offline maciek001

  • Wiadomości: 136
    • Zobacz profil
    • FanPage symulatora ET22
  • Otrzymane polubienia: 33
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #75 dnia: 10 Maja 2021, 22:09:24 »
Aby obsłużyć więcej przełączników na moim Uno w celu testowania proponowanej przeze mnie obsługi świateł, musiałem dołożyć  multipleksery do hardware.
Nie prościej jakieś ekspandery na I2C albo PISO i SIPO i komunikować przez SPI?
Edit: I jak możesz to scal Swoje wpisy;)

PS: nowa wersja programu do testowania. Na razie nie przejmujcie się komunikatem o linijce kodu w dole aplikacji. Zapomniałem go usunąć ;)
Wszystko da się zrobić tylko jeszcze nie wiem jak.

Offline maciek001

  • Wiadomości: 136
    • Zobacz profil
    • FanPage symulatora ET22
  • Otrzymane polubienia: 33
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #76 dnia: 24 Maja 2021, 09:48:55 »
Szczerze? Nie wiem jak. Najchętniej usunąłbym większość nic nie wnoszących.
Przycisk "Modyfikuj" w prawym górnym rogu wypowiedzi, obok "Cytuj" ;)
Wszystko da się zrobić tylko jeszcze nie wiem jak.

Offline youBy

  • Deweloper
  • Wiadomości: 6139
  • Co tam?
    • Zobacz profil
    • Automat Weryfikujący Regulację i Lambdę
  • Otrzymane polubienia: 823
Odp:  MaSzyna z portem COM (SerialPort)
« Odpowiedź #77 dnia: 15 Września 2021, 23:05:15 »
Czy w protokole byłoby miejsce na dodatkowe wyjścia cyfrowe na potrzeby ezetów/szynobusów? Przede wszystkim brakuje tu kwestii związanych z zezwoleniami i stanem otwarcia drzwi, ale przydałoby się również podświetlenie wybranego kierunku (tu ogólniej pod asynchrony).
Xoov
Powyższy post wyraża jedynie opinię autora w chwili publikacji. Autor zastrzega sobie prawo do zmiany poglądów bez podawania przyczyny, jak również informowania o tym.

Offline maciek001

  • Wiadomości: 136
    • Zobacz profil
    • FanPage symulatora ET22
  • Otrzymane polubienia: 33
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #78 dnia: 19 Października 2021, 15:34:40 »
Tak, jest na to przewidziane miejsce. Są puste bajty. Pasowałoby kiedyś siąść i zrobić porządek, dodać wszystkie aktualne ficzery itp.
Wszystko da się zrobić tylko jeszcze nie wiem jak.

Offline marcinn

  • Wiadomości: 36
    • Zobacz profil
    • Budowa symulatora do MaSzyny
  • Otrzymane polubienia: 24
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #79 dnia: 19 Października 2021, 15:58:26 »
Pasowałoby kiedyś siąść i zrobić porządek, dodać wszystkie aktualne ficzery itp.

Mogę się tym zająć.