using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
SerialPort sp = new SerialPort();
sp.PortName = "COM1";
sp.BaudRate = 9600;
sp.Open();
if (sp.IsOpen)
{
sp.Write("ENA;");
Thread.Sleep(1000);
sp.Write("POS;");
Thread.Sleep(1000);
string msgPos = sp.ReadExisting();
Console.WriteLine(msgPos);
sp.Write("OFF;");
sp.Close();
Console.ReadKey();
}
}
}
}
以上是获取步进电机当前位置的代码。 under是我输出的链接。但我不能把它格式化为数字。
以下是:Manual controler for stepper motor (page 28)
输出结果为:Picture of my output
答案 0 :(得分:4)
你大大高估了串口的速度;
sp.Write("POS;"); // Writes the data to the serial port
string msg = sp.ReadExisting(); // Immediately reads already available data
ReadExisting:根据编码,在SerialPort对象的流和输入缓冲区中读取所有立即可用的字节。
当您呼叫ReadExisting
时,它会立即返回已经在串口缓冲区中可用的数据,可能远在连接设备甚至收到{{1}之前命令。