2012-03-22 3 views
1

배경 정보 :
맥 OS X 라이온 10.7.3 (11D50b)
EPL : http://en.wikipedia.org/wiki/Eltron_Programming_Language
EPL 설명서 : http://www.geksagon.ru/i/2/EPL2_Manual.pdf
인쇄 : 저장 이미지

내가 통해 프린터에 연결하고 2 포트 직렬 이더넷 서버.

프린터 구성 판독 :

UKQ1935H U UPS V4.14 
S/N: 64A024100181 
Serial port:96,N,8,1 
Image buffer size:0245K 
Fmem:001.0K,059.9K avl 
Gmem:000K,0058K avl 
Emem:010K,0058K avl 
I8,C,001 rY 
S4 D10 R000,000 ZT UN 
q832 Q609,24 
Option:D 
oUs,t,u 
10 19 29 

PHP 사용이 나는 EPL 프린터로 명령을 보낼 수 있어요.
바코드 및 ASCII 행을 보낼 수 있습니다.
이미지를 저장 한 다음 나중에 이미지를 사용할 수 있습니다.

문제 :

내가 나누기 이상한 다른 명령을 사용하여 이진 데이터를 혼합합니다.

예 : 자체가 잘 작동

<?php 
    $filename = WWW_ROOT . 'img/labels/mylogo.pcx'; 
    $handle = fopen($filename , 'r'); 
    $image = fread($handle , filesize($filename)); 
    $bytes = strlen($image); 
    fclose($handle); 

    # Store the image. 
    # Delete twice when dealing with Printer Flash 
    $commands = array(
     'GK"MYLOGO"', # Del 
     'GK"MYLOGO"', # Del 
     'GM"MYLOGO"' . $image_bytes, # Store 
     $image_data # Binary data 
    ); 
?> 

.

이 또한 잘 작동 - 별도의 요청에 실행하는 경우 :

이미지가 저장되어
<?php 
    $commands = array(
     '', # <-- As per the manual, a blank line prior to a new label. 
     'N', # Clear Image Buffer, New Label 
     'GG30,10,"MYLOGO"', # Get image variable MYLOGO 
     'P' # Print 
    ); 
?> 

그래서 후 mylogo를가 저장된 로고를 인쇄 종료됩니다.

그러나 나는이 작업을 수행 할 경우 :

<?php 
    $commands = array(
     'GK"MYLOGO"', # Del 
     'GK"MYLOGO"', # Del 
     'GM"MYLOGO"' . $image_bytes, # Store 
     $image_data, # Binary data 
     '', # <-- As per the manual, a blank line prior to a new label. 
     'N', # Clear Image Buffer, New Label 
     'GG30,10,"MYLOGO"', # Get image variable MYLOGO 
     'P' # Print 

    ); 
?> 

그것은 로고를 인쇄하지만 끊으 시작합니다.
ASCII 지침이 있다면 꼭 완료해야합니다.

프린터에서 덤프를 수행하면 명령의 첫 번째 순서가 실행되지만 일단 이진 데이터를 받으면 수신을 시작한 후 이진 데이터의 중간 및 끝에서 다음 명령 실행을 시작합니다 명령 집합 (ASCII 명령)을 입력하면 바이너리가 계속됩니다.

물론 이미지 데이터 다음에 P 명령을받지 못했기 때문에 & hellip;이 인쇄되지 않습니다.

왜 이렇게 했습니까?

작동 방식 : HTTP 요청이 언제 만들어지면 명령을 별도로 설정하는지 (새 소켓 연결).
두 명령 세트가 동일한 HTTP 요청에있는 경우 작동하지 않습니다.

다른 명령으로 이진 데이터를 만든 경우 - 프린터가 "홀수"상태가되어 명령 수신을 다시 시작하기 위해 전원을 다시 켜야합니다.

목표 끝 : 다른 명령과 함께 바이너리 데이터를 전달할 수 있으며 연결이 없습니다.

예제 코드 : https://gist.github.com/de3a1ba2f0decc36b6e6

이미지

입력 덤프 : 덤프의 http://imageshack.us/photo/my-images/193/photo1any.jpg/

위 : http://imageshack.us/photo/my-images/820/photosaz.jpg/

: 덤프의 중앙에 표시 http://imageshack.us/photo/my-images/37/photo2ln.jpg/

이 같이 "해야"무엇 : http://imageshack.us/photo/my-images/832/photo5uc.jpg/

그냥 ASCII 및 바코드와 같다 무엇 : http://imageshack.us/photo/my-images/23/photo4ucf.jpg/ 엉망 것 같습니다 무엇

: http://imageshack.us/photo/my-images/708/photo3si.jpg/


업데이트 1 다음 다른 개발자가 뭔가를 시도하고 더 많은 테스트를 해보았지만 작동하지 않을 수 있습니다.하지만 ... 몇 가지 이유로 ... 이미지를 저장 한 후 4 줄을 사용하면 작동하는 것 같습니다 ... 이것은 설명서에 문서화되어 있지 않습니다.

업데이트 2 : 더 많은 테스트가 끝나면 새 줄을 추가하는 것이 상황을 "개선"하는 것처럼 보이지만 해결하지는 못합니다.

업데이트 3 : 나는 문제가이 좁혀 수 있다고 생각 더 많은 테스트 후 : 한 번 STORE 명령을 실행하면

이 모든 것이 괜찮습니다. 그것을 다시 실행하면 발작이 발생합니다.

업데이트 4 :이 문제는 프린터 자체 또는 응용 프로그램과 네트워크의 문제로 나타납니다. 고객에게 전화를 걸어 원격으로 인쇄하면 완벽하게 작동하는 것 같습니다.

답변

0

업데이트 # 4 : 이것은 프린터 자체 또는 응용 프로그램에 네트워크로 연결된 방식에 문제가있는 것으로 보입니다. 고객에게 전화를 걸어 원격으로 인쇄하면 완벽하게 작동하는 것 같습니다.