2013-09-16 2 views
3

У меня есть приложение, которое позволяет обмениваться сообщениями, и я пытаюсь отправить строку со специальными символамиОтправить специальные символы в последовательный порт

string my_str = "isto não está a funcionar! (pt)"; 
comPort1.Write(my_str); 

Но я получаю isto n?o est? a funcionar! (pt).

Я попытался поставить comPort1.Encoding = Encoding.UTF8;, но он пока не работает. Я пробовал разные кодировки.

+2

Как и где вы получите упомянутый выход? Правильно ли кодировка установлена? – x29a

+0

Вам необходимо поместить эту кодировку как на отправителя, так и на приемник. Если приемник считывает байты и преобразует их в строку, вам нужно использовать 'Encoding.Utf8.GetString', а не' Encoding.ASCII.GetString'. –

+0

@ x29a Я создал приложение для обмена сообщениями. Этот вывод имеет кодировку по умолчанию (ASCII?). Если я использую 'comPort1.Encoding = Encoding.UTF8;' Я получаю то же самое, но '?' - это другой символ – mafap

ответ

4

Если вы записываете закодированные байты вашей строки в порт, они будут отправлены правильно. Этот кусок кода будет делать трюк для вас:

string my_str = "isto não está a funcionar! (pt)"; 
byte[] my_bytes = System.Text.Encoding.UTF8.GetBytes(str); 
comPort1.Write(my_bytes, 0, my_bytes.Length); 
+0

Спасибо, но у меня сейчас это работает, как я сказал в своем последнем комментарии :) – mafap

+0

@mafap да, вы правы, я didn ' t читать все комментарии;) – arianoo

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