我这边使用的uniapp插件市场里面的TCP-Socket插件实现的,ios下发数据需要转成json去下发不然设备接收不到,由于我这边设备返回数据过多所以根据设备返回的头是不是包含emu 和长度信息,包含就是第一包,然后根据接收到的长度去判断是否和总长度一致,进行数据拼接

我这边需要一直去轮询下发命令查询数据所以在app.vue里面加了个定时器,使用方式就直接调用函数setinstruction传true,就开始发指令去查消息,传false就关闭发指令

​​​​​​​TCP-Socket原生插件地址

 tcp.js

import permision from "@/util/permission.js"
import {
	getApp
} from "@/base/app"

import {
	v4 as uuidv4
} from 'uuid'

const socket = {
	TCPSocket: null,
	// 万禾
	ip: '192.168.4.1',
	port: '10443',
	// 设备
	// ip: '192.168.4.1',
	// port: '8888',
	systeminfo: '',
	// 超时时间 s
	Timeout: 10,
	wifiinfo: null,
	arrList: [],
	dataLength: '',
	mydisconnect() {
		if (socket.TCPSocket) {
			socket.TCPSocket.disconnect({
				channel: '1' //可选 1~20
			})
			socket.TCPSocket = null
			socket.wifiinfo = null
			socket.arrList=[]
		}

	},
	// 初始化
	initwifi() {
		console.log('----------初始化wifi')
		socket.TCPSocket = uni.requireNativePlugin('Aimer-TCPPlugin');
		return new Promise((resolve, reject) => {
			socket.TCPSocket.connect({
				//charsetname:'GBK',//可不选,默认UTF-8,针对服务端数据的字符集格式转化
				channel: '1', //可选 1~20
				ip: socket.ip,
				port: socket.port
			}, result => {
				uni.hideLoading()
				console.log('----------TCP消息', result)
				if (result.status == '0') {
					socket.systeminfo = ''
					resolve({
						code: 100
					})
				} else if (result.status == '1') {
					socket.mydisconnect()
					resolve({
						result: result,
						code: 102
					})
				}
				// if (result.receivedMsg) {
				// 	//服务器返回字符串
				// 	socket.systeminfo = result.receivedMsg
				// }
				if (result.receivedHexMsg) {
					//硬件服务器返回16进制数据
					let msg = result.receivedHexMsg;
					let sum = msg.length / 2;
					let arr = [];
					for (let k = 0; k < sum; k++) {
						let i = msg.substring(k * 2, k * 2 + 2);
						arr.push(i);
					}
					try {
						// 截取9位的请求头
						let status = arr.slice(0, 9);
						// 截取三位解析成为字符串EMU
						let statusOne = status.slice(0, 3);
						let stringStatusOne = socket.hexToString(statusOne.join(''));
						console.log(stringStatusOne, stringStatusOne == 'EMU', "当前头3为是不是等于emu")
						// 表明当前是第一包
						if (stringStatusOne == 'EMU') {
							// 4 5位表示当前是什么命令 如801
							let statusTwo = parseInt(status.slice(3, 5).reverse().join(''), 16);
							// 6 7 8 9位表示当前包的总长度
							socket.dataLength = parseInt(status.slice(5).reverse().join(''), 16);
							let end = arr.slice(9);
							socket.arrList = end;
							if (socket.dataLength == socket.arrList.length) {
								socket.systeminfo = JSON.parse(socket.hexToString(socket.arrList
									.join('')));
								socket.arrList = [];
								console.log(socket.systeminfo, "当前拿到的所有数据第一包全获取到数据")
							}

						} else {
							socket.arrList = [...socket.arrList, ...arr];
							console.log(socket.dataLength, "当前包的总长度")
							console.log(socket.arrList.length, "当前包的总长度")
							// 表明当前已经获取到所有的包 该去转换成字符串了
							if (socket.dataLength == socket.arrList.length) {
								// 给返回值赋值
								socket.systeminfo = JSON.parse(socket.hexToString(socket.arrList
									.join('')));
								// 赋值就清空包
								socket.arrList = [];
								console.log(socket.systeminfo, "当前拿到的所有数据")
							}
						}
					} catch (err) {
						// 报错就清空包
						socket.arrList = []
						console.log(err)
						// socket.systeminfo =socket.hexToString(arr.join(''));
					}
				}
			})
		})
	},
	async ModeSettinginitwifi() {
		const app = getApp()
		return new Promise(async (resolve, reject) => {

			// #ifdef APP
			let locationres = await socket.getlocation()
			console.log('----------权限', locationres)
			if (locationres != 'allLocat') {
				reject(false)
				return
			}
			let wifiinfo = await socket.getwifiinfo()
			if (!wifiinfo || wifiinfo.wifi.SSID.indexOf('INV') == -1 && wifiinfo.wifi.SSID.indexOf(
					'EMU') == -1) {
				uni.showToast({
					title: app.$t('手机未连接设备 WIFI,请先连接'),
					icon: 'none'
				})
				reject(false)
				return
			}

			// 未连接
			if (!socket.TCPSocket) {
				let res = await socket.initwifi()
				if (res.code != 100) {
					uni.showToast({
						title: app.$t('手机未连接设备 WIFI,请先连接'),
						icon: 'none'
					})
					reject(false)
					return
				}
			}
			resolve(wifiinfo)
			// #endif

			// #ifdef H5
			resolve(true)
			// #endif
		})
	},


	// 发送消息
	async sendmsg(zhilin) {
		const app = getApp()
		console.log('-------------发送指令', {
			...zhilin,
			"timeStamp": new Date().getTime(),
			mid: uuidv4()
		})
		// #ifdef H5
		let bytesMessage = socket.textToArrayBuffer(JSON.stringify({
			...zhilin,
			"timeStamp": new Date().getTime(),
			mid: uuidv4()
		}))
		// #endif

		// #ifdef APP
		// 已经断开连接
		if (!socket.TCPSocket) {
			let initres = await socket.initwifi()
			// 重连失败
			if (initres.code == 102) {
				socket.arrList=[]
				uni.showToast({
					title: app.$t('TCP连接已断开'),
					icon: 'none'
				})
				return
			}
		}

		let bytesMessage = socket.textToArrayBuffer(JSON.stringify({
			...zhilin,
			"timeStamp": new Date().getTime(),
			mid: uuidv4()
		}))
		socket.TCPSocket.sendBytes({
			channel: '1', //可选 1~20
			// bytesMessage: ['f2', '03', '01', '40', '00', '01', '00', '20', 'AD', '90'],
			bytesMessage: bytesMessage,
		});
		console.log('-------------------bytesMessage', bytesMessage)
		uni.showToast({
			title: app.$t('发送成功'),
			icon: 'none'
		})
		return socket.getsysteminfo()
		// #endif
	},
	getsysteminfo() {
		const app = getApp()
		uni.showLoading({
			title: app.$t('请求中'),
			mask: true
		})
		return new Promise((resolve, reject) => {
			let Timeout = socket.Timeout
			let returnfn = () => {
				if (Timeout == 0) {
					socket.arrList=[]
					socket.systeminfo = ''
					uni.showToast({
						title: app.$t('响应超时'),
						icon: 'none'
					})
					return reject({
						code: 101,
						msg: app.$t('响应超时')
					})
				}
				if (socket.systeminfo) {
					uni.hideLoading()
					resolve({
						code: 100,
						msg: socket.systeminfo
					})
					socket.systeminfo = ''
					socket.arrList=[]
					return
				} else {
					Timeout = Timeout - 1
					setTimeout(() => {
						returnfn()
					}, 1000)
				}
			}
			returnfn()

		})
	},
	// 转hexarr
	strToHexArray(str) {
		var result = [];
		for (var i = 0; i < str.length; i++) {
			result.push(str.charCodeAt(i).toString(16));
		}
		return result;
	},

	// 转字符串
	hexToString(hex) {
		var str = '';
		for (var i = 0; i < hex.length; i += 2) {
			str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
		}
		return str;
	},

	async getwifiinfo() {
		return new Promise(async (resolve, reject) => {
			if (socket.wifiinfo && socket.TCPSocket) {
				resolve(socket.wifiinfo)
				return
			}
			try {
				uni.startWifi({
					success: (res) => {
						console.log('----------startWifi成功', res)
						uni.getConnectedWifi({
							success: (success) => {
								console.log('-------------success', success)
								// 测试修改WiFi名称
								// success = {
								// 	"wifi": {
								// 		"SSID": "INV_12345",
								// 		// "SSID": "EMU_12345",
								// 	}
								// }
								socket.wifiinfo = success
								resolve(success)
							},
							fail: (fail) => {
								console.log('-------------fail', fail)
								socket.wifiinfo = ''
								resolve('')
							},
						})
					},
					fail: (err) => {
						console.log('----------startWifi失败', err)
						socket.wifiinfo = ''
						resolve('')
					}
				})
			} catch (err) {
				console.log(err)
			}

		})

	},
	getlocation() {
		console.log("授权111111111")
		const app = getApp()
		return new Promise(async (resolve, reject) => {
			let system = uni.getSystemInfoSync(); // 获取系统信息
			console.log("授权222222",system)
			if (system.platform === 'android') { // 判断平台
				var context = plus.android.importClass("android.content.Context");
				var locationManager = plus.android.importClass("android.location.LocationManager");
				console.log("授权locationManager",locationManager)
				var main = plus.android.runtimeMainActivity();
				console.log("授权main",main)
				var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
				console.log("授权mainSvr",mainSvr)
				if (!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)) {
					// console.log('-----------------系统定位失败')
					uni.showToast({
						title: app.$t('获取定位权限失败,请开启定位后重试'),
						icon: 'none'
					})
					resolve('Locatfalse')
					return
				}
			}
			// else if (system.platform === 'ios') {
			// 	var cllocationManger = plus.ios.import("CLLocationManager");
			// 	var enable = cllocationManger.locationServicesEnabled();
			// 	var status = cllocationManger.authorizationStatus();
			// 	plus.ios.deleteObject(cllocationManger);
			// 	console.log('-----------------系统定位失败1',status)
			// 	uni.showToast({
			// 		title: app.$t('获取定位权限失败,请开启定位后重试'),
			// 		icon: 'none'
			// 	})
			// 	resolve('Locatfalse')
			// 	return
			// }

			// 定位权限
			let quanxian = 1
			if (system.platform == 'android') {
				quanxian = await permision.requestAndroidPermission(
					'android.permission.ACCESS_FINE_LOCATION')
			} else {
				const islocation = await permision.judgeIosPermission('location')
				quanxian = islocation ? '1' : '0'
			}
			console.log(quanxian,"1111")
			if (quanxian == 1) {
				// console.log('-----------------应用定位成功')
				resolve('allLocat')
			} else {
				uni.showToast({
					title: app.$t('获取定位权限失败,请开启定位后重试'),
					icon: 'none'
				})
				// console.log('-----------------应用定位失败')
				resolve('Locatfalse')
			}
		})
	},

	textToArrayBuffer(s) {
		var i = s.length;
		var n = 0;
		var ba = new Array()
		for (var j = 0; j < i;) {
			var c = s.codePointAt(j);
			if (c < 128) {
				ba[n++] = c;
				j++;
			} else if ((c > 127) && (c < 2048)) {
				ba[n++] = (c >> 6) | 192;
				ba[n++] = (c & 63) | 128;
				j++;
			} else if ((c > 2047) && (c < 65536)) {
				ba[n++] = (c >> 12) | 224;
				ba[n++] = ((c >> 6) & 63) | 128;
				ba[n++] = (c & 63) | 128;
				j++;
			} else {
				ba[n++] = (c >> 18) | 240;
				ba[n++] = ((c >> 12) & 63) | 128;
				ba[n++] = ((c >> 6) & 63) | 128;
				ba[n++] = (c & 63) | 128;
				j += 2;
			}
		}
		ba = ba.map(item => item.toString(16))
		return ba;
	},
	// 发送消息测试
	mysendmsg(zhilin) {
		zhilin.wifi.name = socket.textToArrayBuffer(zhilin.wifi.name)
		console.log('-------------发送指令', {
			...zhilin,
			mid: uuidv4()
		})
		let bytesMessage = socket.strToHexArray(JSON.stringify({
			...zhilin,
			mid: uuidv4()
		}))
		console.log('----------bytesMessage', bytesMessage)

		// 转换为十进制数字
		let myname = socket.textToArrayBuffer('万禾悦能')
		console.log('----------myname', myname)

		let myname2 = socket.strToHexArray(JSON.stringify(myname))
		console.log('-----------转换后name', myname2)

	},
}

