Udawanie portu szeregowego RS232

84

Rozwijam projekt, który ma wiele czujników sprzętowych łączących się z maszyną wdrożeniową przez porty szeregowe RS232.

Ale ... rozwijam się na komputerze bez fizycznych portów szeregowych RS232, ale chciałbym tworzyć fałszywe porty szeregowe, do których mogę się podłączyć i wyprowadzać dane w celu fałszowania danych wejściowych z czujników sprzętowych.

Czy ktoś zna sposób na stworzenie fałszywego portu szeregowego i sterowanie nim w systemie Windows XP?

Słuszne twierdzenie
źródło
2
Czy wypróbowałeś maszyny wirtualne z zainstalowanymi portami szeregowymi?
Restuta
4
Nie próbowałem tego. Wygląda na to, że musi to być pełna odpowiedź, a nie komentarz :)
BefittingTheorem
1
Udało mi się bez problemu korzystać z com0com i emulatora portu szeregowego Com na Windows 7 64-bit, działało świetnie.
JWiley
dla tych, którzy kończą tutaj, napisałem krótką instrukcję dla com0com tutaj
Foad

Odpowiedzi:

69

Jeśli tworzysz dla systemu Windows, projekt com0com może być tym, czego szukasz.

Zapewnia pary wirtualnych portów COM, które są połączone przez połączenie nullmodem. Następnie możesz użyć ulubionej aplikacji terminalowej lub cokolwiek chcesz, aby wysłać dane do jednego portu COM i odebrać je z drugiego.

EDYTOWAĆ:

Jak zauważył Thomas , w projekcie brakuje podpisanego sterownika, co jest szczególnie problematyczne w niektórych wersjach systemu Windows (np. Windows 7 x64).

Istnieje kilka nieoficjalnych wersji com0com , które zawierają podpisany sterownik. Jedną najnowszą wersję (3.0.0.0) można pobrać np . Stąd .

Frank Bollack
źródło
4
Chociaż com0comprojekt jest doskonałym projektem open source, ponieważ powinien zainstalować sterownik urządzenia bez podpisu cyfrowego, niektóre systemy Windows sprawdzające sterownik podpisany cyfrowo nie będą działać z jego wirtualnym portem szeregowym. Po prostu chcę, żeby ludzie wiedzieli.
Tae-Sung Shin
5
@ Thomas: Przeszukanie sieci ujawnia, że ​​istnieją nieoficjalne podpisane wersje sterownika. Jedną najnowszą wersję (3.0.0.0) można pobrać stąd .
Frank Bollack,
Wielkie dzięki, zasługujesz na piwo!
Pale Ale
jak to się właściwie robi? jakie są podstawy systemu Windows?
Nacht
@Nacht Każdy sterownik robi pewną abstrakcję, nawet jeśli jest do niego prawdziwy port szeregowy "connectet". Oznacza to, że jeśli napiszesz sterownik, zauważysz, że nie musisz komunikować się z prawdziwymi rzeczami. Wtedy możesz używać bufora przesyłania, jak chcesz. W tym wirtualnym przypadku, zamiast przesyłać strumień do rzeczywisty, wysyłasz dane do innego „portu”. Ten port jest parą z pierwszym. Całość wygląda jak lustrzane odbicie strumienia danych. Mam nadzieję, że teraz jest to jasne.
MrHIDEn
63

Wiem, że to stary post, ale na wypadek, gdyby ktoś inny spotkał się z tym pytaniem, jedną dobrą opcją jest wirtualny emulator portu szeregowego (VSPE) firmy Eterlogic Zapewnia API do tworzenia wirtualnych urządzeń comport w trybie jądra, tj. Złącza, mappery, rozdzielacze itp. .
jednak , niektóre z reklamowanych możliwości były naprawdę nie możliwości w ogóle .

EDYCJA
Znacznie lepszy wybór , Eltima . Ten produkt jest w pełni wypieczony. Dobre wsparcie techniczne dla programistów. Produkt zrobił wszystko, co chciał. Opcje produktów obejmują zarówno aplikacje komputerowe, jak i zestawy programistyczne z interfejsami API.

