2013-06-29 41 views
0

我有這個來自UIRobot的控制器。這裏是手冊:enter link description here 我想編寫軟件來控制它在C#中。UIRobot控制器和C中的程序#

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO.Ports; 

namespace hhh 
{ 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      string ot = "Port je otvoreny"; 
      string za = "Port je zavrety"; 
      string COM = "COM1"; 
      string command = "ENABLE"; 

      SerialPort sp = new SerialPort(COM, 9600); 
      sp.Open(); 

      if (sp.IsOpen) 
      { 
       Console.WriteLine(ot); 
       sp.Write(command); 
       sp.ReadLine(); 
      } 

      else 
      { 
       sp.Write(za); 
      } 

      Console.ReadKey(); 
     } 
    } 
} 

在手冊中是命令ENABLE來初始化控制器,但它不能在我的代碼中工作。我如何發送命令或我犯了什麼錯誤?


我學到了一些新東西,所以這裏是更新我的代碼和新問題。 我想要接收電機的位置。有命令「POS」它必須給我的價值,但我得到的問號(?)而不是數字值的消息框。爲什麼?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.IO.Ports; 

namespace UIRFocuser 
{ 
    public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
     enable.Enabled = true; 
     disable.Enabled = false; 
     zero.Enabled = false; 
     increase.Enabled = false; 
     inc10.Enabled = false; 
     decrease.Enabled = false; 
     dec10.Enabled = false; 
     fbk.Enabled = false; 
    } 
    private void enable_Click(object sender, EventArgs e) 
    { 
     sp.PortName = "COM1"; 
     sp.BaudRate = 9600; 
     int max = -7000; //max position motor 
     int min = 0; //min positio of motor 
     sp.Open(); 
     if (sp.IsOpen) 
     { 
      enable.Enabled = false; 
      disable.Enabled = true; 
      zero.Enabled = true; 
      increase.Enabled = true; 
      inc10.Enabled = true; 
      decrease.Enabled = true; 
      dec10.Enabled = true; 
      fbk.Enabled = true; 

      sp.Write("ENABLE;"); 
     } 
    } 

    private void disable_Click(object sender, EventArgs e) 
    { 
     if (sp.IsOpen) 
     { 
      sp.Write("OFFLINE;"); 
      sp.Close(); 
      enable.Enabled = true; 
      disable.Enabled = false; 
      zero.Enabled = false; 
      increase.Enabled = false; 
      inc10.Enabled = false; 
      decrease.Enabled = false; 
      dec10.Enabled = false; 
      fbk.Enabled = false; 
     } 
    } 

    private void zero_Click(object sender, EventArgs e) 
    { 
     sp.Write("POS0; SPD400;");   
    } 

    private void increase_Click(object sender, EventArgs e) 
    { 
     sp.Write("STP1000; SPD400;"); 
    } 

    private void inc10_Click(object sender, EventArgs e) 
    { 
     sp.Write("STP10; SPD400;"); 
    } 

    private void decrease_Click(object sender, EventArgs e) 
    { 
     sp.Write("STP-1000; SPD400;"); 
    } 

    private void dec10_Click(object sender, EventArgs e) 
    { 
     sp.Write("STP10; SPD400;"); 
    } 

    private void close_Click(object sender, EventArgs e) 
    { 
     if (sp.IsOpen) 
     { 
      sp.Write("OFFLINE;"); 
      sp.Close(); 
     } 

     Application.Exit(); 
    } 

    private void fbk_Click(object sender, EventArgs e) 
    { 
     sp.Write("POS;"); 
     string msg = sp.ReadExisting(); 
     MessageBox.Show(msg); 
    } 

} 
} 
+0

這需要作爲一個全新的問題來解析,您已經接受了關於此問題的答案。 –

回答

1

根據該文件,命令是「ENABLE;」你必須包括分號。因此,將您的代碼更改爲:

string command = "ENABLE;"; 
+0

你是對的吉姆。謝謝。 – Jurkov