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