Drukarki na USB w C# - co pewien czas zanika komunikacja

0

Witam.
Mam pewien problem z wydrukami poprzez port USB na drukarkach. Wygląda to tak, że co jakiś czas drukarka przestaje odpowiadać na wysyłane komunikaty. Mam aplikację napisaną w C# .NET 4.0 i uruchamianą na Windowsach 7 i 10.
Czy ktoś może spotkał się z takim problemem?

0

Jest to "normalna" drukarka, drukarka etykietowa ZPL, EPL, emulacja RS232? Fiskalna? Cokolwiek więcej napisz ;) Może to drukarka na baterie i po jakimś czasie przechodzi w stan uśpienia, a nie sprawdzasz czy połączenie nadal aktywne?

0

W moim przypadku jest to drukarka fiskalna, która nie przechodzi w stan uśpienia (cały czas podłączona do sieci plus wbudowana bateria). Zwłaszcza że wspomniany efekt otrzymuje w różnych momentach wydruku. Wyłączyłem już usypianie portów USB w opcjach zasilania. Ale to nic nie pomogło.

A i podłączona poprzez usb z emulacją portu COM.

0

Czyli szeregowa komunikacja rs232. Posnet, elzab, datecs? No i jakim protokołem komunikacja idzie. Masz do tego liba czy sam ramki składasz i ślesz. Napisałem trochę softu do takich drukarek ale kuli szklanej nie mam.

0

Drukarki Posnet HD i XL po nowym protokole POSNET. Zarówno jak sam wysyłam ramki do portu com (poprzez obiekt SerialPort) jak i gdy używam biblioteki Posnetowej efekt jest taki sam. Co jakiś czas drukarka przestaje odpowiadać na wysłane zapytanie. Gdy wysyłam sam ramki to w tym momencie próbuję odczytać jej stan ale i na te zapytania nie dostaję odpowiedzi. Gdy drukarkę podłączam poprzez kabel COM nawet z przejściówką do tego samego portu USB to nie ma tego efektu.

0

Pokaz kod nadający, oczekujący na zakończenie requesta, sprawdzenie połączenia. Btw - masz apke demo od Posnetu? Wystaw nią kilka paragonów i sprawdź czy jest taki efekt. Btw ich linka zapisuje w logu błędy -co tam masz?

0

Btw - patrząc na drukarkę od złączy - to ka zawsze robiłem ma porcie com1(rj45) i do kompa przes przejściówkę do usb albo po ethernecie. Musisz mieć to w trybie usb? Jeśli tak to pokaz kod inicjujacy luba - tak musisz podać ze to usb.

0

Ja po prostu wysyłam komendę z opisu protokołu i nasłuchuję na porcie odpowiedzi drukarki. Jeżeli nie mam przez zadany czas odpowiedzi to wysyłam komendę "!sprn", która miała działać w każdym trybie drukarki. I też nasłuchuję odpowiedzi ale nic nie wraca.
Mam aplikację testową Posnetu ale zachowuje się identycznie. Po którejś komendzie potrafi zwrócić "timeout'a" a próba odczytu statusu z drukarki zwraca błąd "operacja w toku". Wysyłałem nawet logi do helpdesku Posnetu ale oni stwierdzili, że to musi być problem portu USB albo kable USB. Czasami wymiana kabla rzeczywiście pomaga ale nie zawsze.
Do tej pory zazwyczaj drukarki były podłączane przez port COM ale od pewnego czasu w komputerach stacjonarnych nie dodają portu RS232 a tylko same usb. A za przejściówkę nie każdy chce dopłacać.

0

I co robisz, żeby to naprawić? Reset drukarki albo kompa? Samo przechodzi po jakimś czasie?

0

Reset drukarki albo kompa. Pomaga też odpięcię kabla USB od kompa i wpięcie go z powrotem.

0

Czy testowałeś to na innych komputerach i/lub innych drukarkach? Bo trzeba najpierw sprawdzić/wykluczyć, czy nie ma to związku z jednym "wadliwym" kompem, albo jakimś egzemplarzem drukarka z fochami ;)

