Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: VS2010 C# как сделать чтобы переменные, объявленные в Form1
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
smk
Есть окошко From1, содержащее переменную public String myMessage; и private Byte[] myBuffer = new Byte[65]; Как сделать так чтобы они были видны в других Form ? То же каксается и функций, описанных в Form1. Спасибо.
andrewlekar
Если формы в одном неймспейсе, то Form1.myMessage.
smk
Спасибо. Разобрался понемногу. Теперь проблема другая. Мне нужно строку из textBox, состоящую из 8 символов, сохранить в массив из 8 байт. Сейчас делаю это так:

Код
char [] jeton = new char[8];
String probel = "";
String numJeton = "";

numJeton = textBox1.Text + probel;
jeton = numJeton.ToCharArray();

отправляю на запись в устройство:

Код
form2.outputReportBuffer[2] = Convert.ToByte((SByte)jeton[0]);


и потом читаю:

Код
num_jeton = num_jeton + Convert.ToChar(form2.inputReportBuffer[i + 2]);

textBox1.Text = num_jeton;


С цифрами и латиницей проблем нет, а вот с кирилицей есть. Я так понимаю проблема связана со старшим битом, который в char всегда ноль и где-то у меня теряется с случае с кирилицей. Как правильно сделать чтобы и с кирилицей небыло проблем?

Оба буфера "Byte". Спасибо.
andrewlekar
Кириллица в C# вроде как по умолчанию в UTF8. Как Ваше устройство воспринимает UTF8? Или оно работает с другой кодировкой? CP1251? Если Ваше устройство работает с однобайтной кириллической кодировкой, то и перекодируйте шарпом UTF8 в CP1251 (или какая там у Вас) перед отправкой. У шарпа есть масса перекодировщиков в разные стороны, но для экзотических случаев может понадобиться и ручками перекодировать.
smk
Устройство получает и отправляет байты. Каким отправим таким и получим. Я так понимаю, что вопрос в том, каким получится байт при отправке или каким станет уже после получения. Устройство байт не модифицирует, только принимает, хранит и сообщает когда спросят.
andrewlekar
При отправке и получении тоже байты никто не должен менять. Ищите в коде, где неправильно перекодируете Char в Byte. В C# это разные вещи.
smk
Цитата(andrewlekar @ Feb 5 2013, 11:57) *
При отправке и получении тоже байты никто не должен менять. Ищите в коде, где неправильно перекодируете Char в Byte. В C# это разные вещи.

Я понимаю что разные вещи. А как правильно? Нужно строку из восьми символов сложить в массив Byte.
andrewlekar
Я обычно по вопросам конвертирования иду в гугл. Слишком много вариантов и нюансов чтобы их в ручную подбирать. Вот что гугл говорит по этому поводу:

Код
// Input string.
    const string input = "Dot Net Perls";

    // Invoke GetBytes method.
    // ... You can store this array as a field!
    byte[] array = Encoding.ASCII.GetBytes(input);


Однако лучше посмотреть отладчиком, что там за байты на самом деле получатся. Можно ещё поиграться с кодировками (вместо ASCII че-нить другое написать) - может найдётся более подходящий формат для передачи на ваши девайсы.

smk
Очень интересно. А как посмотреть отладчиком? Там даже отладчик есть оказывается....
_Артём_
Цитата(smk @ Feb 6 2013, 19:05) *
Очень интересно. А как посмотреть отладчиком?

Запустить программу на отладку - поставить точку прерывания в месте где меняется нужная переменная - навести курсор на переменную/добавить переменную в окно Watch и тп.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.