export default socket;

permission.js

/**
 * 本模块封装了Android、iOS的应用权限判断、打开应用权限设置界面、以及位置系统服务是否开启
 */

var isIos
// #ifdef APP-PLUS
isIos = (plus.os.name == "iOS")
// #endif

// 判断推送权限是否开启
function judgeIosPermissionPush() {
	var result = false;
	var UIApplication = plus.ios.import("UIApplication");
	var app = UIApplication.sharedApplication();
	var enabledTypes = 0;
	if (app.currentUserNotificationSettings) {
		var settings = app.currentUserNotificationSettings();
		enabledTypes = settings.plusGetAttribute("types");
		console.log("enabledTypes1:" + enabledTypes);
		if (enabledTypes == 0) {
			console.log("推送权限没有开启");
		} else {
			result = true;
			console.log("已经开启推送功能!")
		}
		plus.ios.deleteObject(settings);
	} else {
		enabledTypes = app.enabledRemoteNotificationTypes();
		if (enabledTypes == 0) {
			console.log("推送权限没有开启!");
		} else {
			result = true;
			console.log("已经开启推送功能!")
		}
		console.log("enabledTypes2:" + enabledTypes);
	}
	plus.ios.deleteObject(app);
	plus.ios.deleteObject(UIApplication);
	return result;
}

