Nowe posty

Autor Wątek: Problem z przypisaniem portu com1 do przejściówki z USB na RS232  (Przeczytany 8127 razy)

yatseq

  • Gość
Od kilku dni próbuję uruchomić kasę fiskalną pod linuksem, a konkretnie programik CRK wykonywany przez Wine. Udało mi się uruchomić port ttyUSB0, który przypisałem do com1. W katalogu użytkownika liinux mam plik o nazwie com1 i w katalogu ~/.wine/dosdevices. Kiedy uruchomię CRK i ustawię port com1 a następnie sprawdzam połączenie, to nie wyrzuca błędu braku portu, wyświetla ekranik z napisem "połączony...", podświetla się ekran drukarki, ale po chwili wyskakuje w okienku błąd.

Próbowałem zainstalowac sterowniki windowsowe przez wine i nieby instalacja przeszła. Niby wyrzuca mi po dmesg | grep ttyUSB0

[58281.431286] usb 3-1: pl2303 converter now attached to ttyUSB0

dla setserial -g otrzymuję

com1, UART: 16654, Port: 0x0000, IRQ: 0

Czy IRQ i Port nie powinny mieć przypisanych jakichś wartości?

Jeśli połączę się z drukarką przez putty mogę wklepywać cyfry, które wyświetlają się na ekranie drukarki.

Proszę o pomoc, bo jestem kompletnie zielony jeśli chodzi o linuksa i nie jestem w stanie wyszukać już niczego w internecie, co rzuciłoby nowe światło na problem, a mam wrażenie, że jestem już bardzo bliziutko "ostatecznego rozwiązania kwestii drukarki fiskalnej".

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2949
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Problem z przypisaniem portu com1 do przejściówki z USB na RS232
« Odpowiedź #1 dnia: 2015-02-01, 15:49:48 »
Cytuj
wyskakuje w okienku błąd.
Może się czepiam, ale treść tego błędu mogłaby być pomocna?

1 Co do zerowych Port i IRQ - a jakie według ciebie powinny być te wartości dla wirtualnego portu szeregowego?

2 Sterowniki windowsowe nie zadziałają pod Wine, bo Wine nie ma dostępu do sprzętu i korzysta ze sterowników Linuksowych (a te działają - bo bez tego nie byłoby ttyUSB0).

3 Czy jak (jako administrator) zrobisz chmod a+rw /dev/ttyUSB0, to czy zachowanie drukarki się zmienia?

4 Łączysz się przez:
 * Putty na windowsie
 * Putty windowsowe na Wine na linuksie
 * Putty linuksowe na linuksie
że działa?
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

płona

  • Gość
Problem z przypisaniem portu com1 do przejściówki z USB na RS232
« Odpowiedź #2 dnia: 2015-02-01, 17:08:05 »
@yatseq, @pkraszewski
Pewnie wiesz, ale "drukarka fiskalna" to nazwa potoczna w rzeczywistości maszyna komunikuje się z modułem fiskalnym, który ma własny protokół komunikacji (przepływ danych - najczęściej xon/xoff , czasem cts/rts a są nawet takie, gdzie "konstruktorzy" wymyślili własny - np. FP600 Elzabu).
Jeśli yatseq wpisuje coś z terminala, co mu się wyświetla na drukarce, to jeszcze nic nie znaczy, bo komunikacja jest jednostronna, natomiast program obsługujący moduł fiskalny musi czytać odpowiedzi modułu (np. brak papieru, przepełnienie pamięci fiskalnej, tzw. "zablokowanie" towaru w module i wiele innych).
Walczyłem kilkanaście lat temu z FP 600 (wpierw z SCO, potem z RedHeat-em - z sukcesem ;-) ), ale trzeba było napisać własny soft do obsługi. Były dwa warianty - jeden obsługiwał drukarkę w programie, którego byłem współautorem, tam nie było problemu - drugi umożliwiał obsługę drukarki z programu, do którego nie było źródeł, ale było to jeszcze w czasach lpr i całość załatwiał if (drukarka była kolejką wydruku). Z CUPS będzie trudniej. Mam jeszcze źródła, jeśli trzeba mogę podesłać, ale to ani małe, ani proste.

yatseq
Blado to widzę spod wine, ale możesz spróbować paru rzeczy:
1. Nadaj uprawnienia do urządzenia tak, jak napisał pkraszewski
2. Być może w samym CRK jest opcja, z którym COM-em ma gadać drukarka - wtedy w katalogu .wine/dosdevices właściwy COM musisz podlinkować do /dev/ttyUSB# tam, gdzie jest podłączona drukarka:
http://www.linuxforums.org/forum/wine/94500-serial-ports-wine.html
3. Parametry transmisji - dokumentacja do drukarki. Najczęściej drukarki używają: 8bit/parzystość/brak bitu stop. To się ustawia komendą setserial, ale nie pamiętam dokładnie jak - musisz przeczytać w manualu. Jeśli flow control jest xon/xoff, to IRQ nie ma znaczenia (via usb chyba się nie da inaczej (?)), jeśli cts/rts - to pod wine raczej tego nie rozwiążesz. Uprawnienia do /dev/ttyUSB# i ustawione parametry transmisji prawdopodobnie będą działały do pierwszego reboot-u, więc wpisz sobie ich ustawianie do /etc/rc.local czy tam, gdzie u Ciebie się własne skrypty uruchomieniowe odpalają.

No i na koniec: "Może się czepiam, ale treść tego błędu mogłaby być pomocna?" Wklej opis błędu i napisz co to za drukarka (firma/model).

Na pocieszenie nikły promyk nadziei w tunelu. Najczęściej oprogramowanie do drukarki fiskalnej pod windows instaluje obsługę wirualnego COM <-> USB, a "właściwy" program do obsługi drukarki gada z tym COM-em 5 .. 8 tak, jakby drukarka była podłączona do rzeczywistego portu szeregowego. W linuksie masz to "dane od Torvadlsa", więc jest mała szansa, że będzie działać.

Do "ostatecznego rozwiązania kwestii drukarki fiskalnej" masz jeszcze spory kawałek, ale jak Ci się uda, to się wiele nauczysz.

yatseq

  • Gość
Problem z przypisaniem portu com1 do przejściówki z USB na RS232
« Odpowiedź #3 dnia: 2015-02-01, 21:39:14 »
Mam linux mint rebecca 17.1 zdaje się.

Drukarka to właściwie nie drukarka, tylko kasa fiskalna (kolega pisał o różnych błedach to się zreflektowałem - kody błędów miewam tylko na ekraniku kasy) Farex Szafir (najtańsza jaką znalazłem, jak zakładałem firmę). Można do niej wklepywać kody ręcznie z klawiatury drukarki, albo przez windowsowy programik CRK.exe, który ma możliwość ustawienia portu COM0-COM10 do komunikacji.

Myślałem o zakupie samej drukarki, ale wówczas musiałbym mieć program, który by to ogarniał, a tak wystarczył mi prosty CRK do masowego wklepywania nowych towarów.

Putty linux-owe.

Ustawienia w CRK odpalanym pod Wine to prędkość (9600 można przestawić), stopbit (1-bez możliwości zmiany), parzystość (none - bez możliwości zmiany), port (do wyboru none czyli com0 do com10).

Atrbuty plikom nadawałem z poziomu interfejsu graficznego, ale wklepałem tę linijkę chmod przez terminal z sudo, bo nie chciał przyąć "gołego".

Kod błędu? "Po3ączono... Error!"

Przy wyborze innych com, niż com1 mam błąd nieistniejącego portu, więc myślałem, że powiązanie przez ln... działa.

Myślałem, że przez Wine można wrzucić sterowniki windowsowskie, bo widziałem takie wątki gdzieś od wuja google'a, ale nie liczyłem na to, że szczeŋólnie pomoże - dzięki za wyjaśnienie.

Wiem, że wbudowane porty Com mają swoje porty typu 0x3f8 czy jakoś, więc 0x0000 wydawało mi się podejrzane (nieprawidłowa konfiguracja), ale możliwe, że tak miało być, więc się przy tym nie upieram.

Szczerze mówiąc liczyłem, że pominąłem jakiś krok przy instalowaniu sterów do tego konwertera RS232-USB, tworzeniu ttyUSB0 podpinaniu go pod com1, ale wychodzi na to, że niewiele więcej da się zrobić bez poświęcania pół roku na rozwiązanie problemu...

Jest rozwiązanie "na teraz", poproszę kuzynka, żeby wpadł jutro z windozą, bo mam około 100 produktów do wklepania na kasę, a potem przy okazji będę wklepywał ręcznie przez kasę...

Szkoda, bo na tej Rebecce mi właściwie wszystko elegancko hula (na 2 laptopie nie udało mi się uruchomić wifi, ale jest podpięty po kablu) tam też miałem jakieś inne problemy z tworzeniem tego portu stąd moje przeświadczenie, że skoro na tym drugim udało mi się już wysyłać jakieś znaki na drukarkę, to lada moment będę mógł pobrać aktualne kody z kasy do CRK i wklepać nowe w wolne miejsca.

setserial nie ogarnąłem, nie potrafię wklepać tam parametrów żadnych, ale możliwe, że to dlatego, że przy tym sprzęcie ten port i irq tak mają być i już.

Nie mam ambicji być lordem linuksa, ale cieszyłem się, że udało mi się odpalić etykieciarkę termiczną, bo myślałem, że nie dam rady. Szkoda, że przy tej kasie fiskalnej "poległem".

Dziękuję za wskazówki i pozdrawiam, Jacek

yatseq

  • Gość
Problem z przypisaniem portu com1 do przejściówki z USB na RS232
« Odpowiedź #4 dnia: 2015-02-09, 17:12:23 »
Wracam z aktualizacją ;)

Jak próbowaliśmy przez Win Vista, to niby grało, po kilku chaotycznych próbach ze sterami (był wykrzyknik w menadżerze urządzeń, ale jakoś udało się nadpisać), nawet pobierał dane o kodach itp. do programu, ale przy próbie wysłania danych na kasę wywalało jakiś dziwny błąd (w tej chwili nieistotne). Po którejś próbie wyskoczył blue screen i skanowanie napędów po restarcie, więc kuzyn wymiękł i poszedłem po kompa żony z Win 8.1...

Tu to samo, tzn. wykrzyknik w men. urz. i totalnie byłem zdezorientowany, więc zacząłem męczyć wujka Google'a i okazało się, że to nie z kasą jest problem tylko z moją przejściówką USB-RS232, w której nie jest oryginalny chipset, więc błąd pod Windowsem (błąd 10, w różnych wątkach ludzie pisali o uszkodzonym sprzęcie), to takie zabezpieczenie w sterowniku przed piratami i wystarczyło wgrać starsze sterowniki do mojej przejściówki Prolific (3.3.coś) i poszło.

Przypuszczam, że jakbym wrzucił starsze stery w linuksie, to miałbym szanse 50/50 na to, że zadziała mi ten programik pod Wine z kasą. Jak sądzicie?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2949
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Problem z przypisaniem portu com1 do przejściówki z USB na RS232
« Odpowiedź #5 dnia: 2015-02-10, 08:51:12 »
Nie sądzimy. Linux obsługuje kilkadziesiąt chipsetów USB-RS232 (więc pewnie kilkaset różnych produktów) i albo działa albo nie.

U Ciebie problemem może być to, że program pod Wine próbuje przekonfigurować port (np zmienić bps-a), a Wine tego nie obsługuje.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy