下面你可以看到我的程序输出。当我的设备开始启动时,通过串口我发送serialport1.write(“\ n”);而且我在自动引导程序中名列前茅。那么我必须用serialport1.write命令发送三个命令。如果线程在执行命令之前在命令之前休眠但我在命令完成后看到结果。我的意思是如果我在命令之前1秒睡觉了线程,对于3个命令我在3秒后看到richtextbox中的结果。为什么?有没有其他好的方法来执行命令?我的代码如下。
代码:
_data = _serialPort.ReadExisting();
if (_data.StartsWith("Hit"))
{
Thread.Sleep(1000);
_serialPort.Write("\n");
Thread.Sleep(200);
_serialPort.Write("set moviargs...\n");
Thread.Sleep(200);
_serialPort.Write("saveenv\n");
Thread.Sleep(200);
_serialPort.Write("boot\n");
}
输出:
按任意键停止自动引导:3 2 1 0
SMDKV210#set moviargs“setenv bootargs console = ttySAC2,115200 smsc95xx.macaddr = 00:09:DF:90:00:03"
SMDKV210#saveenv
将环境保存到SMDK可启动 设备...
完成
SMDKV210 #boot
答案 0 :(得分:0)
你的UI不会在Thread.Sleep中更新。
在每次“睡眠”调用之前添加一些Application.DoEvents步骤以更新UI。 (或运行代码与后台线程上的串口通信)
Application.DoEvents调用应该处理像screenupdate这样的“等待”事件,但也会尝试启动按钮点击。你必须添加一种机制来禁用按钮点击(只需禁用按钮)。