Задача: Щелкать релюшками, которые подключены к ардуино, которое подключено к компьютеру, через программу на компьютере. Т.е. жмем кнопку в программе - реле включилось и т.д. При инициализации программа читает из ардуино количество реле и создает в окне соответствующее количество кнопок. Захотелось надписи кнопок тоже хранить в скетче, ибо ну будет не много и для разных приложений разные. Т.е. в скетче правим количество кнопок, надписи и вперед. Но вот незадача IDE работает с utf-8. Пытался включить внешний редактор, и писать в нем, не помогло. Попробовал indexOf - тоже не помогает. Вообще может кому-то удалось как-то разобрать или преобразовать строку написанную в скетче по русски. Т.е. хочется чего-то типа String s="Тут чего-то"; print_converting_to_serial(s); Где print_converting_to_serial преобразует utf-8 в ascii и пишет ее в Serial.
Решил сделать так: const wchar_t rele_names[4][20] = {L"СветON",L"Second",L"tttt",L"light"};//Назвния кнопок далее пишем в порт следующим образом void charinserial(int j){ byte pr; for (int i=0;i<sizeof(rele_names[j])/2;i++){ if (rele_names[j]>255){ switch (rele_names[j]) { case 1025: pr=168; break; case 1105: pr=184; break; default: pr =rele_names[j]-848; } } else pr=rele_names[j]; if (pr!=0) Serial.write(pr); } Если смотреть монитор последовательного порта в ардуино IDE то все ок. Но вот здесь: String^ rele::getBoxName(int i){ array<unsigned char>^ b1 = {i,127}; arduino->Write("name"); arduino->Write(b1,0,2); Sleep(30); return rele::arduino->ReadExisting(); } почему-то вместо русских букв получаются вопросы. Возможно как-то локаль нужно указать?
Жалко что никто не помог советом. Проблему решил следующим образом Со стороны Ардуино Код (Text): String rele_names[] = {"СветON","Second","tttt","light"};//Назвния кнопок void charinserial(int j){ Serial.print(rele_names[j]); } Со стороны компьютера Код (Text): rele::rele(){ rele::is=false; rele::arduino = gcnew System::IO::Ports::SerialPort(); rele::arduino->Encoding = gcnew UTF8Encoding(); } String^ rele::getBoxName(int i){ array<unsigned char>^ b1 = {i,127}; arduino->Write("name"); arduino->Write(b1,0,2); Sleep(30); return rele::arduino->ReadExisting(); }