从Arduino IDE到Visual Studio

时间:2015-05-25 20:45:18

标签: visual-studio arduino

我已经创建了一个Arduino项目,我在Arduino IDE中尝试过,它运行得很好,但现在我想将它添加到Visual Studio(我想为程序创建一个接口),当我试图这样做,我有18个错误。 Arduino中的大多数函数(如DigitalWrite(out,LOW)都无法识别)。

以下是目前的代码:

int out=12;

void send1(int);
void send0(int);

void A_On(void);
void A_Off(void);
void B_On(void);
void B_Off(void);
void C_On(void);
void C_Off(void);

void a_on(void);
void a_off(void);
void b_on(void);
void b_off(void);
void c_on(void);
void c_off(void);

String rec_ser="";

void printMenu(void);
int nr_rep=4;
int t=390; //microsecunde delay
int T=1100;

void setup()
{
pinMode(out, OUTPUT);
digitalWrite(out,LOW);
Serial.begin(9600);
Serial.println("RC ready");
printMenu();
}

void loop() 
{
while(Serial.available() >0)
  {
  char c=Serial.read();
  if(c!='\n')
    rec_ser+=c;
  else
    {
    if(rec_ser.indexOf("Aon")>=0)
      {
      rec_ser="";        
      Serial.println("Comanda primita: Aon");  
      A_On();
      }
    else if(rec_ser.indexOf("Aoff")>=0)
      {
      rec_ser="";  
      Serial.println("Comanda primita: Aoff");
      A_Off();
      }
    else if(rec_ser.indexOf("Bon")>=0)
      {
      rec_ser="";        
      Serial.println("Comanda primita: Bon");        
      B_On();
      }
    else if(rec_ser.indexOf("Boff")>=0)
      {
      rec_ser="";        
      Serial.println("Comanda primita: Boff");
      B_Off();      
      }
    else if(rec_ser.indexOf("Con")>=0)
      {
      rec_ser="";        
      Serial.println("Comanda primita: Con");  
      C_On();
      }
    else if(rec_ser.indexOf("Coff")>=0)
      {
      rec_ser="";
      Serial.println("Comanda primita: Coff");  
      C_Off();
      }
    else
      {
      rec_ser="";
      Serial.println("Comanda invalida!");  
      printMenu();
      }    
    }  
  }
}

void send0(int d)
{
digitalWrite(out,LOW);
delayMicroseconds(d);
digitalWrite(out,HIGH);
}

void send1(int d)
{
digitalWrite(out,HIGH);
delayMicroseconds(d);
digitalWrite(out,LOW);
}

void A_On(void)
{
send1(t);
send0(2*T);
send1(t);
send0(T);
send1(T);
send0(t);

for(int i=0; i<nr_rep; i++)
  a_on();

}  

void A_Off(void)
{
send1(t);
send0(2*T);
send1(t);
send0(T);

for(int i=0; i<nr_rep; i++)
  a_off();

}

void printMenu(void)
{
Serial.println("Comenzi valide: ");  
Serial.println("Aon");
Serial.println("Aoff");
Serial.println("Bon");
Serial.println("Boff");
Serial.println("Con");
Serial.println("Coff");
Serial.println();
}

void a_on(void)
{
send1(3*T);
send0(7*T);
send1(t);
send0(T);
send1(T);
}

void a_off(void)
{
send1(3*T);
send0(7*T);
send1(t);
send0(T);
send1(T);
send0(t);
}

void B_On(void)
{
send1(t);
send0(2*T);
send1(t);
send0(T);

for(int i=0; i<nr_rep; i++)
  b_on();
}

void B_Off(void)
{
send1(t);
send0(2*T);
send1(t);
send0(T);
send1(T);
send0(t);
send1(t);
send0(T);

for(int i=0; i<nr_rep; i++)
  b_off();
}

void C_On(void)
{
send1(t);
send0(2*T);
send1(t);
send0(T);
send1(T);
send0(t);
send1(t);

for(int i=0; i<nr_rep; i++)
  c_on();
}

void C_Off(void)
{
send1(t);
send0(2*T);
send1(t);
send0(T);
send0(2*T);
send1(t);
send0(T);
send1(T);
send0(t);
send1(t);
send0(T);
send1(T);
send0(t);
send1(t);
send1(t);
send0(2*T);
send1(t);
send0(T);
send1(T);
send0(t);
send1(t);
send0(T);

for(int i=0; i<nr_rep; i++)
  c_off();
}

void b_on(void)
{
send1(3*T);
send0(7*T);
send1(t);
send0(T);
send1(T);
send0(t);
}

void b_off(void)
{
send1(3*T);
send0(7*T);
send1(t);
send0(T);
send1(T);
send0(t);
send1(t);  
}

void c_on(void)
{
send1(3*T);
send0(7*T);
send1(t);
send0(T);
send1(T);
send0(t);
send1(t);  
}

void c_off(void)
{
send1(3*T);
send0(7*T);
send1(t);
send0(T);
send1(T);
}

2 个答案:

答案 0 :(得分:1)

为什么不尝试使用适用于Microsoft Visual Studio和Atmel Studio的Arduino IDE? http://www.visualmicro.com/

总结一下:

“Visual Micro是一个免费的Arduino编程插件,它使Microsoft Visual Studio 2008-2013和Atmel Studio 6.2成为完整的Arduino编程环境.Visual Micro确保您的草图代码保持与Arduino Ide完全兼容,并且是唯一的Ide在一个Ide中支持所有Arduino版本。“我认为这是edy 2006使用MS Visual Studio使代码工作的最简单方法。“

这可能会解决你的问题。

祝你好运!

答案 1 :(得分:0)

如果你想“创建一个界面”我假设你想为一台PC创建一个界面。

那么......为什么需要包含arduino代码?您只需要创建一个表单,例如一些按钮,然后,当您按下其中一个按钮时,您只需通过串行接口发送"Aon"而不是"Aoff"或其他命令

您不需要整个arduino代码。