我是靠谱客的博主 美丽金鱼,最近开发中收集的这篇文章主要介绍在基于Node.js的IoT框架Zetta中实现可变间隔发送数据,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


Zetta (zettajs github)是一个基于Node的IoT框架,利用zetta 可在树莓派等开发板上实现对于传感器数据的封装、发送和接收。

一般情况下,传感器会以一定的间隔向数据接收端(server)发送数据。这个一定间隔更新数据的操作一般使用setInterval()函数实现:

setInterval(() => {
		 
 	this._driver.readData(counter).then((result) => {
     		stream.write(result);
     		this.value = result.value;
     		this.result = {'value':this.value};
     		console.log('value: ', this.value);
   	},function(err) {
       		console.log(err);
			});
}, this.interval);

但是如果需要以变化的间隔发送数据,就不能使用setIntervalI()函数了,可以使用递归的调用一个含有setTimeout()函数的方法来实现可变间隔的数据发送:

setTimeout(()=>{
			this.setSendingData(this.sensor_data.length, 0, stream, killPortError);
		}, 300)

mock_sensor.prototype.setSendingData = function(dataLength, index, stream, killPortError) {
	console.log('index',index);

	if(index < dataLength) {
		stream.write(this.sensor_data[index]);
		this.value = this.sensor_data[index].value;
		this.result = {'value': this.value};
		console.log('value', this.value);
		setTimeout(()=>{
			this.setSendingData(dataLength, index + 1, stream, killPortError);
		}, this.interval);
	}else if(index == dataLength) {
		this.value = 'end';
		this.result = {'value':this.value};
		console.log('value: ', this.value);
		setTimeout(()=>{
			this.setSendingData(dataLength, index + 1, stream, killPortError);
		}, 5000);
	}
	else {
		//终止进程
		var stop_command = 'start "" "' + this.project_path + '/edge/utils/kill_process_with_port" ' + this.port;
		console.log('killPortError', killPortError);
		if(!killPortError)
		{
			console.log('killPortError_process', killPortError);
			process.exec(stop_command, function(err, stdout, stderr) {
				console.log('Command Error: ', err);
				console.log(stdout);
				console.log('STD Error: ', stderr);
				if(err!=null)
				{
					killPortError = true;
					console.log('killPortError_true', killPortError);
				}
			});
		}
	}
}

在setSendingData()函数中有三个分支,第一个分支为以可变间隔正常发送数据;第二个分支为预定数据发送完毕,发送'end'标记告知接收方发送完毕;第三个分支为调用批处理文件终止当前进程。

最后

以上就是美丽金鱼为你收集整理的在基于Node.js的IoT框架Zetta中实现可变间隔发送数据的全部内容,希望文章能够帮你解决在基于Node.js的IoT框架Zetta中实现可变间隔发送数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部