android端StarIO热敏打印机打印小票

最近在做这个热敏打印机打印小票,开始的时候在网上找资料,发现国内基本没有这方面的资料,国外也很少,在此做个打印小票的记录。

这里只记录一些关键点。

使用StarIOPort.searchPrinter(String port)来查找可用的设备,我这里使用的是无线连接打印机。代码如下

ProgressDialog dialog = ProgressDialog.show(context, "", "查找中请稍等...", true);
List TCPPortList;
final ArrayList arrayDiscovery; //用来存储找到的打印设备信息
final ArrayList arrayPortName; //用来存储设备信息的字符

arrayDiscovery = new ArrayList();
arrayPortName = new ArrayList();
try{
TCPPortList = StarIOPort.searchPrinter("TCP:"); //使用TCP查找设备
for(PortInfo portInfo : TCPPortList){
arrayDiscovery.add(portInfo); //遍历查找到的设备,将其添加到arrayDiscovery中
}
if(arrayDiscovery.size() > 0)
{
Log.i("TTT", "发现设备");
SharedPreferences pref = context.getSharedPreferences("POS_ORDER", Context.MODE_WORLD_READABLE | Context.MODE_WORLD_WRITEABLE);
Editor editor = pref.edit();
editor.putString("portName", arrayDiscovery.get(0).getPortName());
editor.commit();
dialog.dismiss();

//将arrayDiscovery中的端口信息读取出来,放入arrayPortName中
for (PortInfo discovery : arrayDiscovery) {
String portName;

portName = discovery.getPortName();

if (discovery.getMacAddress().equals("") == false) {
portName += "\n - " + discovery.getMacAddress();
if (discovery.getModelName().equals("") == false) {
portName += "\n - " + discovery.getModelName();
}
}

arrayPortName.add(portName);
}

//弹出选择框,选择找到的设备以打印
new AlertDialog.Builder(context).setIcon(android.R.drawable.checkbox_on_background).setTitle("请选择打印机的IP").setItems(arrayPortName.toArray(new String[0]), new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {
try {
StarIOPort port = null;
String portButton = arrayPortName.get(whichButton);
port = StarIOPort.getPort(portButton, "", 10000);

ArrayList<byte[]> ByteArray = new goodsList().createList();
byte[] commandToSendToPrinter = new convertFromListByteArrayToByteArray(ByteArray).listByteArrayToByteArray();
port.writePort(commandToSendToPrinter, 0, commandToSendToPrinter.length);
} catch (StarIOPortException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).show();
}

else
{
dialog.dismiss();
Builder dialog2 = new AlertDialog.Builder(context);
dialog2.setTitle("无法连接设备");
dialog2.setMessage("1请确认设备已开机且绿灯常亮非闪烁。\n2.请确认路由器一开机并正常工作。\n3.排除问题后再次点击按钮。");

AlertDialog dialogView = dialog2.show();
TextView textView = (TextView) dialogView.findViewById(android.R.id.message);
textView.setTextSize(26);
Button btn1 = dialogView.getButton(DialogInterface.BUTTON_POSITIVE);
btn1.setTextSize(24);
btn1.setTextColor(Color.BLUE);
Button btn2 = dialogView.getButton(DialogInterface.BUTTON_NEGATIVE);
btn2.setTextSize(24);
btn2.setTextColor(Color.RED);
SharedPreferences pref = context.getSharedPreferences("POS_ORDER", context.MODE_WORLD_READABLE | context.MODE_WORLD_WRITEABLE);
Editor editor = pref.edit();
editor.putString("portName", "");
editor.commit();

}
} catch (StarIOPortException e){
Log.i("TAG", "tcp查找失败");
e.printStackTrace();
}

posted @ 2016-03-08 10:36  DevLi  阅读(966)  评论(0)    收藏  举报