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

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

对于串口调试, 之前利用了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();


登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
黑猫Aar教程网:简码编程
C大Aardio论坛:Aar爱好者论坛
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...