0

我有这个来自 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);
    }

 }
}
4

1 回答 1

1

根据该文档,命令是“启用; ”您必须包含分号。因此,将您的代码更改为:

string command = "ENABLE;";
于 2013-06-29T19:02:16.253 回答