在微信小程序中实现像网络调试工具按16进制发送的功能。
1. TCP方式
<button type="primary" @click="btnTCP()">tcp通信</button>
<script>
//创建一个 TCP Socket 实例
const tcp = wx.createTCPSocket()
export default {
data() {
return {
}
},
onLoad() {
//启动连接
tcp.connect({
address: '192.168.1.87',
port: 8866
})
//连接成功建立的时候触发该事件
tcp.onConnect(function(e){
console.log('连接成功')
})
//接收到数据的时候触发该事件
tcp.onMessage(function(e){
console.log(e.message)
//ArrayBuffer转16进制字符串
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() {
//关闭连接
tcp.close( )
},
methods: {
btnTCP(){
//将一个十六进制报文转为字符数组
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) //将数组放到buffer
//发送数据
tcp.write(buffer)
}
}
}
</script>
2. UDP方式
如下图调试工具接收到微信小程序发送的16进制数据
<button type="primary" @click="btnUDP()">udp通信</button>
btnUDP(){
//将一个十六进制报文转为字符数组
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) //将数组放到buffer
//创建一个 UDP Socket 实例
const udp = wx.createUDPSocket()
//指定要绑定的本地端口号,留空是随机端口
udp.bind(8877)
//向指定的 IP 和 port 发送消息
udp.send({
address:'192.168.1.255',
port: '8866',
message: buffer
})
}
以上代码是在 uniapp 开发工具进行编写,然后编译 运行到小程序模拟器才能正常使用。如果直接用微信开发者工具编译,会报错: ReferenceError: Buffer is not defined文章来源:https://www.toymoban.com/news/detail-556846.html
源码下载地址:
链接:https://pan.baidu.com/s/1AVB71AjEX06wpc4wbcV_tQ?pwd=l9zp
提取码:l9zp文章来源地址https://www.toymoban.com/news/detail-556846.html
到了这里,关于uniapp 开发微信小程序使用TCP/UDP通信以16进制发送数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!