3
SerialPort.Write (String)를 사용하여 직렬 포트에 문자열을 쓰려고합니다. 지금까지 나는 그것을 따라 해보겠습니다SerialPort.Write (String)를 사용하여 직렬 포트에 문자열을 쓰는 방법
생성자에서 직렬 포트 객체를 인스턴스화합니다. EDIT : 포트 매개 변수를 설정하면 문제가 해결되었습니다.
public CSerialPort()
{
this._serialPort = new SerialPort("COM6",1200,Parity.None,8,StopBits.One);
this._serialPort.DataReceived += OnSerialPortDataReceived;
}
나는 포트를 엽니 다
public void OpenSerialPort()
{
try
{
_logger.DebugFormat("Trying to open Serial Port: {0}", this._serialPort.PortName);
this._serialPort.Open();
this.PortIsOpen = true;
}
catch (UnauthorizedAccessException ex)
{
_logger.DebugFormat("Trying to open Serial Port: {0}", ex);
}
catch (ArgumentOutOfRangeException ex)
{
_logger.DebugFormat("Trying to open Serial Port: {0}", ex);
}
catch (ArgumentException ex)
{
_logger.DebugFormat("Trying to open Serial Port: {0}", ex);
}
catch (InvalidOperationException ex)
{
_logger.DebugFormat("Trying to open Serial Port: {0}", ex);
}
}
을 그리고 난 직렬 포트를 통해 문자열의 내용을 보내려고 : 문자열의 내용 인 경우
public void WriteToSerialPort(string writeBuffer)
{
this._serialPort.Write(writeBuffer);
}
:
this._serialPort.WriteToSerialPort("ABC");
내 문제는 수신자가 (직렬 포트 모니터링 소프트웨어가있는 다른 PC) "ABC"를받지 못합니다. 내가받는 것은 ASCII 문자 코드 254 인 "þ"입니다.
인코딩 속성을 사용 가능한 모든 인코딩으로 변경하려고 시도했지만 도움이되지 않았습니다.
누구나 직렬 포트 클래스를 사용하여 직렬 포트에 문자열을 보내려면 무엇을 할 수 있습니까? 나는 무엇을 놓치거나 잘못 이해 했습니까? 사용
다른쪽에 예상되는 문자열의 종류를 정의해야합니다 (ASCII 문자열 등). 끝에는 null이 포함되거나 그렇지 않습니다. 코드에 전송 속도와 같은 포트 설정이 없습니다. 다른 포트가 다른 포트 매개 변수로 작동하면 결과는 정의되지 않습니다. –
Alex, 다른 쪽은 ASCII 문자열이 필요하거나/기다리고 있습니다. 매개 변수를 설정하고 시도해 보겠습니다. THX – ck84vi
문자열 인코딩 설정에 의존하지 않는'SerialPort.Write (Byte [], Ini32, Int32)'오버로드를 사용하는 것이 더 좋습니다. 다른 측면 요구 사항에 따라 바이트 배열을 준비하십시오. –