2014-09-01 4 views
-9

MS의 SerialPort.Write 설명서에 기본적으로 SerialPort는 ASCIIEncoding을 사용하여 문자를 인코딩합니다. ASCIIEncoding은 127보다 큰 모든 문자를 (char) 63 또는 '?'로 인코딩합니다. 해당 범위의 추가 문자를 지원하려면 인코딩을 UTF8Encoding, UTF32Encoding 또는 UnicodeEncoding로 설정하십시오.SerialPort 수신 ?? 문자 인코딩이 올바르지 않습니다.

아무도 그 옵션 중 하나를 내 시리얼 포트의 인코딩을 설정하는 방법을 알 수 있습니까 ??

+2

SerialPort.Write 메서드 및 설명서를 찾았으며 SerialPort 클래스의 모든 속성을 살펴 보지 않으셨습니까 ?? 또한 게시 한 내용은 이미 답변입니다. 다시 읽으십시오! 힌트 : 인코딩 설정 ... – Reniuz

+0

http://stackoverflow.com/a/18986941/891715 – Arie

+0

나는 어떻게 인코딩 유형이 있는지 알고 싶었습니다. 당신은 내 질문을 이해하지 않는다 –

답변

3

System.IO.Ports.SerialPort.Encoding 속성 사용 방법은 어떻습니까?

이 같이

:

Encoding enc = new UTF8Encoding(true, true); 
YourPort.Encoding = enc; 
+0

거의, 나는 이것을한다 : serialPort1.Encoding = Encoding.GetEncoding ("Windows-1252"); –

+0

@RuiOliveira 그리고 작동합니까? – mg30rg

+0

@ RuiOliveira 또한 내가 당신이라면 W1252를 신뢰하지 않을 것입니다. 지난 세기의 기술이며 고객이 적합하게 사용할 문자를 사용할 보증이 없습니다. UTF-8은 모든 유니 코드 문자를 처리 할 수 ​​있습니다. – mg30rg

2

대답은 당신이 당신의 질문에 포함 된 텍스트에 있습니다

이 범위에 추가 문자를 지원하기 위해, UTF8Encoding, UTF32Encoding, 또는 UnicodeEncoding에 Encoding을 설정합니다.

demonstrated here과 같은 Windows-1252와 같은 적절한 인코딩을 찾아서 적용하는 것이 가장 좋습니다.

+0

정확함, 알겠습니다. –

관련 문제