Страница 1 из 1

Передача массива чисел в Visual Studio

Добавлено: Чт дек 11, 2025 16:38:15
Andrew33
Добрый день!
Требуется передать с STM на ПК массив чисел (да хотя бы просто число)
HAL_UART_Transmit(&huart1, str3, strlen(str3), 100);} При передаче заранее прописанной строки все проходит и отображается в Visual Studio :

string vlag = serialPort1.ReadLine();
Invoke(new Action(() => { textBox3.Text = vlag; }));

Когда пытаюсь передать массив чисел (число) - ничего не приходит. Уже и так и сяк преобразовывал.
Может кто нибудь фрагмент рабочего кода показать как преобразовать массив uint_16 в строку для передачи.
Возможно это простой вопрос, но рабочего ответа пока не нашел

Re: Передача массива чисел в Visual Studio

Добавлено: Чт дек 11, 2025 17:25:13
linux_rulezz
Просто сериализовать и передавать в текстовом виде. Я все сериализую, отлично работает. Например, передача с МК и прием на ПК.
Массив можно передавать через запятую. Например, так:

Код: Выделить всё

arrsize=100500
array=1,2,3,4,...
В двоичном виде передаю лишь если скорость нужна, как, например, здесь.

// а за калокуб и маздай - однозначно минус в "карму"!

Re: Передача массива чисел в Visual Studio

Добавлено: Вт дек 16, 2025 15:42:34
Andrew33
ну так вроде разобрался. Но вот возник еще нюанс:
при приеме Termite отображает правильную последовательность, например : 52 03 de 03 de 00 52 03 52 03 da 02 da 02 da 02
А вот в VS приходит: 52 03 3f 03 00 3f 52 03 52 03 3f 02 3f 02 3f 02
То есть правильно доходят hex числа в которых не букв (d,e,a....). Какая причина тут может быть?

"минус" в карму ставить не обязательно. Я не программист и пользуюсь тем что есть

Re: Передача массива чисел в Visual Studio

Добавлено: Чт дек 18, 2025 09:07:42
Andrew33
Разобрался.
При использовании Readline искажались байты с 1 в старшем бите (видимо за отрицательные принимались)
Пришлось использовать serialPort1.Read