我正在使用m2mqtt。
我的程序是一个遥控器,可以打开和关闭露台盖百叶窗
我正在尝试编写预设功能。按一个按钮,系统中的所有电机都将进入预设位置。
我一直在研究几种方法,我想到了一个我喜欢的,我只是不知道它是如何工作的。
----设置----
我想做的是让马达朝正确的方向移动。然后锁定主线程直到电机完成(类似)
private bool flag = false;
private void presets ()
{
flag = true;
-----
code to get motors moving in right direction
-----
client.MqttMsgPublishReceived -= regularMessagesReceive
client.MqttMsgPublishReceived += presetMessagesReceive
while(flag)
{
}
client.MqttMsgPublishReceived -= presetMessagesReceive
client.MqttMsgPublishReceived += regularMessagesReceive
}
void presetMessagesReceive(object sender, MqttMsgPublishEventArgs e)
{
//incoming messages indicate all motor positions
if (allMotorsInPosition)
{
flage = false; //when all motors have reached their preset positions
}
}
在mqtt接收消息线程中将标志更改为false会在主线程中释放while循环?????????
你可能会问我为什么要锁定所有东西......我不能用遥控器上的其他按钮让它们混淆系统。所以我要么必须启用= false所有这些,要么只是占用线程直到预设通过