Czy dzieje się to po jakimś czasie bezczynności, czy nagle podczas pracy BUM i komunikacja zanika? Bo może nie tyle wina jest po stronie komputera, co gdzieś w ustawieniach drukarki masz wskazane, że po X minutach ma przejść w stan uśpienia (wiem, pisałeś wcześniej, że nie - ale może być kilka opcji mających związek z tematem). Czy ten sam problem występuje podczas korzystania z oryginalnego softu serwisowego dostarczonego przez producenta urządzenia? Sam miałem kiedyś podobny problem, tylko to było pewien czas temu i za cholerę nie mogę sobie przypomnieć, o co tam chodziło. W pewnych momentach drukarka "zamarzała" i trzeba było zrobić reset. Z jakiegoś powodu otrzymywała jakieś dziwne polecenie, które ją blokowało. Pogadam z kumplem i zobaczę, czy on coś w temacie kojarzy.

A odnośnie fragmentu

A za przejściówkę nie każdy chce dopłacać

Sorry, ale nikt sobie prywatnie do domu nie kupuje takich rzeczy. Jeśli firma chce to mieć działające, to nie ma że "nie chce dopłacać" - Ty, jako fachowiec, mówisz, że to jest niezbędne, a jak nie chcą się zgodzić, to niech sobie szukają jakiegoś kowala, który im to ogarnie, a nie że zawracają głowę informatykowi i mówią mu, jak ma wykonywać swoją pracę...

0

Problem polega na tym, że nie mogę przetestować urządzenia na którym pojawia się problem, gdyż jest zafiskalizowane. Testowałem komputer do którego była podłączona drukarka na innej, takiej samej drukarce i problem nie występował.
W warunkach labolatoryjnych udało mi się wywołać taki sam efekt gdy podłączyłem drukarkę przez długi kabel USB do portu umieszczonego z przodu kompa. Wtedy zarówno moja aplikacja jak i aplikacja testowa producenta zachowywały się identycznie. Traciły połączenie w momencie wydruku (po 1 lub drugiej linii).
U klienta efekt taki występuje właśnie podczas wzmożonego ruchu. Czyli teoria o usypianiu drukarki niestety pada.
Podczas dyskusji w formie padła też sugestia że może drukarka dostaje jakieś znaki, które ją zawieszają, ale czemu to występuje stochastycznie bez żadnej zależności? Poza tym ten sam kod wysyłany przez kabel COM nie daje takiego błędu.
A co do fragmentu "A za przejściówkę nie każdy chce dopłacać" to niestety gastronomia jest specyficznym rodzajem działalności, w której klienci potrafią kłócić się 5 zł :).

1

Miałem podobnie z aplikacją w srodowisku produkcyjnym, gdzie płytka arduino wysyłała sygnal do komputera. Przedluzacz zamowilem z allegro, najtanszy, chyba 15 metrowy. Po nieokreslonym czasie płytka przestawala wysylac sygnal. Jesli w poblizu nie idą żadne kable napieciowe, problemem moga byc szumy ktore na dluzszym odcinku są bardzo prawdopodobne. Pomysl nad wzmocnieniem sygnalu, np. hub aktywny.

Pzdr

1

Albo w ogóle wywal USB i skorzystaj z takiego rozwiązania - http://www.mikel.com.pl/konwerter-lan.html. Może wygląda śmiesznie, ale trzeba wspierać polski przemysł ;) Mówiąc poważnie - używam kilku sztuk w firmie od paru lat i działa super.

