利用thread.wait(id,timeout)超时实现检测串口数据返回
By
admin
at 2019-03-08 • 0人收藏 • 1586人看过
对于串口调试, 之前利用了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();登录后方可回帖