做小程序连接蓝牙打印机一块,最后打印这块网上找了很多都没碰到我遇到的问题。可能是大家都没遇到过吧hhh,主要遇到以下几个问题。
- 蓝牙打印中文乱码
- 不能一次传输完所有包,比如说一行“123456789” 部分机型能够全部传输完成,而有的机型传到“7”就不会传,打印出来的结果就是“1234567”,不能完全打印完整
- 蓝牙不能打印,调用API成功无报错
第一个问题的答案,经过我查找相关资料,以及询问蓝牙厂商那边主要是由于编码问题。我这边蓝牙打印机仅支持GB2312编码,以下上代码。
//混杂
function hexStringToBuff(str){ //str='中国:WXHSH'
const buffer = new ArrayBuffer((sumStrLength(str)) + 1)
const dataView = new DataView(buffer)
var data=str.toString();
var p = 0; //ArrayBuffer 偏移量
for(var i=0;i<data.length;i++){
if (isCN(data[i])){ //是中文
//调用GBK 转码
var t = gbk.$URL.encode(data[i]);
for (var j = 0; j < 2; j++) {
var temp = parseInt(t[j * 2] + t[j * 2 + 1], 16)
dataView.setUint8(p++, temp)
}
}else{
var temp = parseInt(data.charCodeAt(i).toString(16), 16)
dataView.setUint8(p++,temp)
}
}
re