uniapp串口通信

const serialPort = uni.requireNativePlugin('Fvv-UniSerialPort');

	let configDrawer = false;
	let list = {
		device: [],
		baudRate: [9600, 115200]
	};
	let select = {
		device: 0,
		baudRate: 0,
		recType: 'Hex',
		sendType: 'Hex'
	};
	let isOpen = false;
	let recText = '';
	let sendText = '';




	uni.$on('send', (d) => {
		setTimeout(() => {
			console.log(d); //{参数名1: 1,参数名2: {a:1,b:2}}
			send(d);
		}, 3000);
	});

	// 获取所有设备路径
	function getDevices() {
		serialPort.getAllDevicePath((res) => {
			list.device = res;
		});
	}
	// 改变设备
	function changeDeivce(e) {
		select.device = e.detail.value;
	}
	// 改变波特率
	function changeBaudRate(e) {
		select.baudRate = e.detail.value;
	}

	function addMessage(msg) {
		//启动App且登录成功
		console.log("串口回调信息");
	}
	// 监听数据
	function onMessage() {
		// if (select.recType === 'Hex') {
		serialPort.onMessageHex(
			(rec) => {
				console.log('收到的回调信息', rec);
				let value = addMessage(rec.toUpperCase());
				if (value == false) return trendsToast('指令不匹配')
			}, send => {
				console.log("发送", send)
			}
		);
		// }
	}
	// 关闭串口
	function close() {
		serialPort.close();
		isOpen = false;
	}
	// 打开串口
	function open() {
		// serialPort.setPath(this.list.device[this.select.device])
		// serialPort.setBaudRate(this.list.baudRate[this.select.baudRate])
		console.log('开始打开串口');
		serialPort.setPath('你的串口地址');
		serialPort.setBaudRate(9600);
		serialPort.open((res) => {
			if (!res.status) {
				uni.showToast({
					title: res.msg,
					duration: 2000,
					icon: 'none'
				});
				return;
			}
			uni.showToast({
				title: '已打开',
				duration: 2000
			});
			onMessage();
			isOpen = true;

			//启动成功就发送
			send('AA1A01050000BB');

			// setTimeout(() => {
			// 	send('AA1A031F0100BB');
			// }, 2000);

			// close();
		});
	}
	// 发送消息
	function send(res) {
		if (!isOpen) {
			open();
			return;
		}
		console.log('发送消息', res);
		serialPort.sendHex(res);
		// if (select.sendType === 'ASCII') {
		// 	serialPort.sendASCII(res);
		// } else if (select.sendType === 'Hex') {

		// }


	}
  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值