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

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

Offline maciek001

  • Wiadomości: 124
    • Zobacz profil
    • FanPage symulatora ET22
  • Otrzymane polubienia: 26
Odp: MaSzyna z portem COM
« Odpowiedź #60 dnia: 10 Kwietnia 2020, 17:27:46 »
W exe Milka jest dostępny parametr uarttachoscale do wpisania w ini. Podanie mu wartości 10.0 daje takie właśnie rezultaty, jak opisałeś, czyli prędkość jest mnożona razy 10 i dzięki temu podawana z dokładnością do 0,1km/h.
Dobrze wiedzieć. Dodam do programu zaraz :)
Milek7 jest więcej takich niespodzianek? ;)
Wszystko da się zrobić tylko jeszcze nie wiem jak.

Offline miko22

  • Wydział Promocji
  • Wiadomości: 592
  • Promocja MaSzyny w terenie - tymczasowo wstrzymana
    • Zobacz profil
    • PKP - Kolej Polska
  • Otrzymane polubienia: 170
Odp: MaSzyna z portem COM
« Odpowiedź #61 dnia: 10 Kwietnia 2020, 19:40:44 »
Na wyższych bajtach jest też data, godzina, przebyty dystans w decymetrach i numer wybranego kanału radiowego, ale co na którym i jak, to nie pamiętam. Na pierwszych czterech dostaje się 0xEF i tak samo trzeba wysyłać na pierwszych czterech 0xEF. Tylko to jeszcze chyba zależy, które exe. Ja używam w zasadzie tylko simowego, tylko z kolei shadery do niego nie są dostosowane do paczki 20.01, no i nie ma wielu zmian od tmj (choćby zrzucanie powietrza z PG przy wyłączonej baterii).
Lista dotychczasowych wystaw naszych pulpitów wraz z galerią tutaj.

Offline tmj

  • Deweloper
  • Wiadomości: 3673
    • Zobacz profil
  • Otrzymane polubienia: 2174
Odp: MaSzyna z portem COM
« Odpowiedź #62 dnia: 11 Kwietnia 2020, 01:58:56 »
Wersja 20.410 dostala przeszczep modulu komunikacji uart, powinna dzialac tak samo jak galazka sim. Doszla przy okazji sygnalizacja stanu lampki przekaznikow roznicowych (bajt 5, bit 3)

Aktualna zawartosc ramki:

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.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
};
« Ostatnia zmiana: 11 Kwietnia 2020, 02:02:29 wysłana przez tmj »

Online mac310

  • Wiadomości: 360
    • Zobacz profil
    • Moim Okiem...
  • Otrzymane polubienia: 24
Odp: MaSzyna z portem COM
« Odpowiedź #63 dnia: 11 Kwietnia 2020, 11:44:40 »
Przetestowane i jest git. Mogę zrezygnować z przełącznika wersji exe i dostosowania się do ramki danych :)
Teraz tylko muszę przerobić kod w Arduino żeby uwzględnić obsługę lampki obwodu głównego z symulatora... ale może poczekam na obsługę (enable/disable) zaworu trójdrogowego... Jest szansa?
I jeszcze pytanie czy lampka przekaźników różnicowych działa tylko na 4E czy też na 303E? Bo mam wrażenie, że na 303E nie świeci.
« Ostatnia zmiana: 12 Kwietnia 2020, 17:49:50 wysłana przez mac310 »
Historia budowy pulpitu lokomotywy serii EU07.

Online Stele

  • Wydział Repozytorium
  • Administrator
  • Wiadomości: 8981
    • Zobacz profil
  • Otrzymane polubienia: 1813
Odp: MaSzyna z portem COM
« Odpowiedź #64 dnia: 12 Kwietnia 2020, 20:23:30 »
W sensie nie wysyła sygnału na port, czy w którymś modelu kabiny coś skopane? Wszystko jest siódemką, to 4e od 303e nie powinny się absolutnie niczym różnić pod kątem zwracanych danych.
Mój kanał youtube

Online mac310

  • Wiadomości: 360
    • Zobacz profil
    • Moim Okiem...
  • Otrzymane polubienia: 24