// 判断定位权限是否开启
function judgeIosPermissionLocation() {
	var result = false;
	var cllocationManger = plus.ios.import("CLLocationManager");
	var status = cllocationManger.authorizationStatus();
	result = (status != 2)
	console.log("定位权限开启:" + result);
	// 以下代码判断了手机设备的定位是否关闭,推荐另行使用方法 checkSystemEnableLocation
	/* var enable = cllocationManger.locationServicesEnabled();
	var status = cllocationManger.authorizationStatus();
	console.log("enable:" + enable);
	console.log("status:" + status);
	if (enable && status != 2) {
		result = true;
		console.log("手机定位服务已开启且已授予定位权限");
	} else {
		console.log("手机系统的定位没有打开或未给予定位权限");
	} */
	plus.ios.deleteObject(cllocationManger);
	return result;
}

// 判断麦克风权限是否开启
function judgeIosPermissionRecord() {
	var result = false;
	var avaudiosession = plus.ios.import("AVAudioSession");
	var avaudio = avaudiosession.sharedInstance();
	var permissionStatus = avaudio.recordPermission();
	console.log("permissionStatus:" + permissionStatus);
	if (permissionStatus == 1684369017 || permissionStatus == 1970168948) {
		console.log("麦克风权限没有开启");
	} else {
		result = true;
		console.log("麦克风权限已经开启");
	}
	plus.ios.deleteObject(avaudiosession);
	return result;
}

