2014-12-16 2 views
-2

일부 기존 시리얼 통신 코드를 리팩토링/업데이트하려고합니다. 나는이있어 :이 PortName이 존재하지 않는 이유는 무엇입니까?

private SerialPort cereal; 
private String receivedData; 

private FileXferLegacy() 
{ 
    cereal = new SerialPort("COM1", 9600); 
    cereal.PortName = "7727"; 
    cereal.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived); 
    // Is this just as well, as the elided part is grayed out above?: cereal.DataReceived += port_DataReceived; 
} 

을 ...하지만 ERR의 MSG "포트 '7727' 존재하지 않는다"는 무엇입니까 내가 연결하고 ping을 보내려고 할 때 :

public void SendDataContentsAsXML(string destinationPath, string XMLData) 
{ 
    byte[] stuff; 
    ExceptionLoggingService.Instance.WriteLog("Reached FileXferLegacy.SendDataContentsAsXML"); // <= This is written to the log file 
    cereal.Open(); 
    stuff = System.Text.UTF8Encoding.UTF8.GetBytes("PING" + "\n"); 
    cereal.Write(stuff, 0, stuff.Length); 
    stuff = System.Text.UTF8Encoding.UTF8.GetBytes(XMLData + "\n"); 
    cereal.Write(stuff, 0, stuff.Length); 
} 

7727은 기존 앱에서 성공적으로 사용 된 포트입니다.

콜론이 추가 된 것을보고 궁금한 점이 있는지 궁금합니다 - 왜 평범한 "7727"대신에 "7727 :"이 보이고 어떻게하면 이것이 실제로 문제가된다면 콜론이 추가 되었습니까?

답변

1

PortName은 포트 번호가 아닌 직렬 포트 이름을 나타 내기 때문입니다. 코드에서 당신은 그래서 COM1

cereal = new SerialPort("COM1", 9600); 

가 이미 PortName에 할당되고 당신의 SerialPort 개체를 만드는 것입니다. 다음 문장은 불필요하고 잘못 정의 된 것입니다.

+0

그래서 포트 (시리얼 포트의 이름이 아닌 데이터를 보낼 포트)를 어떻게 설정할 수 있습니까? 레거시 응용 프로그램은 7727을 사용하기 때문에이를 수행 할 수있는 방법이 있어야하지만 SerialPort 클래스에는 속성이 없습니다. –

+1

직렬 포트의 포트 번호와 같은 것은 없습니다. 직렬 포트는 단일 종단 간 연결 용이므로 포트 번호 개념이 없습니다. 그것은 TCP/UDP 연결을위한 것입니다. –

관련 문제