реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> VS2010 C# как сделать чтобы переменные, объявленные в Form1, были видны в Form2, открываемой кнопкой в Form1 ?
smk
сообщение Feb 2 2013, 06:48
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Есть окошко From1, содержащее переменную public String myMessage; и private Byte[] myBuffer = new Byte[65]; Как сделать так чтобы они были видны в других Form ? То же каксается и функций, описанных в Form1. Спасибо.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Feb 4 2013, 05:05
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Если формы в одном неймспейсе, то Form1.myMessage.
Go to the top of the page
 
+Quote Post
smk
сообщение Feb 4 2013, 18:57
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Спасибо. Разобрался понемногу. Теперь проблема другая. Мне нужно строку из 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". Спасибо.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Feb 5 2013, 05:32
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Кириллица в C# вроде как по умолчанию в UTF8. Как Ваше устройство воспринимает UTF8? Или оно работает с другой кодировкой? CP1251? Если Ваше устройство работает с однобайтной кириллической кодировкой, то и перекодируйте шарпом UTF8 в CP1251 (или какая там у Вас) перед отправкой. У шарпа есть масса перекодировщиков в разные стороны, но для экзотических случаев может понадобиться и ручками перекодировать.
Go to the top of the page
 
+Quote Post
smk
сообщение Feb 5 2013, 07:51
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Устройство получает и отправляет байты. Каким отправим таким и получим. Я так понимаю, что вопрос в том, каким получится байт при отправке или каким станет уже после получения. Устройство байт не модифицирует, только принимает, хранит и сообщает когда спросят.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Feb 5 2013, 09:57
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



При отправке и получении тоже байты никто не должен менять. Ищите в коде, где неправильно перекодируете Char в Byte. В C# это разные вещи.
Go to the top of the page
 
+Quote Post
smk
сообщение Feb 5 2013, 18:21
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(andrewlekar @ Feb 5 2013, 11:57) *
При отправке и получении тоже байты никто не должен менять. Ищите в коде, где неправильно перекодируете Char в Byte. В C# это разные вещи.

Я понимаю что разные вещи. А как правильно? Нужно строку из восьми символов сложить в массив Byte.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Feb 5 2013, 18:58
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Я обычно по вопросам конвертирования иду в гугл. Слишком много вариантов и нюансов чтобы их в ручную подбирать. Вот что гугл говорит по этому поводу:

Код
// 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 че-нить другое написать) - может найдётся более подходящий формат для передачи на ваши девайсы.

Go to the top of the page
 
+Quote Post
smk
сообщение Feb 6 2013, 17:05
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Очень интересно. А как посмотреть отладчиком? Там даже отладчик есть оказывается....


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 6 2013, 17:18
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



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

Запустить программу на отладку - поставить точку прерывания в месте где меняется нужная переменная - навести курсор на переменную/добавить переменную в окно Watch и тп.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2025 - 18:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01435 секунд с 7
ELECTRONIX ©2004-2016