// 判断相机权限是否开启
function judgeIosPermissionCamera() {
	var result = false;
	var AVCaptureDevice = plus.ios.import("AVCaptureDevice");
	var authStatus = AVCaptureDevice.authorizationStatusForMediaType('vide');
	console.log("authStatus:" + authStatus);
	if (authStatus == 3) {
		result = true;
		console.log("相机权限已经开启");
	} else {
		console.log("相机权限没有开启");
	}
	plus.ios.deleteObject(AVCaptureDevice);
	return result;
}

// 判断相册权限是否开启
function judgeIosPermissionPhotoLibrary() {
	var result = false;
	var PHPhotoLibrary = plus.ios.import("PHPhotoLibrary");
	var authStatus = PHPhotoLibrary.authorizationStatus();
	console.log("authStatus:" + authStatus);
	if (authStatus == 3) {
		result = true;
		console.log("相册权限已经开启");
	} else {
		console.log("相册权限没有开启");
	}
	plus.ios.deleteObject(PHPhotoLibrary);
	return result;
}

// 判断通讯录权限是否开启
function judgeIosPermissionContact() {
	var result = false;
	var CNContactStore = plus.ios.import("CNContactStore");
	var cnAuthStatus = CNContactStore.authorizationStatusForEntityType(0);
	if (cnAuthStatus == 3) {
		result = true;
		console.log("通讯录权限已经开启");
	} else {
		console.log("通讯录权限没有开启");
	}
	plus.ios.deleteObject(CNContactStore);
	return result;
}

// 判断日历权限是否开启
function judgeIosPermissionCalendar() {
	var result = false;
	var EKEventStore = plus.ios.import("EKEventStore");
	var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(0);
	if (ekAuthStatus == 3) {
		result = true;
		console.log("日历权限已经开启");
	} else {
		console.log("日历权限没有开启");
	}
	plus.ios.deleteObject(EKEventStore);
	return result;
}

// 判断备忘录权限是否开启
function judgeIosPermissionMemo() {
	var result = false;
	var EKEventStore = plus.ios.import("EKEventStore");
	var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(1);
	if (ekAuthStatus == 3) {
		result = true;
		console.log("备忘录权限已经开启");
	} else {
		console.log("备忘录权限没有开启");
	}
	plus.ios.deleteObject(EKEventStore);
	return result;
}

