2014-12-19 5 views
1

ESC/POS 프린터로 직접 인쇄해야하는 응용 프로그램을 작성 중입니다. 인쇄는 괜찮지 만 프린터에 명령을 내리면 인쇄됩니다! 좀 C# 코드와 내가 보내려고 명령을 변환하기 위해 노력하고있어 다음과 같이 진수 문자열은 다음과 같습니다 물론ESC/POS 프린터에 16 진수 명령 보내기

public static String PRINTLOGOCOMPANY = "\x1c\x70\x01\x30"; 

나는 그래서 그것을 변경이 불법 이스케이프 문자가 이해 :

"\\x1c\\x70\\x01\\x30" 

I는 바이트 배열 변환 등의 DataOutput 같은 스트림을 통해 전송을 시도 :

String WIDTH_1 ="\\x1d\\x57\\x120\\x01"; 

Log.i("Width String: ", WIDTH_1); 
final byte [] width = WIDTH_1.getBytes(); 
final int portNo = xxxx; 
final String ipAddress = "xxx.xxx.x.xxx"; 

Thread thread = new Thread() { 
    @Override 
    public void run() { 
     try { 
      Socket sock = new Socket(ipAddress, portNo); 
      DataOutputStream dOut = new DataOutputStream(sock.getOutputStream()); 
      dOut.writeInt(width.length); 
      dOut.write(width); 
      dOut.close(); 
      sock.close(); 
     } catch (UnknownHostException e) { 

      e.printStackTrace(); 
      Log.i("Unknown Host Exception Error: ", String.valueOf(e)); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      Log.i("IO Exception Error: ", String.valueOf(e)); 
     } 
    } 
}; 
thread.start(

하지만 단지 타단을 인쇄;

누구든지이 ID에 대한 조언을 제공 할 수 있습니까?

+0

아무도이 항목에 대한 정보가 없습니까? 여기 내 머리카락을 꺼내 ​​ –

답변

4

문제를 이해하면 프린터에 명령을 보낼 수 없으며 모든 기호가 인쇄됩니다. 필요한 것은 바이트를 보내는 것뿐입니다. 예를 들어 다음을 수행 할 때까지 열려면 :

Socket mSocket = new Socket(PRINTER_IP, PRINTER_PORT); 
OutputStream mPrinter = mSocket.getOutputStream(); 
mPrinter.write(0x1B); 
mPrinter.write(0x70); 
mPrinter.write(0);    
mPrinter.write(200); // t1 
mPrinter.write(255); // t2 
+0

고마워 ... 그러나, 나는 회사의 로고가 이미 프린터에 저장되어있는 요구 사항에 의해 문제가 발생합니다. 그래서 로고를 인쇄하고 다른 텍스트를 누른 다음 다른 로고를 인쇄해야합니다. C# 코드에서 한 개의 큰 문자열이 예를 들어 바이트를 추가하여 생성 된 것처럼 보입니다 :'StringBuilder sb; String logo1 = "x12/x52/x1b/x2c"; String text = "이것은 테스트 문자열입니다."; String logo2 = "x12/x52/x1b/x2c"; sb.append (로고 1); sb.append (텍스트); sb.append (logo2);'그들은 문자열을 프린터로 보내고 있습니다. Java/Android에서 가능합니까? 또는 형식 텍스트 (embolden 등)을 시도 할 때 –

+0

문자열이 아닌 바이트 배열 (또는 예제와 같이 바이트 단위로)을 전송해야합니다. 0x12, 0x52, 0x1B, 0x2C 등으로 "x12/x52/x1b/x2c"를 보내보십시오. 자세한 정보 (명령 목록)는 설명서를보십시오 (예 : http://www.starmicronics.com/support/mannualfolder/escpos_cm_en). .pdf – grig