利用thread.wait(id,timeout)超时实现检测串口数据返回

By admin at 2019-03-08 • 0人收藏 • 1499人看过

对于串口调试, 之前利用了while(获取长度)来判断接收数据, 导致一个问题, 就是假如数据没有返回,那么就会死等, 嗯, 我的写法问题, O(∩_∩)O

对于已经写好的程序,不想大动干戈, 于是在串口初始化的时候 ,先判断下数据发送有没有返回,如果超时了就认为串口没数据(即通信协议有问题)


下面是测试线程超时的一些代码:

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add(
button={cls="button";text="Button";left=135;top=317;right=323;bottom=419;z=1}
)
/*}}*/

import console
console.open()

winform.button.oncommand = function(id,event){
	
	var thid = thread.create(
		function( ... ){
			import win; 
			import console
			var i = 1;
			while(1){
				sleep(200)
				i++;
				console.log(i)
				if(i>=20){
					break;
				}
			}
			console.log("不能走到这...")
		}	
	)
	

	var ret = thread.wait(thid,1500)
	//超时了
	if(!ret){
		console.log("+++++++++")
		//强制中止线程
		thread.terminate(thid,0)
	}
}

winform.show() 
win.loopMessage();


登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...