使用Java程序控制打印机,但是不直接使用Java自带类实现,而是通过socket连接写入指令打印

使用Java程序控制打印机,但是不直接使用Java自带类实现,而是通过socket连接写入指令打印,第1张

我以前写的Android应用

/

 

/

package comexampleprintertest;

import javaioIOException;

import javaioOutputStream;

import javaioOutputStreamWriter;

import javaioUnsupportedEncodingException;

import javanetSocket;

import javautilList;

import javautilMap;

/

 @    POS小票打印机  网口无驱打印

 

调用方法  new PrintLine()print(list,map,string);

 @author Btboy1978 QQ: 138027869

 

/

public class PrintLine { 

static String PRINT_IP = "1921681254";

static int PRINT_PORT = 9100;

Socket socket = null;

OutputStream socketOut = null;

OutputStreamWriter writer = null;

String[] Colum_Name = new String[] { "ID", "菜名", "份数", "小计金额" };// 设定小票列标题

/

   @throws IOException

   

  /

public PrintLine() throws IOException {

  // TODO Auto-generated constructor stub

  // 建立打印机连接

  //

  socket = new Socket("1921681254", PRINT_PORT);

  socketOut = socketgetOutputStream();

  writer = new OutputStreamWriter(socketOut, "GBK");

}

/

   @param PRINT_DATA

              小票主要数据

   @param GS_INFO

              小票附带信息

   @param CAIDAN_SN

              小票号码

  /

public void print(List<Map<String, Object>> PRINT_DATA,

   Map<String, String> GS_INFO, String CAIDAN_SN) {

  /

    接收小票页面 公司信息 Map<String,String> map=new HashMap<String,String>();

    mapput("GS_Name", "武汉联兴科技有限公司"); mapput("GS_Address",

    "武汉市解放大道2679号"); mapput("GS_Tel", "13507115045"); mapput("GS_Qq",

    "138027869");

   /

  try {

   // 条码打印指令

   byte[] PRINT_CODE = new byte[9];

   PRINT_CODE[0] = 0x1d;

   PRINT_CODE[1] = 0x68;

   PRINT_CODE[2] = 120;

   PRINT_CODE[3] = 0x1d;

   PRINT_CODE[4] = 0x48;

   PRINT_CODE[5] = 0x10;

   PRINT_CODE[6] = 0x1d;

   PRINT_CODE[7] = 0x6B;

   PRINT_CODE[8] = 0x02;

   // 清除字体放大指令

   byte[] FD_FONT = new byte[3];

   FD_FONT[0] = 0x1c;

   FD_FONT[1] = 0x21;

   FD_FONT[2] = 4;

   // 字体加粗指令

   byte[] FONT_B = new byte[3];

   FONT_B[0] = 27;

   FONT_B[1] = 33;

   FONT_B[2] = 8;

   // 字体纵向放大一倍

   byte[] CLEAR_FONT = new byte[3];

   CLEAR_FONT[0] = 0x1c;

   CLEAR_FONT[1] = 0x21;

   CLEAR_FONT[2] = 0;

   // 计算合计金额

   int price = 0;

   // 初始化打印机

   socketOutwrite(27);

   socketOutwrite(64);

   socketOutwrite(FD_FONT);// 字体放大

   socketOutwrite(FONT_B);// 字体加粗

   socketOutwrite(10);

   writerwrite("  " + GS_INFOget("GS_Name") + " \r\n");   

   writerflush();// 关键,很重要,不然指令一次性输出,后面指令覆盖前面指令,导致取消放大指令无效

   socketOutwrite(CLEAR_FONT);

   socketOutwrite(10);

   writerwrite("NO:  " + CAIDAN_SN + " \r\n");

   writerwrite("---------------------------------\r\n");

   writerwrite("地址: " + GS_INFOget("GS_Address") + "\r\n");

   writerwrite("联系电话: " + GS_INFOget("GS_Tel") + " \r\n");

   writerwrite("---------------------------------\r\n");

   writerwrite(Fix_String_Lenth(1,Colum_Name[0], 6)

     + Fix_String_Lenth(0,Colum_Name[1], 14)

     + Fix_String_Lenth(1,Colum_Name[2], 4)

     + Fix_String_Lenth(1,Colum_Name[3], 6) + "\r\n");

   for (int i = 0; i < PRINT_DATAsize(); i++) {

    writerwrite(Fix_String_Lenth(1,i + 1 + "", 6)

      + Fix_String_Lenth(0,PRINT_DATAget(i)get("cai_name")

        toString(), 14)

      + Fix_String_Lenth(1,1 + "", 4)

      + Fix_String_Lenth(1,PRINT_DATAget(i)get("cai_price")

        toString(), 6) + "\r\n");

    price += IntegerparseInt(PRINT_DATAget(i)get("cai_price")

      toString());

   }

   writerwrite("---------------------------------\r\n");

   writerwrite("本单共  " + PRINT_DATAsize() + " 道菜品,合计费用:  " + price

     + "元\r\n");

   writerwrite("---------------------------------\r\n");

   writerwrite("    欢 迎 品 偿       谢 谢 惠 顾\r\n");

   // 下面指令为打印完成后自动走纸

   writerwrite(27);

   writerwrite(100);

   writerwrite(4);

   writerwrite(10);

   writerclose();

   socketOutclose();

  } catch (IOException e) {

   // TODO Auto-generated catch block

   eprintStackTrace();

  }

}

/

   字符串长度补齐,方便打印时对齐,美化打印页面,不过中文计算好像有点问题

   

   @param strs

              源字符

   @param len

              指定字符长度

   @return

   @throws UnsupportedEncodingException 

  /

public String Fix_String_Lenth(int type ,String strs, int len) {

  String strtemp = strs;

  int len1 = strslength();

  switch (type) {

  case 0:

   while (strtemplength() < len) {

    strtemp += " ";}

   break;

   case 1:

    while (strtemplength() < len) {

     strtemp += " ";}

    break;

  default:

   

   break;

  }  

  return strtemp;

}

}

*** 作步骤如下:

1右键点击打开网络图标,点击打开“网络和Internet设置”;

2找到“网络和共享中心”,点击打开;

3在新d出的窗口,点击左边的‘更改高级共享设置’;

4要能发现共享打印机,个人电脑需要开启这个"网络发现“;

5然后连接打印机的电脑需要打开“打印机共享”,点击“保存更改”即可连接了。

以上就是关于使用Java程序控制打印机,但是不直接使用Java自带类实现,而是通过socket连接写入指令打印全部的内容,包括:使用Java程序控制打印机,但是不直接使用Java自带类实现,而是通过socket连接写入指令打印、共享打印机连接不上、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9527432.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存