2013-07-05 7 views
-1
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(); 
      } 

     } 
    } 
} 

위의 내용은 스테퍼 모터의 현재 위치를 나타내는 코드입니다. 아래는 내 출력에 대한 링크입니다. 그러나 나는 그것을 숫자로 표현할 수 없다. 여기C#의 출력 형식 지정

은 다음과 같습니다 Manual controler for stepper motor (page 28) 여기

가 출력된다 Picture of my output

+0

스테퍼 모터 SDK 공급 업체에 문의하십시오. 다른 사람들이 말할 수있는 방법이 없습니다. 아마 당신은'sp'가 무엇인지, SDK/API가 무엇인지, 어떤 매뉴얼이 모터와 함께 왔는지 설명 할 수 있습니다. – CodeCaster

+1

허, 허, 허 (Beavis and Butthead style)'POS' ... :-) 더 진지한 점은 무엇이고 어디서'sp'인가? 일부 StreamReader? 당신은 도서관을 사용하고 있으며 어떤 도서관입니까? 우리는 더 많은 코드를 필요로한다. – Belogix

답변

4

당신은 과다 추정 직렬 포트의 속도를 상당히있어;

sp.Write("POS;");     // Writes the data to the serial port 
string msg = sp.ReadExisting(); // Immediately reads already available data 

ReadExisting는 : 스트림 및하여 SerialPort 객체의 입력 버퍼 모두 인코딩에 기초하여, 모든 가능한 바이트를 즉시 읽어. 당신이 ReadExisting를 호출 할 때

는 즉시 연결된 장치에도 POS 명령을받은 아마 훨씬 전에 시리얼 포트 버퍼에서 이미 이다 데이터로 돌아갑니다.