Żaden z tych produktów nie jest open source ani darmowy. Jednak, jak wskazały inne posty, istnieją inne opcje. Oto lista różnych narzędzi szeregowych:

com0com (current)
com0com - With Signed Driver (old version)
Kolejne miejsce dla com0com with Signed Driver (Pete's Blog)
Tactical Software
Termite
COM Port Serial Emulator
Kermit (przestarzałe, ale nadal do pobrania) Oprogramowanie
HWVSP3
HHD (edycja bezpłatna)

ryyker
źródło
35

Używam com0com - With Signed Driver , na Windows 7 x64 do emulacji COM3 I COM4 jako pary.

Następnie używam emulatora COM Dataport do odbioru z COM4.

Następnie otwieram COM3 za pomocą aplikacji im Developping (C #) i wysyłam dane do COM3.

Dane przesyłane przez COM3 są odbierane przez COM4 i wyświetlane przez „emulator COM Dataport”, który może również odesłać odpowiedź (nie jest to automatyczne).

Dzięki tym 2 świetnym programom udało mi się emulować komunikację szeregową RS-232.

Mam nadzieję, że to pomoże.

Oba programy są darmowe !!!!!

Jhollman Cutcsa
źródło
1
Fantastyczny. To mi na pewno pomogło. Czy znasz sposób, w jaki mogę sprawić, aby Emulator danych portu COM czekał na moje dane wejściowe, a następnie odesłał je?
bunggo
4

Zawsze jest trasa sprzętowa. Kup dwa konwertery USB na szeregowe i podłącz je przez modem NULL.

Porady dla profesjonalistów: 1) Windows może przypisać nowe porty COM do adapterów po każdym uśpieniu lub ponownym uruchomieniu urządzenia. 2) Liderami na rynku chipów do połączenia szeregowego USB są Prolific i FTDI. Obie firmy walczą z podróbkami i mogą zostać zablokowane w przyszłych oficjalnych sterownikach systemu Windows. Jednak sterowniki Linuksa działają dobrze z klonami.

Bryce
źródło
3
Zauważ, że adaptery szeregowe USB mają inne zachowanie taktowania / grupowania niż tradycyjne UART. Jednak testowanie z jednym nie jest złym pomysłem, jeśli istnieje jakakolwiek szansa, że ​​kiedykolwiek zostanie użyty. Kiedy po raz pierwszy stały się popularne, źle zaprojektowane lub zaimplementowane protokoły czasami łamały się lub spowalniały do ​​indeksowania, gdy były używane z jednym. Obecnie jest mniej prawdopodobne, że coś wydostanie się z drzwi bez wypróbowania przy opracowywanym UART podłączonym przez USB; rzeczywiście próbowanie na tradycyjnym UART na komputerze PC jest teraz mało prawdopodobne.
Chris Stratton,
3

Inna alternatywa, mimo że PO o to nie prosił:

Istnieją adaptery USB na port szeregowy. W zależności od typu adaptera może być również potrzebny kabel nullmodem.

Są niezwykle łatwe w użyciu pod Linuksem, działają też pod Windows, jeśli masz zainstalowane działające sterowniki.

W ten sposób możesz pracować bezpośrednio z czujnikami i nie musisz próbować emulować danych. W ten sposób może nawet oszczędzisz sobie budowania anemicznego systemu. (Ze względu na to, że emulowane dane wejściowe nie obejmują wszystkich przypadków, co prowadzi do kruchego systemu).

Często lepiej jest pracować z prawdziwymi rzeczami.

sjas
źródło
Czy można mieć nazwę dla programowego adaptera USB na port szeregowy? :) Dzięki
alcor
1
screen /dev/ttyUSB0 9600lub użyj, minicomjeśli potrzebujesz oprogramowania do takiego sprzętu.
sjas
1

Użyłem wirtualnego portu szeregowego eltima do debugowania aplikacji Modbus. jest to naprawdę bardzo dobra aplikacja na etapie rozwoju do sprawdzania programu portu szeregowego bez podłączania sprzętu.

Nileshkumar koladiya
źródło