Symulacja interfejsu szeregowego typu RS dla dwóch programów

Czy istnieje możliwość aby na jednym komputerze zasymulować połączenie szeregowe tak aby można było napisać 2 programy komunikujące się właśnie przez ten port? Chcę napisać takie dwa programy ale fizycznie nie mam takiego łącza.

Nie jestem w 100% pewny bo nigdy czegoś takiego nie robiłem, ale strzelam że będziesz albo musiał sam stworzyć taki wirtualny port z wejściem i wyjściem np. piszą do tego celu osobną drugą aplikację która będzie taki wirtualny kabel obsługiwała, albo poszukać gotowej aplikacji która takową funkcję spełnia.

Nie powiem Ci jak utworzyć wirtualne urządzenie w systemie bo nigdy tego nie robiłem, ale obsługa po utworzeniu musi być zgodna ze standardem RS-232 czyli musisz dokopać się też do dokumentacji portu.
Ogólnie jest to możliwe - istnieją wirtualne kable audio dzięki czemu możesz mieć więcej wejść/wyjść audio w komputerze - przydatne gdy chcesz nagrywać dźwięk z wielu źródeł na raz przy standardowej i jednej karcie dźwiękowej, więc musisz zrobić coś analogicznego ale dla standardu RS-232.

Z innej beczki, do czego używasz RSa i czy aby na pewno nie masz innej alternatywy? Ten standard odchodzi na rzecz USB i praktycznie nie ma komputerów z tym portem.

EDIT:
Z ciekawości zacząłem googlować i szybko znalazłem: https://www.dobreprogramy.pl/Virtual-Serial-Port-Driver,Program,Windows,12528.html powodzenia :wink:

2 polubienia

Dziękuję bardzo za pomoc, zadanie polega właśnie na tym aby użyć RS.

Rozwiązanie podane przez @Fizyda jest bardzo dobre i pomysłowe, jeśli jednak byś chciał lub potrzebował fizycznego portu RS232C, to możesz wciąż kupić kartę kontrolera portów szeregowych na złączu PCI-Express (jak masz PeCeta), np. taką:
Karta 2xCOM 2xRS232 MOXA CP-102E PCI-E
Karta ta ma dwa porty RS232C, dodatkowo musisz do tego kupić kabel null-modem do zrealizowania fizycznego połączenia.portów.

1 polubienie

Wydaje mi się, że szukasz tego: http://com0com.sourceforge.net/

1 polubienie

Kolega @kostek135 ma racje - to jest odpowiednie narzędzie. Używam tego programu do emulowania połączeń szeregowych podczas tworzenia m.in. sterowników do drukarek fiskalnych, które właśnie się po tym porcie komunikują z komputerami czy terminalami POS.

Nie jest też prawdą, że RS odchodzi. USB jest zbyt skomplikowane, wraz ze swoim pakietowaniem, uściskami dłoni etc. Ok daje możliwości jak np. emulowanie “równoległego” połączenia, ale narzut tego wszystkiego często jest zbędny podczas pisania prostych protokołów, więc nawet jak nie ma w komputerze łącza RS232 to kable USB mają przejściówkę FT232 i w systemie urządzenie takie jest widziane jako zwykłe urządzenie szeregowe. Cały czas powstają nowe urządzenia w ten sposób. Tak działają drukarki fiskalne Posnet, drukarki termiczne Datecs, terminale kart płatniczych FirstData oraz drukarki etykietowe Zebra oraz wiele innych.

Jeśli chodzi o protokół to ramka RS232 jest strasznie prosta. Na poziomie fizycznym masz bit startu, dane , bit parzystości oraz bit stopu. Jakbyś pisał obsługę tego na bardzo niskim poziomie jak np. w AVR C gdzie mamy układ UART w Atmedze 8 lub sprzętowy sterownik RS232 w VHDL to trzeba by się wgryzać w dokumentacje. W przypadku Windowsa tak jak w innych POSIXowych systemach wszystko jest plikiem, więc port 232 też nim jest. Wystarczy otworzyć plik do pisania/odczytu z odpowiednimi parametrami i zachowywać się jakby to był zwykły plik czyli czytac z niego i pisać, a system operacyjny zajmie się szczegółami. Zaglądając do źródeł to MS ma fajne materiały:
https://msdn.microsoft.com/pl-pl/library/windows/desktop/aa363201(v=vs.85).aspx
oraz opis struktury konfiguracyjnej: https://msdn.microsoft.com/pl-pl/library/windows/desktop/aa363214(v=vs.85).aspx. Można zawsze użyć jakiejś biblioteki, ale nie wiem czy o to chodzi w zadaniu :wink: