![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 79 Pomógł: 3 Dołączył: 23.12.2008 Skąd: Piaseczno Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Czy ktoś wie jak komunikować się z drukarkami fiskalnymi POSNET Thermal za pomocą PHP z użyciem interfejsu Active-x ? Stworzyłem obszerną aplikację wspomagającą zamówienia i sprzedarz, która działa w przeglądarce, i pojawił się problem z lokalną drukarką fiskalną, którego nie mogę rozwiązać w żaden sposób... podobno można się z nią komunikować za pomocą Active-x .... ale jak? Chodzi mi tylko o wystawianie paragonów do sporządzonych przez program faktur VAT. Bardzo dziękuje z góry z pomoc Czy naprawdę nikt nie wie jak się za to brać? Dzięki z góry za pomoc! |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Czy ktoś wie jak komunikować się z drukarkami fiskalnymi POSNET Thermal za pomocą PHP z użyciem interfejsu Active-x ? Jeśli chodzi o ActiveX, to serwer MUSI działać pod kontrolą Windows (wiadomo, ale lepiej nadmienić ![]() -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 79 Pomógł: 3 Dołączył: 23.12.2008 Skąd: Piaseczno Ostrzeżenie: (0%) ![]() ![]() |
No tak :-) ale chodzi mi o drukarkę fiskalną podłączoną lokalnie.... tzn klient łączy się z serwerem (na szczęście pod Linuxem), uruchamia pod Windowsem aplikację php w swojej przeglądarce i ma lokalną drukarkę fiskalną podłączoną do swojego kompa :-) Z tego co wiem, da się to zrobić ale nie mogę nigdzie znaleźć jak...
Chodzi o wielostanowiskowy system sprzedaży w firmowej sieci LAN, gdzie jest kilka stanowisk, każde ze swoją drukarką fiskalną :-) Dzięki jeszcze raz za sugestie, podpowiedzi, pomoc :-) |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
To już nie będzie od strony php
![]() -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 79 Pomógł: 3 Dołączył: 23.12.2008 Skąd: Piaseczno Ostrzeżenie: (0%) ![]() ![]() |
hmmm czemu? z tego co się w necie naczytałem to raczej można poprzez php i active-x sterować różnymi urządzeniami podłączonymi do kompa... ale nie mogłem znaleźć konkretnych przykładów... w moim przypadku chodzi o komunikację z urządzeniem podłączonym do lokalnego portu rs-232...
Ten post edytował mlattari 2.01.2009, 17:59:51 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
W php jedynie co zrobisz to wyświetlisz prośbę o kontrolkę.
![]() -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 79 Pomógł: 3 Dołączył: 23.12.2008 Skąd: Piaseczno Ostrzeżenie: (0%) ![]() ![]() |
Czyli za pomocą samego PHP nie da się przesyłać danych poprzez lokalny port szeregowy... potrzebna jest kontrolka Active-x napisana specjalnie do danego urządzenia... hmm.. na to wygląda... no ale taka kontrolka jest na stronie producenta urządzenia tylko nie wiem jak się do niej zwrócić z poziomu php :-)
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat no ale taka kontrolka jest na stronie producenta urządzenia tylko nie wiem jak się do niej zwrócić z poziomu php :-) Przecież napisałem. :] Ale warunek konieczny: PHP musi działać na tym samym systemie, co zainstalowana kontrolka. Choć przypuszczam, że lepiej byłoby tu napisać skrypt VBS, a nie babrać się z PHP. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 79 Pomógł: 3 Dołączył: 23.12.2008 Skąd: Piaseczno Ostrzeżenie: (0%) ![]() ![]() |
To tak... ale skrypty chodzą na serwerze a klienty łączą się z sewerem poprzez przeglądarki z kompów do których są podpięte lokalne drukarki fiskalne.... zastanawiam się czy w ogóle jest na to jakieś rozwiązanie.... ewentualnie mógłbym podpiąć pod serwer kilka drukarek pod różnymi portami COM (w sumie są jak narazie tylko 3 drukarki, z których 2 są używane a jedna awaryjna) ... wtedy raczej by się dało... szkoda że nie można tego zrobić w prosty sposób... Jak wszystko będzie po stronie serwera to już nie problem i chyba tak zrobie... No nic... w każdym razie dzięki za pomoc :-)
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
To wiesz, wcale niegłupim pomysłem byłoby skorzystanie z VBS po stronie klienta.
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 79 Pomógł: 3 Dołączył: 23.12.2008 Skąd: Piaseczno Ostrzeżenie: (0%) ![]() ![]() |
No lokalnie,pod Windowsem, przez VB to nie problem dostać się do portu COM: ale zastanawiam się jak połączyć lokalny VBS z działającym na serwerze skryptem php...
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
A kojarzysz ten obiekt:
Kod new ActiveXObject("Microsoft.XMLHTTP") ? ![]() -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 79 Pomógł: 3 Dołączył: 23.12.2008 Skąd: Piaseczno Ostrzeżenie: (0%) ![]() ![]() |
Nie znam takiego obiektu :-( ale z tego co piszesz to chyba będę musiał się z nim zapoznać... ale to chyba właśnie chodzi o Active-x...
Uważasz, że za pomocą ActiveXObject("Microsoft.XMLHTTP") można przekazać dane z php do tego obiektu a z niego do portu COM: ? Powiedzmy, że moje dane są $tutaj[] albo w $_POST, ale to wszystko jedno... no to jak je wysłać z php to portu com? Szukałem w sieci po tym jak wspomniałeś o tym rozwiązaniu ale nigdzie nie mogę znaleźć konkretów... Mógłbyś, jeżeli to nie kłopot, podać jakiś najprostszy przykład? Dzięki z góry... |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
W php generujesz powiedzmy jakiś text który chcesz wysłać do kontrolki. Więc robisz tak:
activex.php
I później za pomocą kontrolki otwierasz http:/twoja_strona.pl/activex.php i dostajesz tekst ![]() -------------------- |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 79 Pomógł: 3 Dołączył: 23.12.2008 Skąd: Piaseczno Ostrzeżenie: (0%) ![]() ![]() |
ehhh znalazłem rozwiązanie.... wszystko jest bardzo ładnie udokumentowane przez producenta i do tego są dołączone działające skrypty java :-)
Rzecz ma się dużo prościej niż się spodziewałem.... mogę przekazać dane z php do skryptów java i drukuję paragon :-) W każdym razie dzięki za pomoc Witam! Ponieważ już kilku z forumowiczów do mnie napisało, podpowiem wszystkim zainteresowanym tym tematem, jak się za to brać. Otóż na stronie http://www.posnet.com.pl/index.php?pid=1307 jest do pobrania kontrolka Active-X dla drukarki Posnet Thermal (EXE; 644 KB). Trzeba ją najpierw pobrać i zainstalować :-))) W katalogu DOC są 2 ważne pliki: strona_testowa_ocx.htm oraz instrukcja_ocx.pdf, natomiast biblioteka ThermalLib.ocx (najważniejsza z tego wszystkiego - ale jej nie modyfikujemy :-) ) znajduje się piętro wyżej :-) Wszystkie potrzebne Wam funkcje są użyte w pliku strona_testowa_ocx.htm i można sobie je łatwo podejrzeć i użyć we własnych skryptach. Trzeba pamiętać o poprawnym osadzeniu obiektu: <OBJECT id=ThermalLib height=0 width=0 classid=clsid:904511D2-5407-4033-8DAD-07B33EC7317E><PARAM NAME="_Version" VALUE="65536"><PARAM NAME="_ExtentX" VALUE="26"><PARAM NAME="_ExtentY" VALUE="26"><PARAM NAME="_StockProps" VALUE="0"></OBJECT> a także o tym, że Active-x działa niestety tylko w IE no i trzeba go nieraz "włączyć" w zabezpieczeniach przeglądarki. Pamiętajcie, że także biblioteka .ocx musi być dostępna najlepiej w tym samych katalogu co Wasz skrypt. Oto, w skrócie i bez kontekstu, jak dostosowałem funkcje do moich potrzeb - tzn bez formularzy itp i jak je połączyłem z moimi skryptami (przykład 3 podstawowych funkcji, które używam - inne mi są akurat w tej chwili niepotrzebne): [funkcje] ... <script LANGUAGE='JavaScript1.1'> function OpenPort() { data = ('COM1') ThermalLib.THLOpenPort(data) ThermalLib.THLSendBel() } function LBTRSHDR( ilosc_pozycji_sprzedazy,ilosc_dodatkowych_linii_tekstu,linia1,linia2,linia3 ) { var ico = ThermalLib.LBTRSHDR(ilosc_pozycji_sprzedazy,ilosc_dodatkowych_linii_tekstu,linia ,linia2,linia3) alert(\"LBTRSHDR: \" + ico) } function LBTRSLN( numer_linijki,rodzaj_rabatu,opis_rabatu,nazwa_towaru,ilosc,stawka_ptu,cena_jedno tkowa_brutto,razem_brutto, kwota_rabatu,opis_rabatu ) { var ico = ThermalLib.LBTRSLN( numer_linijki,rodzaj_rabatu,opis_rabatu,nazwa_towaru,ilosc,stawka_ptu,cena_jedno tkowa_brutto,razem_brutto,kwota_rabatu,opis_rabatu ) alert( \"LBTRSLN : \" + ico) } function LBTREXIT(rabatu_procentowy,ilosc_dodatkowych_linii_stopki,rodzaj_rabatu,kod_kasy kasjera,linia1,linia2,linia3,razem_zaplacono,razem_naleznosc,rabat) { var ico = ThermalLib.LBTREXIT(rabatu_procentowy,ilosc_dodatkowych_linii_stopki,rodzaj_raba u,kod_kasy_kasjera,linia1,linia2,linia3,razem_zaplacono,razem_naleznosc,rabat) alert(\"LBTREXIT : \" + ico) } </script> ... [zastosowanie funkcji (bez kontekstu - fragmenty wycięte ze skryptów)] ... /* ##### FISKALIZACJA Etap I - Otwarcie portu COM + inicjalizacja fiskalizacji ##### */ echo "<script language='Javascript'>"; echo "OpenPort();"; echo "LBTRSHDR( '0','0','0','0','0' );"; echo "</script>"; /* ######################################################## */ /* ##### FISKALIZACJA Etap II - wysłanie pozycji sprzedaży ############################# */ echo "<script language='Javascript'>"; echo "LBTRSLN( '".$linijka."','0','0','".substr($produkt[0],0,20)."(".$produkt[2].")"."','".$produkt[1]."','". $produkt[2]."','".$produkt[3]."','".$produkt[4]."','0','0' );"; echo "</script>"; /* ##################################################################### */ /* ##### FISKALIZACJA Etap III - zakończenia ####################### */ echo "<script language='Javascript'>"; echo "LBTREXIT( '0','0','0','1SW','0','0','0','".$laczna_naleznosc."','".$laczna_naleznosc."','0' );"; echo "</script>"; /* ###################################################### */ ... Nie zastanawiałem się jeszce nad tym co z kontrolą błedów ale nawet nie mam pojęcia jak przekazać do php wynik funkcji Javascript :-) Wszystkie funkcje są dobrze udokumentowany w instrukcji .pdf Pozdrawiam i zyczę powodzenia mlattari Witam! Ponieważ już kilku z forumowiczów do mnie napisało, podpowiem wszystkim zainteresowanym tym tematem, jak się za to brać. Otóż na stronie http://www.posnet.com.pl/index.php?pid=1307 jest do pobrania kontrolka Active-X dla drukarki Posnet Thermal (EXE; 644 KB). Trzeba ją najpierw pobrać i zainstalować :-))) W katalogu DOC są 2 ważne pliki: strona_testowa_ocx.htm oraz instrukcja_ocx.pdf, natomiast biblioteka ThermalLib.ocx (najważniejsza z tego wszystkiego - ale jej nie modyfikujemy :-) ) znajduje się piętro wyżej :-) Wszystkie potrzebne Wam funkcje są użyte w pliku strona_testowa_ocx.htm i można sobie je łatwo podejrzeć i użyć we własnych skryptach. Trzeba pamiętać o poprawnym osadzeniu obiektu: <OBJECT id=ThermalLib height=0 width=0 classid=clsid:904511D2-5407-4033-8DAD-07B33EC7317E><PARAM NAME="_Version" VALUE="65536"><PARAM NAME="_ExtentX" VALUE="26"><PARAM NAME="_ExtentY" VALUE="26"><PARAM NAME="_StockProps" VALUE="0"></OBJECT> a także o tym, że Active-x działa niestety tylko w IE no i trzeba go nieraz "włączyć" w zabezpieczeniach przeglądarki. Pamiętajcie, że także biblioteka .ocx musi być dostępna najlepiej w tym samych katalogu co Wasz skrypt. Oto, w skrócie i bez kontekstu, jak dostosowałem funkcje do moich potrzeb - tzn bez formularzy itp i jak je połączyłem z moimi skryptami (przykład 3 podstawowych funkcji, które używam - inne mi są akurat w tej chwili niepotrzebne): [funkcje] ... <script LANGUAGE='JavaScript1.1'> function OpenPort() { data = ('COM1') ThermalLib.THLOpenPort(data) ThermalLib.THLSendBel() } function LBTRSHDR( ilosc_pozycji_sprzedazy,ilosc_dodatkowych_linii_tekstu,linia1,linia2,linia3 ) { var ico = ThermalLib.LBTRSHDR(ilosc_pozycji_sprzedazy,ilosc_dodatkowych_linii_tekstu,linia ,linia2,linia3) alert(\"LBTRSHDR: \" + ico) } function LBTRSLN( numer_linijki,rodzaj_rabatu,opis_rabatu,nazwa_towaru,ilosc,stawka_ptu,cena_jedno tkowa_brutto,razem_brutto, kwota_rabatu,opis_rabatu ) { var ico = ThermalLib.LBTRSLN( numer_linijki,rodzaj_rabatu,opis_rabatu,nazwa_towaru,ilosc,stawka_ptu,cena_jedno tkowa_brutto,razem_brutto,kwota_rabatu,opis_rabatu ) alert( \"LBTRSLN : \" + ico) } function LBTREXIT(rabatu_procentowy,ilosc_dodatkowych_linii_stopki,rodzaj_rabatu,kod_kasy kasjera,linia1,linia2,linia3,razem_zaplacono,razem_naleznosc,rabat) { var ico = ThermalLib.LBTREXIT(rabatu_procentowy,ilosc_dodatkowych_linii_stopki,rodzaj_raba u,kod_kasy_kasjera,linia1,linia2,linia3,razem_zaplacono,razem_naleznosc,rabat) alert(\"LBTREXIT : \" + ico) } </script> ... [zastosowanie funkcji (bez kontekstu - fragmenty wycięte ze skryptów)] ... /* ##### FISKALIZACJA Etap I - Otwarcie portu COM + inicjalizacja fiskalizacji ##### */ echo "<script language='Javascript'>"; echo "OpenPort();"; echo "LBTRSHDR( '0','0','0','0','0' );"; echo "</script>"; /* ######################################################## */ /* ##### FISKALIZACJA Etap II - wysłanie pozycji sprzedaży ############################# */ echo "<script language='Javascript'>"; echo "LBTRSLN( '".$linijka."','0','0','".substr($produkt[0],0,20)."(".$produkt[2].")"."','".$produkt[1]."','". $produkt[2]."','".$produkt[3]."','".$produkt[4]."','0','0' );"; echo "</script>"; /* ##################################################################### */ /* ##### FISKALIZACJA Etap III - zakończenia ####################### */ echo "<script language='Javascript'>"; echo "LBTREXIT( '0','0','0','1SW','0','0','0','".$laczna_naleznosc."','".$laczna_naleznosc."','0' );"; echo "</script>"; /* ###################################################### */ ... Nie zastanawiałem się jeszce nad tym co z kontrolą błedów ale nawet nie mam pojęcia jak przekazać do php wynik funkcji Javascript :-) Wszystkie funkcje są dobrze udokumentowany w instrukcji .pdf Pozdrawiam i zyczę powodzenia mlattari |
|
|
![]()
Post
#16
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat Nie zastanawiałem się jeszce nad tym co z kontrolą błedów ale nawet nie mam pojęcia jak przekazać do php wynik funkcji Javascript :-) AJAX AJAX AJAX Ajaxem wywolasz request w php i mozesz do niego przekazac dane GETem czy POSTem -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 79 Pomógł: 3 Dołączył: 23.12.2008 Skąd: Piaseczno Ostrzeżenie: (0%) ![]() ![]() |
hmm :-) nie jestem obeznany w AJAXie :-) Mógłbyś dać treściwy i prosty przykład? Wielkie dzięki z góry :-))
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 25.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
mlattari czy Twoja aplikacja dziala online na zewnetrznym serwerze? czy lokalnie?
>u mnie dziala z kontrolka ale jedynie lokalnie, gdy odpalam z serwera przestaje dzialac... Ten post edytował 8bolek 25.05.2009, 14:17:37 |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 89 Pomógł: 3 Dołączył: 14.07.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Mam pytanie odświeżające temat. Czy ktoś uporał się z problemem użycia biblioteki ThermalLib.ocx w plikach php ? testowałem zamieszczony na stronie Posnet pliczek html (lokalnie!) i faktycznie ładnie komunikuje się z drukarką. Problem pojawia się kiedy chcę go użyć w php - wszystko przestaje działać.
|
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 403 Pomógł: 68 Dołączył: 20.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
jak może przestać działać javaScript? z tego co przeczytałem wcześniej to instalujesz kontrolkę ocx na kliencie i teraz masz scenariusz
Zapytanie do serwera -> twoja aplikacja generuje odpowiedną stronę z JavaScript -> użytkownik klika drukuj paragon co wywołuje przygotowany wcześniej kod Java Script ten kod komunikuje się z ocx a kontrolka komunikuje się z drukarką. I to musi działać (chyba że przeglądarka nie obsługuje Active-x ale to inna bajka). -------------------- Pomogłem? wyraź to i kliknij "Pomógł"
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.05.2025 - 10:52 |