2013-07-05 2 views
0

Я хочу получить положение своего двигателя, используя команду «POS;», но я получаю этот вывод «a ⌂ ▲ yI ° y», что с этим, если я могу получить номера? Затем время от времени я получаю пустой ответ. Меня спросили, что для выхода через последовательный порт требуется некоторое время. Что я должен добавить в свой код, чтобы подождать, пока я не получу полный вывод, чтобы показать?Выход для формирования C# и SerialPort

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(); 
      } 

     } 
    } 
} 

ответ

0

Просто добавьте Thread.Sleep(50) betwen Отправлять писание и команду чтения. 50 миллисекунд должно быть достаточно, если вы не пробуйте больше времени.

//Do something 

    sp.Write("POS;"); 

    Thread.Sleep(50); 

    string msgPos = sp.ReadExisting(); 

    //Do something else 

Я не могу найти любую команду POS; в руководстве вы публикуемую. Вы имеете в виду FBK на стр. 15?

+0

Привет, Майкл. Моя ошибка. Я обновляю новое руководство (стр. 28 команда POS;). Если вы получаете позицию через FBK; это будет хорошо также :) – Jurkov

Смежные вопросы