【问题标题】:C# and SerialPort formatting outputC# 和 SerialPort 格式化输出
【发布时间】:2013-07-05 11:30:33
【问题描述】:

我想通过使用命令“POS;”来获取电机的位置,但是我得到了这个输出“a ⌂▲ yI° y”,如果我能得到数字,那该怎么办? 然后我不时得到空答案我被回答说需要一些时间才能通过串行端口获得输出。我必须添加到我的代码中才能等到我得到完整的输出显示?

Manual controller(更新手册)

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            SerialPort sp = new SerialPort();
            sp.PortName = "COM1";
            sp.BaudRate = 9600;
            sp.Open();

            sp.Encoding = System.Text.Encoding.GetEncoding(28591);

            if (sp.IsOpen)
            {
                sp.Write("ENA;");

                sp.Write("POS;");

                string msgPos = sp.ReadExisting();
                Console.WriteLine(msgPos);

                sp.Write("OFF;");
                sp.Close();
                Console.ReadKey();
            }

        }
    }
}

【问题讨论】:

    标签: c# output


    【解决方案1】:

    只需在发送写入和读取命令之间添加Thread.Sleep(50)。如果不尝试更长的时间,50 毫秒应该足够了。

        //Do something
    
        sp.Write("POS;");
    
        Thread.Sleep(50);
    
        string msgPos = sp.ReadExisting();
    
        //Do something else
    

    我在您发布的手册中找不到任何命令POS;。您是指第 15 页的 FBK 吗?

    【讨论】:

    • 你好迈克尔。我的错。我更新了一本新手册(第 28 页命令 POS;)。如果您通过 FBK 获得位置;也会好的:)
    猜你喜欢
    • 2017-02-10
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多