Opis działania:
podpinasz to ustrojstwo do LAN, konfigurujesz parametry połączenia (bity stopu, parzystość, adres IP itp.), a potem podczepiasz zwykłym kablem do portu RS drukarki. Na komputerach instalujesz oprogramowanie (sprawa dość trywialna, aczkolwiek ma tendencję do wychrzaniania się po niektórych większych update'ach Win10) i w systemie pojawia się nowy port COM. Działasz z nim dokładnie tak samo, jakby był fizycznym COM'em na płycie. Dane do niego wysyłane wędrują przez LAN do podanego przeze mnie urządzenia, które je "przerabia" na RS i tym kablem wypycha do drukarki. Oczywiście - komunikacja jest dwustronna, jeśli drukarka coś zwróci, to odpowiedź trafia do kompa, który nawiązał komunikację.
Używamy tego, żeby dało się dzielić jedną drukarkę fiskalną między kilka komputerów. W przypadku podpięcia bezpośrednio przez COM raczej takiej możliwości by nie było.
Jak pisałem wyżej - takie rozwiązanie działa już u mnie kilka lat i nie ma z tym problemów (poza wspomnianymi aktualizacjami Win10, ale w takiej sytuacji wystarczy przeinstalować sterowniki, co trwa dosłownie 3 minuty).

0

Jednym z moich pomysłów na przyczynę takich efektów były zakłócenia od innych urządzeń, których w gastronomii nie brak. Dlatego wymieniałem już kable na krótkie (1,8 m) dobrej jakości a fiskalna stoi zazwyczaj tuż obok komputera. Nie przynosiło to żadnych efektów.
Czy przyczyną może być rodzaj portu USB (2.0 - 3.0) pod które podłączone jest urządzenie? Może sterownik drukarki nie obsługuje poprawnie niektórych rodzajów portów?

0
cerrato napisał(a):

Albo w ogóle wywal USB i skorzystaj z takiego rozwiązania - http://www.mikel.com.pl/konwerter-lan.html. Może wygląda śmiesznie, ale trzeba wspierać polski przemysł ;) Mówiąc poważnie - używam kilku sztuk w firmie od paru lat i działa super.

To albo cos z zewnetrznym źrodłem zasilania. np:
https://allegro.pl/oferta/hub-usb-3-0-aktywny-rozdzielacz-4-porty-zasilacz-6706503880

0

@WojtexProgramista: nie sądzę, żeby standard USB miał tutaj znaczenie. One się różnią głównie prędkością przesyłu, ale komunikacja z drukarką praktycznie w ogóle nie jest transferożerna, więc nie szedłbym w tym kierunku. A jeśli rzeczywiście coś sieje, to zakłócać będzie każdą transmisję po USB, niezależnie od standardu.

@Kespa: to też jest jakaś opcja, ale ja bym się w ogóle kierował w stronę wywalenia USB.

0

Czyli jednak stawiacie na wywalenie USB. Ale przecież porty COM powoli wychodzą z użycia a standardem staje się USB. Jeżeli producenci drukarek przestaną montować wyjście COM w drukarkach to będzie problem. Poza tym jeżeli podłączę drukarkę poprzez kabel COM z przejściówką do tego samego portu USB to problem znika. Czyli wychodzi z tego że problemem jest kabel USB a nie port w komputerze? Czy te kable są jakiejś gorszej jakości niż kable COM? Czy są gorzej ekranowane?

0

Chwila.. to nie zacząłeś od wymiany kabla na inny? To jest taka podstawa, od której się powinno zacząć :P

Sam dobre kilka lat temu dostałem od pewnej znajomej firmy urządzenie wielofunkcyjne. Normalnie się opiekowałem tą firmą, ale tak się złożyło, że mnie nie było, a akurat mieli awarię drukarki. Wezwali "najwyższej klasy fachowców", którzy stwierdzili, że drukarka jest zupełnie padnięta, nie ma sensu naprawiać, wcisnęli im nową. A ja, że lubię zbierać rzeczy, które się mogą kiedyś przydać, to wziąłem starą i martwą od nich na części. I o dziwo - drukarka byłą OK, do dzisiaj mam ją w domu i używam (pancerny model HP LaserJet 3055, sprzęt nie do zajechania).

Okazało się, że kabel USB był uszkodzony, ale nie tak jednoznacznie, że w ogóle nie działał, tylko czasami robił coś dziwnego, w efekcie czego komunikacja z drukarką padała, a ona sama głupiała i wyświetlała na ekranie jakieś błędy, które wyglądały jak śmierć elektroniki.

Zacznij od sprawdzenia i wymienienia kabli. Powinieneś był to zrobić jeszcze przed napisaniem pierwszego posta na forum :P

0

W którymś poprzednim poście pisałem, że wymieniałem również kable, jak i zmieniałem port usb do którego podpięta byłą drukarka. I nie zawsze miałem spodziewany efekt.
W warunkach labolatoryjnych gdy miałem długi kabel USB wymiana go na "dobry" kabel pomogła. Ale ten sam kabel (fizycznie ta sama sztuka) poszła do klienta i tam nie rozwiązała problemu. Błąd cały czas się pojawiał. Piszę to o warunkach labolatoryjnych w sensie na moim kompie, wokół którego nie ma raczej żadnych urządzeń zakłócających. Natomiast w lokalu gastronomicznym u klienta czort wie co tam dookoła stoi i co może zakłócać pracę.
Podsumowując stawiacie tutaj na kabel USB, który może być przez coś zakłócany?

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