在微信小程序中實現(xiàn)像網(wǎng)絡(luò)調(diào)試工具按16進(jìn)制發(fā)送的功能。
1. TCP方式
<button type="primary" @click="btnTCP()">tcp通信</button>
<script>
//創(chuàng)建一個 TCP Socket 實例
const tcp = wx.createTCPSocket()
export default {
data() {
return {
}
},
onLoad() {
//啟動連接
tcp.connect({
address: '192.168.1.87',
port: 8866
})
//連接成功建立的時候觸發(fā)該事件
tcp.onConnect(function(e){
console.log('連接成功')
})
//接收到數(shù)據(jù)的時候觸發(fā)該事件
tcp.onMessage(function(e){
console.log(e.message)
//ArrayBuffer轉(zhuǎn)16進(jìn)制字符串
let buffer = e.message
let hexstr = Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('')
console.log(hexstr)
})
},
onUnload() {
//關(guān)閉連接
tcp.close( )
},
methods: {
btnTCP(){
//將一個十六進(jìn)制報文轉(zhuǎn)為字符數(shù)組
let str = 'cf 03 00 00 00 00 1e 59 ce 96 7f 01 00 00 a5'
let strs = str.split(" ")
for(let i = 0;i<strs.length;i++){
strs[i] = "0x"+strs[i] //每個字符加上0x
}
let buffer = Buffer.from(strs) //將數(shù)組放到buffer
//發(fā)送數(shù)據(jù)
tcp.write(buffer)
}
}
}
</script>
2. UDP方式
如下圖調(diào)試工具接收到微信小程序發(fā)送的16進(jìn)制數(shù)據(jù)
<button type="primary" @click="btnUDP()">udp通信</button>
btnUDP(){
//將一個十六進(jìn)制報文轉(zhuǎn)為字符數(shù)組
let str = 'cf 03 00 00 00 00 1e 59 ce 96 7f 01 00 00 a5'
let strs = str.split(" ")
for(let i = 0;i<strs.length;i++){
strs[i] = "0x"+strs[i] //每個字符加上0x
}
let buffer = Buffer.from(strs) //將數(shù)組放到buffer
//創(chuàng)建一個 UDP Socket 實例
const udp = wx.createUDPSocket()
//指定要綁定的本地端口號,留空是隨機(jī)端口
udp.bind(8877)
//向指定的 IP 和 port 發(fā)送消息
udp.send({
address:'192.168.1.255',
port: '8866',
message: buffer
})
}
以上代碼是在 uniapp 開發(fā)工具進(jìn)行編寫,然后編譯 運行到小程序模擬器才能正常使用。如果直接用微信開發(fā)者工具編譯,會報錯: ReferenceError: Buffer is not defined文章來源:http://www.zghlxwxcb.cn/news/detail-556846.html
源碼下載地址:
鏈接:https://pan.baidu.com/s/1AVB71AjEX06wpc4wbcV_tQ?pwd=l9zp
提取碼:l9zp文章來源地址http://www.zghlxwxcb.cn/news/detail-556846.html
到了這里,關(guān)于uniapp 開發(fā)微信小程序使用TCP/UDP通信以16進(jìn)制發(fā)送數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!