Прирывания при связи по Ком Порту.

werxes
Offline
Зарегистрирован: 24.06.2013

Есть Шаговик -> Ардуино -> Win Приложение.

В программе указывается сколько шагов сделать, отправляться команда. Адушка выполняет. Все работает.

Задача во время выполнения отправить другую команду, например остановить.

К сожалению Адушка, за новую команду не возьмется пока текущею не выполнит(Я понимаю что Адушка работает последовательно с командами, и не имеет понятия поточности, хотя в нете есть много примеров). Кто подскажет в каком направление копать?

#include <Messenger.h>
#include <Stepper.h>

Messenger message = Messenger();

#define motorSteps 64   
#define motorPin1 2
#define motorPin2 4
#define motorPin3 5
#define motorPin4 3
#define Led1 6
#define Led2 7
#define LedTEST 13

int incomingByte;

int steps;
int LedOn = 0;


Stepper myStepper(motorSteps, motorPin1,motorPin2, motorPin3, motorPin4);

void setup() {
    Serial.begin(9600);
    message.attach(messageCompletedString);
    pinMode(LedTEST, OUTPUT);
}

void messageCompletedString() {
   if ( message.checkString("f") ) {
         steps = message.readInt();
         myStepper.step(steps);
      }
  }
  if (message.checkString("b")) {
      steps = message.readInt();
        if ( message.checkString("s") ) {
          steps = message.readInt();
          myStepper.step(-steps);
        }
  }
  if (message.checkString("s")) {  
        //myStepper.stop = 1;
        if (LedOn ==0 ){
          digitalWrite(Led1, HIGH);
          LedOn = 1;
        }
        else{
          digitalWrite(Led1, LOW);
          LedOn = 0;
        }
     }
} // end Void

void loop() {
    while ( Serial.available( ) ) message.process(Serial.read( ) );
}

Команда B - крутим моторчик в перед

Команда F - крутим моторчик в назад

Команда S - Зажигаем светодиод.

Пример задачи при выполнен текущий команды(крутить мотор), зажечь/выключить Диод.

 

maksim
Offline
Зарегистрирован: 12.02.2012

Волшебное слово - AccelStepper.

DeN-iZ
Offline
Зарегистрирован: 04.04.2013

werxes, а в какой программе вы писали код для Winows?Если не трудно выложите полный код. Я сейчас пишу программу управления соленоидами и датчиками температуры /давления, и возникли проблемы с непрерывным чтением порта. Ищу подсказки в разных примерах!)