Odp: MaSzyna z portem COM
« Odpowiedź #65 dnia: 12 Kwietnia 2020, 20:38:35 »
To muszę jeszcze raz dokładnie porównać bo na 4E różnicowy działa jak na filmie, a mam wrażenie, że na 303E nie zapala się lampka po popełnieniu. Może coś przegapiłem bo szybko testowałem. Nie było reakcji na symulacji i w związku z tym na pulpicie też się nie zapaliła więc pomyślałem, że 303E ma inaczej niż 4E.
Update. Rzeczywiście to moje niedopatrzenie. Zrobiłem testy jeszcze raz i rzeczywiście różnicowy działa w obu przypadkach.
« Ostatnia zmiana: 12 Kwietnia 2020, 22:50:28 wysłana przez mac310 »
Historia budowy pulpitu lokomotywy serii EU07.

Offline maciek001

  • Wiadomości: 124
    • Zobacz profil
    • FanPage symulatora ET22
  • Otrzymane polubienia: 26
Odp: MaSzyna z portem COM
« Odpowiedź #66 dnia: 13 Kwietnia 2020, 13:06:43 »
Na wyższych bajtach jest też data, godzina, przebyty dystans w decymetrach i numer wybranego kanału radiowego, ale co na którym i jak, to nie pamiętam. Na pierwszych czterech dostaje się 0xEF i tak samo trzeba wysyłać na pierwszych czterech 0xEF. Tylko to jeszcze chyba zależy, które exe. Ja używam w zasadzie tylko simowego, tylko z kolei shadery do niego nie są dostosowane do paczki 20.01, no i nie ma wielu zmian od tmj (choćby zrzucanie powietrza z PG przy wyłączonej baterii).
W arkuszu kalkulacyjnym są rozpisane ramki w dwie strony.
@Tmj: dorzucam link do Twojego exe.
Wszystko da się zrobić tylko jeszcze nie wiem jak.

Offline tmj

  • Deweloper
  • Wiadomości: 3673
    • Zobacz profil
  • Otrzymane polubienia: 2174
Odp: MaSzyna z portem COM
« Odpowiedź #67 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: 124
    • Zobacz profil
    • FanPage symulatora ET22
  • Otrzymane polubienia: 26
Odp: MaSzyna z portem COM
« Odpowiedź #68 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: 3673
    • Zobacz profil
  • Otrzymane polubienia: 2174
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #69 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.

Online mac310

  • Wiadomości: 360
    • Zobacz profil
    • Moim Okiem...
  • Otrzymane polubienia: 24
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #70 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: 3673
    • Zobacz profil
  • Otrzymane polubienia: 2174
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #71 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 »

Online mac310

  • Wiadomości: 360
    • Zobacz profil
    • Moim Okiem...
  • Otrzymane polubienia: 24
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #72 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: 3673
    • Zobacz profil
  • Otrzymane polubienia: 2174
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #73 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

  • Wydział Promocji
  • Wiadomości: 592
  • Promocja MaSzyny w terenie - tymczasowo wstrzymana
    • Zobacz profil
    • PKP - Kolej Polska
  • Otrzymane polubienia: 170
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #74 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 »
Lista dotychczasowych wystaw naszych pulpitów wraz z galerią tutaj.

Online mac310

  • Wiadomości: 360
    • Zobacz profil
    • Moim Okiem...
  • Otrzymane polubienia: 24
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #75 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: 4
    • Zobacz profil
  • Otrzymane polubienia: 1
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #76 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ć.

Pozdrawiam,
Marcin

Offline marcinn

  • Wiadomości: 4
    • Zobacz profil
  • Otrzymane polubienia: 1
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #77 dnia: 13 Września 2020, 16:10:29 »
Odpowiadam sobie po części - zdaje się, że pierwsze bajty zamapowane są wg eu07_input-uart.ini

Offline miko22

  • Wydział Promocji
  • Wiadomości: 592
  • Promocja MaSzyny w terenie - tymczasowo wstrzymana
    • Zobacz profil
    • PKP - Kolej Polska
  • Otrzymane polubienia: 170
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #78 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.
Lista dotychczasowych wystaw naszych pulpitów wraz z galerią tutaj.

Offline marcinn

  • Wiadomości: 4
    • Zobacz profil
  • Otrzymane polubienia: 1
Odp: MaSzyna z portem COM (SerialPort)
« Odpowiedź #79 dnia: 13 Września 2020, 17:04:54 »
Dzieki. Potwierdzam że switche działają też z klawiatury. Hamulce i nastawnik podpiąłem pod potencjometry.  Protoboard już jest intensywnie testowany ;)