2012-04-22 11 views
5

Zbudowałem aplikację POS (Point of Sale) w PHP, która może drukować bezpośrednio na drukarce termicznej. W większości przypadków uruchamiam aplikację na lokalnym serwerze internetowym za pomocą WAMP.Drukowanie PHP na lokalnej drukarce termicznej, nie działa bez nazwy sieciowej

część kodu drukowania wynosi:

$printer = "\\\\localhost\\TM-T88V"; 

// Open connection to the thermal printer 
$fp = fopen($printer, "w"); 
if (!$fp){ 
    die('no connection'); 
} 

$data = " PRINT THIS "; 

// Cut Paper 
$data .= "\x00\x1Bi\x00"; 

if (!fwrite($fp,$data)){ 
    die('writing failed'); 
} 

Ten kod działa poprawnie, dopóki komputer jest podłączony do sieci. Mogę uzyskać PHP, aby połączyć się z udostępnioną drukarką (na tym samym komputerze lub na komputerze w sieci) za pomocą fopen i "LOCALHOST" lub "COMPUTER-NAME": fopen ("\\ localhost \ TM-T88V "," w ");

Gdybym odłączyć komputer od sieci, PHP nie może połączyć się z \\ localhost lub \\ Computer-NAME.

Próbowałem rzeczy takie jak: fopen ('TM-T88V'), fopen ('\\. \ TM-T88V'), ale nadal otrzymuję "[function.fopen]: nie udało się otworzyć strumienia: Nie taki plik lub katalog ... ".

Jak mogę połączyć się z lokalną (shared) drukarki (najlepiej po nazwie) bez aktywnego połączenia z siecią?

+1

Korzystanie z loopback adapter Znalazłem sposób obejścia problemu, w ten sposób komputer nadal „myśli”, że ma połączenie sieciowe, aby mogło rozwiązać \\ localhost. Ale myślę, że powinien istnieć sposób na bezpośrednie połączenie z drukarką. –

+0

Cześć Bauke. Czy możesz wyjaśnić nieco więcej tego rozwiązania tego problemu? Jesteśmy w takiej samej sytuacji, jak ty od roku. Nie jesteśmy w stanie wysłać wydruku do drukarki termicznej Zebra. Wypróbowaliśmy również Twój kod, ale nie zadziałało. –

+1

Cześć Bauke. Dzięki za pomysł. W końcu mogliśmy to rozwiązać. Jedyne, co musieliśmy zrobić, to udostępnić drukarkę w sieci, a następnie uzyskać do niej dostęp przez sieć. Adapter sprzężenia zwrotnego nie działa dla nas. –

Odpowiedz

3

Czy próbowałeś fopen("PRN", "w")?

+0

Tak, mam. Daje mi też błąd "nie udało się otworzyć strumienia ...". Ustawiłem drukarkę termiczną jako domyślną drukarkę, ale to też nie pomaga. –

+0

te drukarki mają interfejs szeregowy, nie (lub ledwo) równoległy ... –

0

Oto fragment kodu używam dla mojego zadania drukowania w PHP:

$handle = printer_open('Printer Name in windows here'); 

if($handle) { // Make sure the printer is present before sending the job 
// print job here 
} 
Powiązane problemy