0

我正在编写一个简单的程序来在 C# 中移动步进电机。我过去在 C++ 方面有一些经验,但决定过渡,因为我必须自学一点 C++。

以前,我通过 PuTTY 使用串行命令控制电机(使用 Applied Motion ST5 步进控制器)。我的想法是,我可以通过打开正确的 COM 端口(工作正常,因为当我输入非工作端口号时崩溃)并发送一个字符串来使用 C# 发送相同的命令。但是,当我通过串行终端(FL1000,后跟回车,它告诉电机顺时针移动 1000 步)发送我一直在使用的相同命令的字符串时,电机什么也不做。WriteLine 应该是在这里使用的正确方法,因为它发送字符串然后返回,对吗?

有没有人看到任何明显的错误会使我的字符串无法进入控制器?

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

namespace ConsoleApp3
{
    class Program
    {
        static SerialPort comPort;
        static void Main()
        {
            //These values in the declared serial port match what my device manager says.
            comPort = new SerialPort("COM6", 9600, Parity.None, 8, StopBits.One);
            comPort.ReadTimeout = 5000;
            comPort.WriteTimeout = 5000;
            comPort.Open();
            //Pauses for a moment so that I can see the console otuput.
            System.Threading.Thread.Sleep(TimeSpan.FromSeconds(3));
            string command = "FL1000";
            Console.WriteLine("Moving Motor...");
            //Tells the controller to move the motor 1000 steps clockwise
            comPort.WriteLine(command);
            //confirms that the code made it past the comPort writeline
            Console.Write("Command Sent");
            //Pauses for a moment so that I can see the console output.
            System.Threading.Thread.Sleep(TimeSpan.FromSeconds(3));
        }

    }
}

我希望这会使电机移动 1000 步。我看到的唯一结果是我的“标记”出现在控制台上。程序无错误退出。

先感谢您!

4

1 回答 1

0

您的命令不包含回车或换行符。电机正在寻找其中之一以知道命令已完成。

我没有使用过他们的 ST5 系列电机,但他们携带的其他产品需要用回车符终止命令。尝试将您的消息更改为:

字符串命令 = "FL1000\r";

于 2018-12-31T20:07:44.967 回答