Próbuję uzyskać IEEE-1284 kabel USB-Parallel który pokazał jak USB Printing Support
się Device manager
do pracy jako port LPT i próbował odpowiedź tutaj . Używając tego polecenia:
NET USE LPT1: \\[Computer-Name]\Printer /PERSISTENT:YES
Polecenie wykonuje się pomyślnie, ale nie widzę LPT1 w Urządzeniach sprzętowych, aby uzyskać adres do zapisu. Znam port, który tworzę wyjścia, ponieważ stworzyłem aplikację Java, która wyświetla porty szeregowe i równoległe przy użyciu biblioteki RXTX, oto wyjście:
Dodałem wszystkie porty LPT za pomocą NET
polecenia, ponieważ mój komputer nie ma żadnego. Ale nie widzę ich nigdzie, aby uzyskać adres, a biblioteka RXTX lib nie pozwala mi uzyskać adresu portu AFAIK. Jakieś pomysły, jak uzyskać dostęp do portów?
EDYTOWAĆ:
Ok, aby trochę wyjaśnić, mam USB-do-równoległego IEEE-1284, po podłączeniu do komputera z Windows XP jest on pokazany jako USB Printing Support
urządzenie, więc nie pojawia się jako port LPT, ponieważ jest przeznaczony do pracować z drukarkami.
Stworzyłem drukarkę ze sterownikiem Generic / Text i podłączyłem ją do USB001
portu, ponieważ jest to port kabla USB. Następnie udostępniam drukarkę i tworzę LPT
port za pomocą NET
polecenia. Teraz chcę zapisać dane do tego portu LPT, tak jak zrobiłbym to z każdym innym rodzimym portem LPT, używając na przykład InpOut32.dll .
Jeśli w ten sposób nie można uzyskać dostępu do portu, w jaki sposób mogę uzyskać dostęp do portu w celu zapisu / odczytu surowych danych? Nie drukować dokumentu, ale zapisywać / odczytywać surowe dane, tak jak w przypadku każdego portu równoległego.
public static final String PARALLEL_PORT = "LPT1";
jak pokazano na przykładzie kodu komunikacji równoległej ?Odpowiedzi:
Dobrze. Podłączono więc urządzenie / drukarkę równoległą za pomocą „USB-do-równoległego IEEE-1284” - do portu USB komputera. Teraz musisz się z nim bezpośrednio komunikować. Rozumiem, że nie można bezpośrednio zmienić oprogramowania, aby komunikować się z nowoczesnymi portami, takimi
USB001
jak sterowniki skanerów. A oprogramowanie, które masz, musi komunikować się normalnym protokołem dla starych portów LPTx (np. 0x378 zamiast LPT1 itp.)Pozostawia ci to jedną opcję, a mianowicie „emulację”. Powinno to być zrobione przez sterownik dostarczony z kablem „USB-na-równoległy IEEE-1284”. Ten sterownik powinien tworzyć port LPTx i przechwytywać komunikację z portem itp. Jednak większość (jeśli nie wszystkie) z tych adapterów ma sterowniki emulujące drukarkę USB. W większości przypadków jest to najłatwiejsze (a nawet w przypadku starych programów DOS można to rozwiązać
NET
poleceniem), ale jeśli chodzi o prawdziwą komunikację z portem, jest to bezużyteczne.Więc musisz znaleźć program, który może emulować LPTx (i jego porty) i komunikować się dwukierunkowo ze (dowolnym) sterownikiem USB na twoim komputerze. Nie znalazłem (jeszcze).
Jedyne, co znalazłem, to ten konwerter z USB na równoległy . Ten emuluje LPTx i porty i komunikuje się bezpośrednio z adapterem. Sam tego nie testowałem, ale strona informacyjna wygląda obiecująco. Z pliku pomocy:
The USB2LPT device and its driver enables redirecting of port access by random application software to a USB-attached parallel port, i.e. emulating a parallel port via USB. This unique solution works on all USB supporting Windows operating systems.
Określa swój własny sterownik jako „Sterownik niestabilny”, ale otrzymasz pomysł na to, czego szukasz. Potrzebuje również specjalnego adaptera USB2LPT. Na stronie faq :
Wymienia się również jako minus dla siebie
Reduced speed due to emulation (expect 10..100 times slower)
. Ale pozwoli to na komunikacjęBase address same as built-in (378h, 278h)
. Jeśli chcesz, możesz zrobić swój własny adapter. Schematy są na stronie. Tutaj znajdziesz kompletne instrukcje (w tym filmy) dotyczące sposobu ich tworzenia. Albo możesz wysłać do niego pocztą, aby dowiedzieć się, jak go zdobyć.źródło
Myślę, że możesz się tak mylić. Nie należy używać „USE NET”, ale raczej użyć sterownika oprogramowania adaptera, aby skojarzyć wirtualny port drukarki z portem USB. Rik opublikował zrzut ekranu, jak to działa. Tylko wtedy, gdy oprogramowanie adaptera na to zezwala, powinno być możliwe pisanie tak, jakby istniał ten fizyczny port.
Polecenie NET USE LPT1, które pokazałeś, służy do łączenia się z drukarką na własnym lub innym komputerze i ustawiania tej drukarki jako lokalnej (LPT1) drukarki. Opiera się na drukowaniu na nazwę urządzenia LPT1, a następnie przekierowywaniu tego, o którym mówiłeś, że oprogramowanie nie będzie działać (wymaga portu sprzętowego).
Oto sterownik z firmy Startech, który tworzy niektóre z tych kabli, ale nie wiem, czy to zadziała dla Ciebie; działa z niektórymi innymi modelami (włączając te, które posiadałem): http://sgcdn.startech.com/005329/media/sets/ASIX_MosChip-MCS7715_Drivers/ASIX_MCS7715.zip
W międzyczasie pozbyć się tego polecenia NET USE; to naprawdę nie pomaga w tej chwili, a gdybyś mógł go w ogóle uruchomić z drukarką lokalną, nadal wymagałbyś, abyś pisał do urządzenia LPT1 (nie do lokalizacji sprzętu, w której by się znajdował, gdyby tylko istniała). )
źródło
Będziesz potrzebował .NET-Framework i PowerShell, ale dzięki temu skryptowi możesz uzyskać dostęp do listy dowolnych równoległych portów zainstalowanych w twoim systemie. (+ Dodatkowe informacje)
Źródło: Technet-Microsoft
źródło
(Przepisałem poprzednią odpowiedź, która nie pasowała do Twojej sprawy).
Kabel jest najwyraźniej rozpoznawany przez system Windows, ale sterownik powinien był wykonać bardziej obszerną emulację, aby był dostępny bezpośrednio do pisania.
Zmusza to do wymyślenia własnego urządzenia, w tym przypadku drukarki ogólnej. Jest całkiem możliwe, że ta drukarka jest bezużyteczna, ponieważ wysyła kody sterujące przez kabel, do którego jakiekolwiek urządzenie jest podłączone po drugiej stronie, nie wie, jak odpowiedzieć. Kabel drukarki może w tym przypadku nie być najlepszym sposobem podłączenia urządzeń.
Najlepszą rzeczą, jaką mogę znaleźć, jest artykuł Uzyskanie uchwytu na usbprint.sys, w którym opracowano program C do bezpośredniego zapisu danych do drukarki przez pominięcie sterownika druku. Możesz użyć tego prostego programu jako szablonu do opracowania własnego programu do zapisywania danych na kablu.
Aby program działał, należy znaleźć identyfikator GUID interfejsu w systemie Windows kabla, zakładając, że kabel ma dostępny GUID interfejsu. Musisz przeszukać rejestr przy użyciu regedit lub szybszego RegScanner .
źródło