前几天在弄一个机子的背显示,要求显示找零
Demo是这样的
public class MainActivity extends Activity{
private SerialPortOperaion serialPortOperaion = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
serialPortOperaion = new SerialPortOperaion(null, new SerialParam(2400, "/dev/ttyS3", 0));
try {
mSerialPortOperaion.StartSerial();
} catch (Exception e) {
}
new WriteThread().start();
}
private class WriteThread extends Thread {
public void run(){
super.run();
try{
//12345678
mSerialPortOperaion.WriteData(0X1B, 0X73, 0X31, 0X1B, 0X51, 0X41, 0X31, 0X32, 0X33, 0X34, 0X35, 0X36, 0X37, 0X38, 0X0D);
MainActivity.this.sleep(1000);
//找零
serialPortOperaion .WriteData(0X1B, 0X73, 0X34);
MainActivity.this.sleep(1000);
}catch(Exception e){
}
}
}
private void sleep(int ms) {
try {
java.lang.Thread.sleep(ms);
} catch (Exception e) {
e.printStackTrace();
}
}
}
文档:
具体的一些可以参考ASCII表
介于Demo,我看不太懂16进制的一些表达,我就将此改了下我们平时输入的123456
一下这个是我更改后的
public class MainActivity extends Activity{
private SerialPortOperaion serialPortOperaion = null;
private EditText editText;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
serialPortOperaion = new SerialPortOperaion(null, new SerialParam(2400, "/dev/ttyS3", 0));
try {
mSerialPortOperaion.StartSerial();
} catch (Exception e) {
}
editText = (EditText) findViewById(R.id.edittext);
button = (Button) findViewById(R.id.edittext);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
serialPortOperaion .WriteData(0x0C);
String s = editText.getText().toString();
//这里的写法要参考文档(十进制的写法)
mSerialPortOperaion.WriteData(27, 81, 65);
mSerialPortOperaion.WriteData(input(s));
mSerialPortOperaion.WriteData(13);
//这里显示的是找零
//如果要显示单价,总计,收款这些,可以参考文档替换最后的0X34
serialPortOperaion .WriteData(0X1B, 0X73, 0X34);
}
});
}
public int [] TenToSix(String value) {
String vs = value.trim();
if (vs.length() < 1) return null;
int[] v = new int[value.length()];
for (int i = 0; i < vs.length(); i++) {
char c = vs.charAt(i);
int iv = 0;
switch (c) {
case '0': iv = 0X30;
break;
case '1':iv = 0X31;
break;
case '2':iv = 0X32;
break;
case '3':iv = 0X33;
break;
case '4':iv = 0X34;
break;
case '5':iv = 0X35;
break;
case '6':iv = 0X36;
break;
case '7':iv = 0X37;
break;
case '8':iv = 0X38;
break;
case '9':iv = 0X39;
break;
}
v[i] = iv;
}
return v;
}
//这个根据自己的需要是否保留
/* private void sleep(int ms) {
try {
java.lang.Thread.sleep(ms);
} catch (Exception e) {
e.printStackTrace();
}
}*/
}
遇到的问题:
参照文档更改Demo运行成功后,我将jar包移到项目,一直都是运行报错的…
解决:
缺失了.so文件
在复制.so文件的时候要先查看你的gradle时候有指定目录识别.so文件,如果有的话要放在对应的目录,否则会识别不了
以下是gradle指定了目录识别.so文件