Подготовка массива данных или строки для передачи в 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]); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д