2010-06-01 1 views
4

얼룩말 프린터 (TTP2030) 텍스트 및 바코드에 인쇄해야하는 .netc# 웹 응용 프로그램에서 작업 중입니다. RawPrinterHelper 클래스 from here 사용 나는 유니 코드 문자열처럼 프린터에 명령을 거의 가지고있다.Zebra TTP 2030 프린터로 원시 데이터 보내기 및 상태 가져 오기

그래서, 바코드를 인쇄 할 내가 할 :

string enq = Convert.ToChar(5).ToString(); 
string esc = Convert.ToChar(27).ToString(); 
string nul = Convert.ToChar(0).ToString(); 
string rs = Convert.ToChar(30).ToString(); 
string lf = Convert.ToChar(10).ToString(); 
string cr = Convert.ToChar(13).ToString(); 

StringBuilder sb = new StringBuilder(); 

sb.Append(esc + "BS" + nul + nul + Convert.ToChar(72).ToString() + nul + nul); 
sb.Append(nul + nul + Convert.ToChar(64).ToString() + nul + Convert.ToChar(2).ToString() + Convert.ToChar(2).ToString()); 
sb.Append(esc + "BW" + nul + "733104000099" + nul); 
sb.Append(lf + rs); 

RawPrinterHelper.SendStringToPrinter(printerName, sb.ToString()); 

그 명령에 대한 니모닉은 내가 < 시간처럼 제대로 일을 보낸다 경우

< ESC>BS<0><0>< h 48><0><0> 
<00><0>< h 40><0><2><2> 
< ESC>BW<00>733104000099<00> 
< LF>< RS> 

내가 모르는 것은 48>. 매뉴얼에서 선두에 h 다음에 공백이 있으면 16 진수 값을 나타냅니다. 이 경우이 값은 바코드의 X 좌표 (하위 바이트 - 이것이 무엇인지는 알 수 없음)를 나타냅니다.

이 값이 픽셀 (또는 mm) 인 경우 16 진수로 변환 한 다음 유니 코드로 변환하면 어떻게됩니까?

을 전송해야하는 소수 값을 어떻게 변환합니까?

통치자 라인을 인쇄하는 예를 들어 내가 보내

< ESC>r<0><0><0><0><1><230><0><24><3>

모두 내가 그렇게이 명령을 내가 할 수 변환하려면 어떻게 등

를 중지, 시작 위치를 의미 진수 값입니다 프린터로 보내시겠습니까?

내가 작업 할 수없는 또 다른 사항은 프린터에서 데이터를 가져 오는 것입니다. 사용할 수있는 여러 가지 명령이 달성하려고 용지 상태, 일련 번호, 펌웨어 등을 받고 같은 있습니다 먼저 나는 RawPrinterHelper 클래스

[DllImport("winspool.drv", CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] 
    public static extern int ReadPrinter(IntPtr hPrinter, StringBuilder data, int buf, out int pcRead); 

을 추가했다. 그럼 난 SendFileToPrinter을 사용하여 명령과 나는 얼룩말 웹 사이트

에서 가져온 kiosk printer toolbox라는 작은 응용 프로그램에서 저장 한 .prn 파일을 보내려고 (I 대신 내가 위에서 잘 때문에 기술 SendStringToPrinter 접근 방식의 파일을 전송하기로 결정했습니다 나는 거기에 옳은 일을하고 있다는 것을 믿지 않으며, 또한 몇 가지 다른 명령을 사용하여 명령 파일을 프린터에 보내 테스트했다.

ReadPrinter(hPrinter, sb, 6, out dwWritten);이라고하지만 sb은 비어 있습니다. 이 메서드는 0을 반환합니다. 프린터에서 데이터를 읽는 방법을 알고 있습니까?? 인쇄 (텍스트 및 바코드)와 프린터 상태를 고려해야 할 완전히 다른 접근 방식이 있습니까?

+4

업데이트에 관해서는 winspool을 버렸습니다.drv는 LibUsbDotNet을 사용하여 USB 포트에 직접 읽고 쓸 수 있습니다. winspool을 사용하면 ReadPrinter 나 GetPrinterData를 사용하여 프린터에서 데이터를 가져올 수 없었습니다 (가장 많이 사용하는 방법을 모를 가능성이 있으므로 해당 항목에 유용한 정보는 찾을 수 없습니다). LibUsbDotNet은 훌륭한 라이브러리이며 위의 설명과 같은 방법으로 프린터에 명령을 보내고 데이터를 가져올 수 있습니다. 지금 직면하고있는 유일한 문제는 프린터 명령에 대한 10 진수 및 16 진수 값을 변환하고 출력을 읽을 수있는 것으로 변환하는 것입니다. – bfi

답변

-3

java에서 특정 기능이 있습니다. QZ-Print를 확인해 보겠습니다. 웹 응용 프로그램 홈 컴퓨터에서 로컬로 실행되는 프린터로만 인쇄 할 수 있으며 다른 어느 누구도 인쇄 할 수 없습니다. 네가하고 싶은 일을 애플릿에서 확인해 보겠다. IT는 특히 zebra 프린터 용으로 작성되었습니다.

+0

-1이 질문은 Java 계열이 아닙니 다. –

+0

"프린터에서 데이터를 읽는 방법을 아는 사람이 있습니까? 프린터 (텍스트 및 바코드)를 인쇄하고 프린터 상태를 가져야한다는 완전히 다른 접근 방식이 있습니까? 당신은 webapp을 사용하고 있습니다, 매우 관련성이 높은 자바 애플릿을 통해 복잡한 접근법과 자바 스크립트를 가져옵니다. 아래로 투표하는 것은 무엇이든간에, 다른 의견에 개방적이지 않은 경우 질문하지 마십시오. 특히 Jzebra/QZprint와 같은 다른 접근 방법이 있다면, 말 그대로 원하는 모든 것을 할 수 있습니다. – mathis1337

관련 문제