C++ Komunikacja RS232, Splitter RS232

0

Witam,

Mam zagadnienie dotyczące komunikacji poprzez port COM, interfejs RS232, przedstawię wam krótko problem: Do portu COM podłączam urządzenie które wysyła pewne pomiary co określony czas, dane te odbierane są przez program dedykowany od producenta urządzenia, ale chciałbym jednocześnie odbierać te dane w drugim programie który sam napisałem w języku C++, wiadomo że nie mogę łączyć się z portem COM jednocześnie poprzez dwa programy, istnieją programy do dzielenia portu COM i rozsyłaniu danych na 2 lub więcej wirtualnych portów COM - lecz ich cena przerasta moje oczekiwania względem mojego programu, chciałbym coś takiego sam napisać lecz nie mam pomysłu jak to obsłużyć ? Na jakiej zasadzie działają te programy ? Jak utworzyć wirtualne porty w języku C++ ?

z góry dziękuję wam za pomoc i pomysły,

0
fija napisał(a)

dane te odbierane są przez program dedykowany od producenta urządzenia, ale chciałbym jednocześnie odbierać te dane w drugim programie który sam napisałem w języku C++
może zamiast kombinować z portami podepnij się pod program producenta i stamtąd ciągnij te dane :)

0

też o tym myślałem, znalazłem plik w którym zapisują się dane lecz system kodowania nie możliwy do odgadnięcia, program ma jakiś wewnętrzny słownik który dekoduje znaki, chyba że ktoś zna skuteczny sposób na odkodowanie ?

0

Przypuszczam, że te dane są kodowane dopiero podczas zapisu do pliku. W programie można zapewne je odczytać. Skupiłbym się więc na wyciągnięciu informacji zdekodowanych przez program. Może małe RE, zbadanie miejsca gdzie następuje ten odczyt i ewentualne wstrzyknięcie drobnego kodu do jakiejś dll'ki programowej bo przypuszczam, że program producenta z jakiejś korzysta.

Można również połasić się na założenie hook'a na jakiś readfile albo coś w ten deseń. Sądzę, że można to na spokojnie przemyśleć na pewno jest jakieś dobre i tanie rozwiązanie ;) 

Przeanalizować działanie sterownika, może posiada on jakieś ciekawe możliwości.

0

dzięki za podpowiedź,
znalazłem coś po wpisaniu hasła COM port redirector w google, na wikipedi odnośnik do ciekawego projektu Null-modem-emulator (com0com), z tego co już przeczytałem daje on możliwości jakie by były dla mnie bardzo przydatne (typu spllitter sygnały na porty wirualne) a co najważniejsze jest na licencji GPL. Jak coś uda mi się zdziałać to umieszczę rozwiązanie - nadal czekam na uwagi :) i pomysły

0

Zobacz co przesyla to urzadzenie dowolnym snifferem portu com(ja korzystalem z Free Serial Port Monitor i spelnial moje oczekiwania). Jezeli dane beda zapisane w formie ktora ciezka zrozumiec to wklej tutaj kilka przykladowych porcji danych(to co leci przez port com + 'wynik' czyli to co powinno wyjsc z tych danych po ich 'rozszyfrowaniu').

0

przesyłane znaki nie są kodowane, pomiary zaczynają się (w zależności od wartości czasem znakiem "-") po znaku jest liczba zmiennoprzecinkowa, 3 spacje i kolejna wartość zmiennoprzecinkowa, 3 spacje i kolejna wartość zmiennoprzecinkowa, po takim ciągu jest znak 0x0D i znak 0x0A (powrotu karetki i przejścia do nowej linii), wygląda to mnie więcej tak:

0x2D 0x32 0x33 0x2E 0x33 0x34 0x20 0x20 0x20 0x32 0x33 0x2E 0x33 0x34 0x20 0x20 0x20 0x2D 0x32 0x33 0x2E 0x33 0x34 0x0D 0x0A

także dane te są całkowicie jawne i jasne, problem polega na tym jak je przechwycić programem nr1 podczas, gdy z portem COM jest połączony program nr 2.

1 użytkowników online, w tym zalogowanych: 0, gości: 1