2016-03-29 11 views
-2

Visual Studio 2015を使用してC#コードを作成し、コントローラに機能を送信した後、シリアル接続(RS232)を介してコントローラからデータを受信します。さて、私はArdino unoにC#コードをアップロードしたいと思います。どのように私はこれを行うことができますか? (アルドゥイーノを使用する新しいイム)Arduino UnoでC#コードを実装する方法はありますか?

マイコード:動作しません

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Linq; 
using System.Text; 
using System.Threading; 
using System.IO.Ports; 
using System.IO; 
using System.Net; 





namespace serialreadwrite 
{ 

    class Program 
{ 
    static void Main(string[] args) 
    { 
     Program p = new Program(); 

     p.method3(); 
    } 

    private void method3() 
    { 
     SerialPort _serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One); 

     _serialPort.Handshake = Handshake.None; 
     _serialPort.ReadTimeout = 10000; 
     _serialPort.WriteTimeout = 10000; 
     _serialPort.RtsEnable = true; 
     _serialPort.DtrEnable = true; 
     _serialPort.Open(); 

     int command = 0; 

     while (true) 
     { 

      SendData(ref command, _serialPort); 

      if (command == 100) 
      { 
       Thread.Sleep(2000); 

       _serialPort.Open(); 
       command = 1; 
      } 

     } 

    } 

    public void SendData(ref int temp2, SerialPort _serialPort) 
    { 
     try 
     { 

      string c = Convert.ToString(temp2); 
      byte[] array_out = Encoding.ASCII.GetBytes(c); 
      _serialPort.Write(array_out, 0, array_out.Length); 
      byte[] array_out2 = new byte[1]; 
      array_out2[0] = 0xD; 
      _serialPort.Write(array_out2, 0, array_out2.Length); 

      _serialPort.Write(array_out, 0, array_out.Length); 
      _serialPort.Write(array_out2, 0, array_out2.Length); 

      int reader = 0; 
      string xstring = string.Empty; 
      while (true) 
      { 
       reader = _serialPort.ReadByte(); 
       char xchar = Convert.ToChar(reader); 

       if (xchar == '\r') 
       { 
        if (ProcessLine(xstring, ref temp2) == true) 
        { 
         if (temp2 == 100) 
         { 
          _serialPort.Close(); 
         } 
         break; 
        } 

        xstring = string.Empty; 
       } 

       if (xchar != '\r') 
        xstring += xchar; 
      } 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex); 
     } 
    } 

    private Boolean ProcessLine(string line, ref int myCommand) 
    { 

     string time = Convert.ToString(DateTime.Now); 
     if (myCommand == 0) 
     { 
      myCommand = 1; 
      return true; 
     } 

     else if (line.StartsWith("Array V") && myCommand == 1) 
     { 
      string[] split = line.Split('='); 

      if (split.Count() > 1) 
      { 
       Console.WriteLine(String.Format(time + "\n" + "Array Voltage = {0}", split[1])); 
       myCommand = 2; 
       return true; 
      } 

      else 
      { 
       myCommand = 1; 
       return false; 
      } 
     } 
     else if (line.StartsWith("Array A") && myCommand == 2) 
     { 
      string[] split = line.Split('='); 

      if (split.Count() > 1) 
      { 
       Console.WriteLine(String.Format("Array Amps = {0}", split[1])); 
       myCommand = 3; 
       return true; 
      } 
      else 
      { 
       myCommand = 2; 
       return false; 
      } 

     } 

     else if (line.StartsWith("Auto") && myCommand == 3) 
     { 

      Console.WriteLine(line); 
      myCommand = 4; 
      return true; 
     } 

     else if (line.StartsWith("Motor V") && myCommand == 4) 
     { 
      string[] split = line.Split('='); 

      if (split.Count() > 1) 
      { 
       Console.WriteLine(String.Format("Motor Volt = {0}", split[1])); 
       myCommand = 5; 
       return true; 
      } 
      else 
      { 
       myCommand = 4; 
       return false; 
      } 
     } 
     else if (line.StartsWith("Motor A") && myCommand == 5) 
     { 
      string[] split = line.Split('='); 

      if (split.Count() > 1) 
      { 
       Console.WriteLine(String.Format("Motor Amps = {0}", split[1])); 
       myCommand = 6; 
       return true; 
      } 
      else 
      { 
       myCommand = 5; 
       return false; 
      } 
     } 
     else if (line.StartsWith("Max") && myCommand == 6) 
     { 
      string[] split = line.Split('='); 

      if (split.Count() > 1) 
      { 
       Console.WriteLine(String.Format("Max Motor = {0}", split[1])); 
       myCommand = 7; 
       return true; 
      } 
      else 
      { 
       myCommand = 6; 
       return false; 
      } 
     } 
     else if (line.StartsWith("Motor R") && myCommand == 7) 
     { 
      string[] split = line.Split('='); 

      if (split.Count() > 1) 
      { 
       Console.WriteLine(String.Format("Motor RPM = {0}", split[1])); 
       myCommand = 8; 
       return true; 
      } 
      else 
      { 
       myCommand = 7; 
       return false; 
      } 
     } 

     else if (line.StartsWith("Sn") && myCommand == 8) 
     { 

      Console.WriteLine(line); 
      myCommand = 9; 
      return true; 
     } 

     else if (line.StartsWith("SM") && myCommand == 9) 
     { 

      Console.WriteLine(line); 
      // Thread.Sleep(5000); 
      myCommand = 1; 
      return true; 
     } 

     else if (line.ToLower().Contains("no action")) 
     { 
      myCommand = 100; 
      return true; 
     } 

     return false; 

    } 
} 

}

+2

あなたのC#の場合プログラムは** mono **と互換性があり、Googleで見つけられるチュートリアルに従ってください。 –

+0

あなたの現在のコードを投稿するのに役立ちますか? – LaneL

+0

@LaneLコード掲載! – ImaNoobAtProgramming32

答えて

1

... ArduinoのはC \ C++を使用しています...基本的なプロセスは、と非常に異なっていますC#コード....マイクロコントローラはまずパラメータを初期化するためのセットアップ機能を実行し、入力ピンからの受信データを「リッスン」し、その出力ピンにデータを送信するループを連続的に実行します..... Arduino Language Reference ..... https://www.arduino.cc/en/Reference/HomePage

ダウンロードthe Ardu井野ソフトウェア(アルドゥイーノへの書き込み\アップロードコード用IDE)... https://www.arduino.cc/en/Main/Software

私もSO上の以前の質問への回答を選択することの重要性に関するいくつかの更なる読書を提案するかもしれない... https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work..%E2%80%8C%E2%80%8B

関連する問題