我以前写的Android应用
/
/
package comexampleprintertest;
import javaioIOException;
import javaioOutputStream;
import javaioOutputStreamWriter;
import javaioUnsupportedEncodingException;
import javanetSocket;
import javautilList;
import javautilMap;
/
调用方法 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连接写入指令打印、共享打印机连接不上、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)