Подготовка массива данных или строки для передачи в Serialport - C#
Формулировка задачи:
Привет ребята!
Я не являюсь программистом, чисто любительски пишу для собственных нужд от редкого случая к случаю.
Суть проблемы:
Имеется несколько переменных типа byte и пара одномерных массивов данных тоже byte.
Нужно это добро все собрать в строгой последовательности, согласно протоколу и отправить в serialport.
Сегодня решил этот вопрос таким способом, оно работает, но мне не нравится.
А не нравится мне постоянное инкрементирование num_msg для того, чтобы записывать все элементы в определенной последовательности.
Нельзя ли как-нибудь проще решить этот вопрос (сборка сообщения)? Может string-ами, постоянно добавлять в конец новый элемент, но как?
Листинг программы
- //Собираю сообщение
- //_Passw - массив типа byte
- //data - то же массив byte
- //_OPT, _AddrD_L, AddrD_H и другие -это переменные типа byte
- //Msg - итоговый массив
- //len - количество элементов в итоговом массиве (его длина)
- //num_msg - указатель следующей позиции для записи в итоговом массиве
- int num_msg=0;
- int len = _Passw.Length + data.Length + 8; //8 - количество значений переменных типа byte в итоговом сообщении
- Msg = new byte[len];
- Msg[num_msg] =_OPT; //Нулевым элементом ставим значение переменной _OPT
- num_msg++;
- Msg[num_msg] = _AddrD_L; //И так далее
- num_msg++;
- Msg[num_msg] = _AddrD_H;
- num_msg++;
- Msg[num_msg] = _AddrS_L;
- num_msg++;
- Msg[num_msg] = _AddrS_H;
- num_msg++;
- for (int i=0; i<_Passw.Length; i++)
- {
- Msg[num_msg] = _Passw[i];
- num_msg++;
- }
- Msg[num_msg] =_Serv;
- num_msg++;
- Msg[num_msg] = _AddrH;
- num_msg++;
- Msg[num_msg] = _AddrL;
- num_msg++;
- for (int i = 0; i < _Data.Length; i++)
- {
- Msg[num_msg] = _Data[i];
- num_msg++;
- }
Решение задачи: «Подготовка массива данных или строки для передачи в Serialport»
textual
Листинг программы
- int len = _Passw.Length + data.Length + 8; //8 - количество значений переменных типа byte в итоговом сообщении
- var Msg = new List<byte>(len); // Здесь capacity передавать не обязательно, но так можно создать массив заранее правильной длинны, чтобы потом не пересоздавать новый с двойной длинной
- Msg.Add(_OPT); //Нулевым элементом ставим значение переменной _OPT
- Msg.Add(_AddrD_L); //И так далее
- Msg.Add(_AddrD_H);
- Msg.Add(_AddrS_L);
- Msg.Add(_AddrS_H);
- for (int i = 0; i < _Passw.Length; i++)
- {
- Msg.Add(_Passw[i]);
- }
- Msg.Add(_Serv);
- Msg.Add(_AddrH);
- Msg.Add(_AddrL);
- for (int i = 0; i < _Data.Length; i++)
- {
- Msg.Add(_Data[i]);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д