2014-01-16 7 views
0

PHP 소켓을 통해 Zebra QLn220 모바일 프린터에서 응답을 얻으려고합니다.소켓 연결을 통해 Zebra 프린터로부터 메시지 받기

프린터와의 통신이 정상적으로 설정 매개 변수를 보내고 필요한 라벨/영수증을 인쇄 할 수 있지만 프린터에서 응답을받을 수 없습니다. 소켓 작품을 통해 전송,하지만 난 영원히 기다리고 socket_read가 호출 될 때 어떤 반응을 얻고 없습니다 결국

// Toy socket connection to Zebra QLn220 mobile printer 
// set up socket 
$sock = socket_create(AF_INET, SOCK_STREAM, 0); 

if (!$sock){ 
    die("boourns, no socket created"); 
} 
echo "Socket created".PHP_EOL; 
$printer_ip = '192.168.0.11'; 
// connect socket to printer 
if(!socket_connect($sock, $printer_ip, 6101)){ 
    $errorcode = socket_last_error(); 
    $errormsg = socket_str($errorcode); 
    die("Could not connect: [$errorcode] $errormsg\n"); 
} 
// this is actually a CPCL set up command, not ZPL, but I can't get a response regardless of language 
$get_mac = '! U1 getvar "wlan.mac_addr"' 

$success = socket_send($sock, $get_mac, strlen($out), 0); 
$result = socket_read($sock, 1024); 
echo $result.PHP_EOL; 

.

소켓에서 읽는 방법이 꺼져 있거나 프린터가 단순히 시도한 요청에 응답하지 않을 수 있습니다.

$m1 = "^XA". 
     "^FO20,50". 
     "^A0N50,50". 
     "^FDHello, World!". 
     "^FS". 
     "^XZ"; 

$m2 = "^XA". 
     "^FO15,60". 
     "^BCN,75,Y,N,N". 
     "^FDFront Shelf-2^FS". 
     "^XZ"; 

$m3 = "^XA". 
     "^POI". 
     "^FO50,50". 
     "^ADN,36,20". // height, width of characters. min is 18,10 
     "^FDInverted label^FS". 
     "^XZ"; 

$m4 = "^XA". 
     "^FO15,15". 
     "^FDONLY ONE LABEL?!?!^FS". 
     "^XZ"; 

$m5 = "~JC". // set media sensort calibration 
     "^XA". 
     "^JUS". // Configuration update. SAVE settings 
     "^XZ"; 

답변

2

모든 SGD 명령은 새로운 행에서 시작해야하고 : 당신은 그냥 심연 고함 아니에요 볼 수 있도록 성공적으로 소켓을 통해 전송 된 메시지의

다른 예

$get_mac = '\r\n! U1 getvar "wlan.mac_addr"\r\n'

+0

하십시오 \r\n

종료 될 수 있으므로이 라인에 \r\n를 추가 그 일을 했어. 간과 한 그런 간단한 것. 다시 한번 감사드립니다. –