// Android权限查询
function requestAndroidPermission(permissionID) {
	return new Promise((resolve, reject) => {
		plus.android.requestPermissions(
			[permissionID], // 理论上支持多个权限同时查询,但实际上本函数封装只处理了一个权限的情况。有需要的可自行扩展封装
			function(resultObj) {
				var result = 0;
				for (var i = 0; i < resultObj.granted.length; i++) {
					var grantedPermission = resultObj.granted[i];
					console.log('已获取的权限:' + grantedPermission);
					result = 1
				}
				for (var i = 0; i < resultObj.deniedPresent.length; i++) {
					var deniedPresentPermission = resultObj.deniedPresent[i];
					console.log('拒绝本次申请的权限:' + deniedPresentPermission);
					result = 0
				}
				for (var i = 0; i < resultObj.deniedAlways.length; i++) {
					var deniedAlwaysPermission = resultObj.deniedAlways[i];
					console.log('永久拒绝申请的权限:' + deniedAlwaysPermission);
					result = -1
				}
				resolve(result);
				// 若所需权限被拒绝,则打开APP设置界面,可以在APP设置界面打开相应权限
				// if (result != 1) {
				// gotoAppPermissionSetting()
				// }
			},
			function(error) {
				console.log('申请权限错误:' + error.code + " = " + error.message);
				resolve({
					code: error.code,
					message: error.message
				});
			}
		);
	});
}

// 使用一个方法,根据参数判断权限
function judgeIosPermission(permissionID) {
	if (permissionID == "location") {
		return judgeIosPermissionLocation()
	} else if (permissionID == "camera") {
		return judgeIosPermissionCamera()
	} else if (permissionID == "photoLibrary") {
		return judgeIosPermissionPhotoLibrary()
	} else if (permissionID == "record") {
		return judgeIosPermissionRecord()
	} else if (permissionID == "push") {
		return judgeIosPermissionPush()
	} else if (permissionID == "contact") {
		return judgeIosPermissionContact()
	} else if (permissionID == "calendar") {
		return judgeIosPermissionCalendar()
	} else if (permissionID == "memo") {
		return judgeIosPermissionMemo()
	}
	return false;
}

// 跳转到**应用**的权限页面
function gotoAppPermissionSetting() {
	if (isIos) {
		var UIApplication = plus.ios.import("UIApplication");
		var application2 = UIApplication.sharedApplication();
		var NSURL2 = plus.ios.import("NSURL");
		// var setting2 = NSURL2.URLWithString("prefs:root=LOCATION_SERVICES");		
		var setting2 = NSURL2.URLWithString("app-settings:");
		application2.openURL(setting2);

		plus.ios.deleteObject(setting2);
		plus.ios.deleteObject(NSURL2);
		plus.ios.deleteObject(application2);
	} else {
		// console.log(plus.device.vendor);
		var Intent = plus.android.importClass("android.content.Intent");
		var Settings = plus.android.importClass("android.provider.Settings");
		var Uri = plus.android.importClass("android.net.Uri");
		var mainActivity = plus.android.runtimeMainActivity();
		var intent = new Intent();
		intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
		var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
		intent.setData(uri);
		mainActivity.startActivity(intent);
	}
}

// 检查系统的设备服务是否开启
// var checkSystemEnableLocation = async function () {
function checkSystemEnableLocation() {
	if (isIos) {
		var result = false;
		var cllocationManger = plus.ios.import("CLLocationManager");
		var result = cllocationManger.locationServicesEnabled();
		console.log("系统定位开启:" + result);
		plus.ios.deleteObject(cllocationManger);
		return result;
	} else {
		var context = plus.android.importClass("android.content.Context");
		var locationManager = plus.android.importClass("android.location.LocationManager");
		var main = plus.android.runtimeMainActivity();
		var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
		var result = mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER);
		console.log("系统定位开启:" + result);
		return result
	}
}

module.exports = {
	judgeIosPermission: judgeIosPermission,
	requestAndroidPermission: requestAndroidPermission,
	checkSystemEnableLocation: checkSystemEnableLocation,
	gotoAppPermissionSetting: gotoAppPermissionSetting
}

app.vue

