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

这里只记录一些关键点。

使用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();
}

android端StarIO热敏打印机打印小票的更多相关文章

  1. C# 收银机顾显(客显)及打印小票(58热敏打印机)

    最近做winform收银机,设计顾显及打印小票总结. 1.顾显(串口COM1) 只涉及到总计,所以只是简单的功能. public static ClientDisplayResult Display( ...

  2. Spring MVC返回json数据给Android端

    原先做Android项目时,服务端接口一直是别人写的,自己拿来调用一下,但下个项目,接口也要自己搞定了,我想用Spring MVC框架来提供接口,这两天便抽空浅学了一下该框架以及该框架如何返回json ...

  3. Android端IM应用中的@人功能实现:仿微博、QQ、微信,零入侵、高可扩展

    本文由“猫爸iYao”原创分享,感谢作者. 1.引言 最近有个需求:评论@人(没错,就是IM聊天或者微博APP里的@人功能),就像下图这样:   ▲ 微信群聊界面里的@人功能    ▲ QQ群聊界面里 ...

  4. [Android]Android端ORM框架——RapidORM(v2.1)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6020412.html [Android]Android端ORM ...

  5. [Android]Android端ORM框架——RapidORM(v2.0)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5626716.html [Android]Android端ORM ...

  6. Java服务器对外提供接口以及Android端向服务器请求数据

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5056780.html 讲解下java服务器是如何对移动终端提供接口的,以什么数据格式提供出去,移动端又是怎么 ...

  7. 【转】C#使用ESC指令控制POS打印机打印小票

    .前言 C#打印小票可以与普通打印机一样,调用PrintDocument实现.也可以发送标注你的ESC指令实现.由于 调用PrintDocument类时,无法操作使用串口或TCP/IP接口连接的pos ...

  8. C#使用ESC指令控制POS打印机打印小票

    1.前言 C#打印小票可以与普通打印机一样,调用PrintDocument实现.也可以发送标注你的ESC指令实现.由于 调用PrintDocument类时,无法操作使用串口或TCP/IP接口连接的po ...

  9. 【Android端 APP GPU过度绘制】GPU过度绘制及优化

    一.Android端的卡顿 Android端APP在具体使用的过程中容易出现卡顿的情况,比如查看页面时出现一顿一顿的感受,切换tab之后响应很慢,或者具体滑动操作的时候也很慢. 二.卡顿的原因 卡顿的 ...

随机推荐

  1. jmeter 多机负载压测与服务器性能监测

    环境: jmeter: apache-jmeter-3.3 jdk: 负载生成: 被测机: 一. 多机负载压测: 概述: 1.修改jmeter.properties配置文件 remote_hosts= ...

  2. (29)C#多线程

    使用线程的原因 1.不希望用户界面停止响应. 2.所有需要等待的操作,如文件.数据库或网络访问需要一定的时间. 一个进程的多个线程可以同时运行不同cpu或多核cpu的不同内核上 注意多线程访问相同的数 ...

  3. UVALive(LA) 3644 X-Plosives (并查集)

    题意: 有一些简单化合物,每个化合物都由两种元素组成的,你是一个装箱工人.从实验员那里按照顺序把一些简单化合物装到车上,但这里存在安全隐患:如果车上存在K个简单化合物,正好包含K种元素,那么他们就会组 ...

  4. Python的并发并行[1] -> 线程[0] -> threading 模块

    threading模块 / threading Module 1 常量 / Constants Pass 2 函数 / Function 2.1 setprofile()函数 函数调用: thread ...

  5. Ubuntu下触控板手势调节软件xSwipe

    楼主进了一台Thinkpad T450s,触控板支持4点触控,安装了ubuntu14.04 LTS之后,触控板只剩下双指滑动了,略有不爽,各种google,百度. 真找到办法了. 首先得知了touch ...

  6. Xamarin XAML语言教程构建进度条ProgressBar

    Xamarin XAML语言教程构建进度条ProgressBar Xamarin XAML语言教程构建进度条ProgressBar,ProgressBar被称为进度条,它类似于没有滑块的滑块控件.进度 ...

  7. vue编程中,需要注意的

    同名情况: data() 中的数据名   和  methods()  中的方法名  不能相同. 原因:因为在vue中这两个都能用this.XX拿出来,如果写一样的,将不能分辨,计算机会默认覆盖一个. ...

  8. docker环境准备及理论

    1.预热 内核运行在内核空间,进程运行在用户空间,linux进程特性:父进程负责子进程的创建和回收,白发人送黑发人.容器就是为了保护它里面的内容物,不受其他容器干扰,也不去干扰其他容器.容器让进程认为 ...

  9. POJ 2566:Bound Found(Two pointers)

    [题目链接] http://poj.org/problem?id=2566 [题目大意] 给出一个序列,求一个子段和,使得其绝对值最接近给出值, 输出这个区间的左右端点和区间和. [题解] 因为原序列 ...

  10. .xcodeprok cannot be opened because the project file cannot be parsed

    用svn更新代码后,打开xcode工程文件出现 xxx..xcodeproj cannot be opened because the project file cannot be parsed. 这 ...