在C#中格式化输出

时间:2013-07-05 08:22:36

标签: c# get position

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

1 个答案:

答案 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}之前命令。