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

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

对于串口调试, 之前利用了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可以快速开发上位机,本站主要记录了学习过程中遇到的问题和解决办法及aardio代码分享

这里主要专注于aardio学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.

Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
本 站 主 站:Stm32cube中文网
Sciter中文在线文档Sciter在线学习文档
空间赞助:才仁机械
打赏本站
Loading...