<script>
	import {
		pollingIstruction
	} from "@/util/pollingInstruction.js"
	import socket from '@/util/tcp'
	export default {
		data() {
			return {
				pollingTime: ""
			}
		},
		onShow() {
			if (this.pollingTime) {
				clearInterval(this.pollingTime);
				this.pollingTime = '';
			}
			this.pollingTime = setInterval(function() {
				pollingIstruction();
			}, 30000)
		},
		onHide: function() {
			if (this.pollingTime) {
				clearInterval(this.pollingTime);
				this.pollingTime = '';
			}
			console.log('App Hide')
		},
		onUnload() {
			if (this.pollingTime) {
				clearInterval(this.pollingTime);
				this.pollingTime = '';
			}
		},
		methods: {
			
		}
	}
</script>

<style lang="scss">
	page {
		width: 100%;
		height: 100%;
		background: #30333d;
	}

	.dark {
		.uni-picker-header {
			background-color: #30333d !important;
		}

		.uni-picker-content {
			background-color: #30333d !important;
		}
	}

	.light {
		.uni-picker-header {
			background-color: #FF3229 !important;
		}

		.uni-picker-content {
			background-color: #FF3229 !important;
		}
	}
</style>

 pollingInstruction.js

import socket from '@/util/tcpTwo'
import {
		getCurrentTimer,
		parseTime
	} from "@/util/tools.js"
	import store from '@/store/index.js'
let instruction = null;
let timeInter = null;
let wifiinfoTwo=null;
export function setinstruction(flag=null){
	if(flag){
		instruction=flag;
	}
}
export function pollingIstruction(flag=null) {
	// console.log(instruction,"连接未通了")
	
	if (!instruction) {
		if(socket.TCPSocket){
			socket.mydisconnect()
		}
		return
	}
	// console.log(instruction,"连接通了")
	getwifiinfo();
}

async function getwifiinfo() {
	let t = this;
	// #ifdef APP
	console.log('------------位置')
	let locationres = await socket.getlocation()
	if (locationres != 'allLocat') {
		return
	}
	let wifiinfo = await socket.getwifiinfo();
	if (!wifiinfo) {
		return
	}
	if (wifiinfo.wifi.SSID.indexOf('EMU') == -1) {
		return
	}
	if (wifiinfo && wifiinfo.wifi.SSID.includes('EMU')) {
		wifiinfoTwo = wifiinfo.wifi.SSID.slice(4);
	}

	// 未连接
	if (!socket.TCPSocket) {
		let res = await socket.initwifi()
		console.log(res, "判断是否连接-----")
		if (res.code !== 100) {
			console.log("没连接")
		} else {
			await sendmsg(805);
			// clearInterval(timeInter)
			// timeInter = setInterval(function() {
			// 	console.log("打印了setInterval");
			// 	sendmsg(805);
			// }, 60000);
		}
	} else {
		await sendmsg(805);
		// clearInterval(timeInter)
		// timeInter = setInterval(function() {
		// 	console.log("打印了setInterval");
		// 	sendmsg(805);
		// }, 60000);
	}
	// #endif
};
// 发送至EMU
async function sendmsg(e) {
	if (!socket.TCPSocket) {
		let res = await socket.initwifi()
		if (res.code !== 100) {
			return
		}
	}
	if (!wifiinfoTwo) {
		return
	}
	let tcpmsg = {
		"frameType": e,
		'sn': wifiinfoTwo
	}
	let res = await socket.sendmsg(tcpmsg);
	console.log(res)
	if (res && res.msg) {
		if(e=='805'||e==805){
			
			uni.setStorageSync('emu805',res)
			console.log(res.msg,"805---------------+++++++++++++");	
			// 读参数
			let invData = res.msg;
			let all=0;
			invData.invData.map(v=>{
				all+=v.data.acTempPower
			})
			// this.$nextTick(function(){
				let time=getCurrentTimer();
				// 获取发电功率本地缓存
				let perCentArr=uni.getStorageSync('perCentArr')||'';
				let timeOne=new Date();
				// 获取今天日期
				let today=parseTime(timeOne,'{y}-{m}-{d}');
				// 是否存在本地缓存
				if(perCentArr){
					// 日期是否是同一天
					if(perCentArr.time==today){
						perCentArr.data.push([time,all.toFixed(3)]);
					}else{
						perCentArr={
							time:today,
							data:[[time,all.toFixed(3)]]
						}
					}
				}else{
					perCentArr={
						time:today,
						data:[[time,all.toFixed(3)]]
					}
				}
				uni.setStorageSync('perCentArr',perCentArr);
				let storageUpdate= store.state.storageUpdate;
				store.commit('setStorageUpdate',!storageUpdate);
			// })
		}else{
			uni.setStorageSync('emu807',res)
		}
		
	}
}

更多推荐