- 小程序nfc刷卡功能一直发送不同数据?
我写了一个小程序的nfc功能,存入了一段固定的信息发送出去,但是接触到设备的时候,设备却一直在接收数据,而且每次接收到的数据都不一样导致显示出的卡号也不一样,但是使用手机的nfc只读一次,再次刷的时候数据和卡号也一致,这是为什么啊
2023-07-31 - 微信小程序使用下面这个方法模拟出的nfc卡都支持什么协议?
wx.getHCEState({ success(res) { console.log('getHCEState',res.errCode); if (res.errCode == 0) { console.log("HCE 能力正常"); // 初始化NFC wx.startHCE({ aid_list: ['F222222222'], success(res) { console.log('startHCE',res.errCode); if (res.errCode == 0) { // 监听事件 wx.onHCEMessage(function(res) { console.log('onHCEMessage',res); if (res.messageType === 1) { console.log('res.messageType === 1'); // 发送NFC消息 var str = JSON.stringify({ username: '张三', phone: '15512365478' }) var byteArrays = util.stringToByteArray(str) var retbuffer = new ArrayBuffer(byteArrays.length) var dataView = new DataView(retbuffer) for(let i = 0;i < dataView.byteLength;i++) { dataView.setInt8(i, byteArrays[i]) } wx.sendHCEMessage({ data: retbuffer, success: function(res) { console.log('NfcHCECore-->sendHCEMessage:success',res); }, fail: function(err) { console.error('NfcHCECore-->sendHCEMessage:fail',err) } }) } }) } } }) } } }) function stringToByteArray(str) { var bytes = new Array() var len, c; len = str.length for(var i = 0;i < len;i++) { c = str.charCodeAt(i) if (c >= 0x010000 && c <= 0x10FFFF) { bytes.push(((c >> 18) & 0x07) | 0xF0) bytes.push(((c >> 12) & 0x3F) | 0x80) bytes.push(((c >> 6) & 0x3F) | 0x80) bytes.push((c & 0x3F) | 0x80) } else if (c >= 0x000800 && c <= 0x00FFFF) { bytes.push(((c >> 12) & 0x0F) | 0xE0) bytes.push(((c >> 6) & 0x3F) | 0x80) bytes.push((c & 0x3F) | 0x80) } else if (c >= 0x000080 && c <= 0x0007FF) { bytes.push(((c >> 6) & 0x1F) | 0xC0) bytes.push((c & 0x3F) | 0x80) } else { bytes.push(c & 0xFF) } } return bytes }
2023-07-15 - 使用uniapp开发微信小程序的nfc刷卡功能无法实现?
wx.getHCEState({ success(res) { console.log('getHCEState',res.errCode); if (res.errCode == 0) { console.log("HCE 能力正常"); // 初始化NFC wx.startHCE({ aid_list: ['F222222222'], success(res) { console.log('startHCE',res.errCode); if (res.errCode == 0) { // 监听事件 wx.onHCEMessage(function(res) { console.log('onHCEMessage',res); if (res.messageType === 1) { console.log('res.messageType === 1'); // 发送NFC消息 var str = JSON.stringify({ username: '张三', phone: '15512365478' }) var byteArrays = util.stringToByteArray(str) var retbuffer = new ArrayBuffer(byteArrays.length) var dataView = new DataView(retbuffer) for(let i = 0;i < dataView.byteLength;i++) { dataView.setInt8(i, byteArrays[i]) } wx.sendHCEMessage({ data: retbuffer, success: function(res) { console.log('NfcHCECore-->sendHCEMessage:success',res); }, fail: function(err) { console.error('NfcHCECore-->sendHCEMessage:fail',err) } }) } }) } } }) } } }) function stringToByteArray(str) { var bytes = new Array() var len, c; len = str.length for(var i = 0;i < len;i++) { c = str.charCodeAt(i) if (c >= 0x010000 && c <= 0x10FFFF) { bytes.push(((c >> 18) & 0x07) | 0xF0) bytes.push(((c >> 12) & 0x3F) | 0x80) bytes.push(((c >> 6) & 0x3F) | 0x80) bytes.push((c & 0x3F) | 0x80) } else if (c >= 0x000800 && c <= 0x00FFFF) { bytes.push(((c >> 12) & 0x0F) | 0xE0) bytes.push(((c >> 6) & 0x3F) | 0x80) bytes.push((c & 0x3F) | 0x80) } else if (c >= 0x000080 && c <= 0x0007FF) { bytes.push(((c >> 6) & 0x1F) | 0xC0) bytes.push((c & 0x3F) | 0x80) } else { bytes.push(c & 0xFF) } } return bytes } 上面的nfc功能是在一个点击事件触发的,但点击之后一点反应没有,一个log都没有打印出来
2023-06-12