C#和SerialPort格式输出

问题描述 投票:0回答:1

我想通过使用命令“ 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个回答
0
投票

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

    //Do something

    sp.Write("POS;");

    Thread.Sleep(50);

    string msgPos = sp.ReadExisting();

    //Do something else

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

© www.soinside.com 2019 - 2024. All rights reserved.