Доброго времени суток.
Суть : шаговый двигатель подключен к микрухе atmega, которая подключена к PC через интерфейс USART.
На компьютере написано приложение на C# , где 4 кнопки (вверх, вниз, вправо, влево). Нажимая на которые, контроллеру подаются байты: 1, 2, 3, 4. Необходимо , чтобы пока нажата кнопка (например вверх), комп посылал байт 1 постоянно на контроллер, т.е пока нажата кнопка- шаговик крутится.
Проблема: в функции, где нажимается кнопка, написал вечный цикл, который действует пока флаг == тру. Как только, отпускаем кнопку, флаг становится фолс, и нужно выйти из цикла, однако цикл продолжается, программа виснет, а шаговик крутится.
Как сделать правильно, не подскажете?
Вот код в C# (для контроллера всё сделано правильно 100% , поэтому выкладывать нет смысла)
void Button1MouseDown(object sender, MouseEventArgs e) //кнопка нажата
{
flag = true;
while(flag)
{
Port_Write(1); //посылаем 1 байт на контроллер
}
}
void Button1MouseUp(object sender, MouseEventArgs e) // кнопка отпущена
{
flag = false;
}