2009-05-27 15 views
18

Mam do czynienia z niektórymi starszymi systemami, które używają RS232 do komunikacji z urządzeniami peryferyjnymi. Nie mam dużego doświadczenia z interfejsem COM. Mam kod, który może otwierać i używać portów COM, ale nie może otwierać portów używanych przez inne aplikacje. Muszę zaciemnić pakiety, abyśmy mogli używać tego samego protokołu do zaktualizowanej komunikacji.Słuchanie szeregowych portów COM, które są w użyciu

Czy istnieje jakiś sposób, aby przychodzące pakiety "środkowy człowiek" otworzyć na otwarty port COM i wykryć, które pakiety są wysyłane? Używam .NET, ale jestem otwarty na wszelkiego rodzaju rozwiązania.

(znalazłem this tam, ale nie sądzę, to będzie działać dla mnie.)

+1

Myślę, że aplikacja hub4com (z com0com) może rzeczywiście zrobić to, czego potrzebujesz. –

Odpowiedz

13

Użyłem com0com - to wielki konfigurowania wirtualnych portów COM - co nie pomóc w wszystko.

Interfejs portu COM to w zasadzie "odczyt pliku". Moja aplikacja zgłasza wyjątek podczas próby połączenia się z portem COM, który już ma inną instancję od niego odczytującą. Nie jestem pewien, czy można spróbować otworzyć go jako "tylko do odczytu" zamiast do odczytu i zapisu, ale warto spróbować.

Powinieneś być w stanie napisać wirtualny port COM, który rozwidla twoje dane do pliku dziennika. Com0com jest open-source, więc możesz użyć tego jako punktu wyjścia.

Innym możliwym rozwiązaniem może być pobranie rs232 splitter cable przekazuje sygnał szeregowy do innego portu szeregowego.

Albo inna możliwość to Serial Sniffer program (lub open source sniffer).

Lub spróbuj hub4com app z tej samej strony com0com!

+1

Sugerowane sniffery są w istocie tym, co już napisałem. Myślę, że wirtualizacja może być najsmaczniejszą drogą, ale podoba mi się pomysł podzielenia linii. Czy będę w stanie przechwytywać pakiety do iz urządzenia? – Daniel

+0

czy wiesz, skąd wziąć kod dla hub4com na stronie ma kod exe, ale nie widzę kodu. – baash05

+0

http://com0com.cvs.sourceforge.net/viewvc/com0com/hub4com/ Dotarliśmy poprzez: http://sourceforge.net/scm/?type=cvs&group_id=129551 – Kieveli

4

Byłem na tej samej ścieżce. Rozdzielacz sprzętowy to najprostsze rozwiązanie.

Konfiguracja hub4com obejmie kreator "Dodaj nowy sprzęt". Jeśli masz dużo maszyn, maszyn rozdzielonych geograficznie lub użytkowników, którzy nie są technicznie doświadczeni i nie posiadają wymaganych uprawnień, instalacja może być niezręczna.

Jeśli jest to starsza aplikacja, czy działa w programie ntvdm? Jeśli tak, możesz uruchomić go w wersji DosBox i zmienić kod DosBox, aby zapisać do pliku oprócz wysyłania/odbierania do/z portu szeregowego. DosBox to także platforma wieloplatformowa.

+0

Na razie wszystko, co wiem, działa w systemie Windows. Reszta to całkowicie czarna skrzynka. Niestety system jest w Polsce, a ja nie. Mój kontakt to rozsądna znajomość obsługi komputera. Jeśli rozdzielenie kabla da mi możliwość słuchania zarówno ruchu przychodzącego, jak i wychodzącego, to brzmi jak droga. – Daniel

+0

Rozdzielacz powinien być sposobem, aby przejść. W moim przypadku odrzuciłem to rozwiązanie, ponieważ mieliśmy inny projekt, w którym sprzedawca chciał również użyć splittera i nie chciałem myśleć o dwukrotnym podzieleniu go. –

10

Czy istnieje jakiś sposób, aby "middle man"

Tak, jest wiele. Zdecydowanie obsługiwany w systemie Windows dzięki koncepcji "sterownika filtru". Taki sterownik można wstawić przed sterownikiem, który otrzymuje żądania wejścia/wyjścia i widzi wszystko, co przechodzi. Zwykle ma to na celu zmianę żądań wejścia/wyjścia, ale także bardzo nadaje się do prostego monitorowania żądań. Człowiek w środku.

Kanonicznym przykładem takiego sterownika jest czcigodny SysInternals' PortMon utility. Pokazuje wszystko, co aplikacja wysyła i odbiera z portu szeregowego, w tym dane konfiguracyjne i dane. Istnieje wiele takich aplikacji, po prostu Google "sterownik portu szeregowego filtru" (ciężkie na próbki kodu źródłowego) i "monitor portu szeregowego".

Jeden z przypisów do tego, masz tendencję do problemu w 64-bitowej wersji systemu Windows. Zdecydowana większość tych aplikacji, w tym PortMon, działa tylko w wersji 32-bitowej.Wersja 64-bitowa pozwala tylko na zainstalowanie certyfikowanych sterowników, a sprzedaż tych aplikacji w bardzo niewielkim stopniu uzasadnia wydatki. Strzeż się tego podczas zakupów.

0

Można również użyć TCPcom do konwersji danych na pakiety Ethernet i monitorowania go za pomocą Wireshark - a także nadawać go w innym miejscu. Następnie możesz użyć innego wystąpienia TCPcom, aby przekazać je do dowolnego portu, który ci się podoba - w tym wirtualnego portu COM. Teraz zasadniczo przejąłeś dane przez Ethernet. https://sourceforge.net/projects/combytcp/?source=directory

Powiązane problemy