Member 13308214 Ответов: 2

Как хранить последовательные данные в массиве?


Здравствуйте, я вчера задал этот вопрос:
( Как мне получить последовательные данные в массив?[^] )
Hi, I am learning VB.net and I am having a difficulty understanding how to define an array.

What I have tried:

I have a microcontroller wich sends serial data to my VB.NET RS232 program.
My target is to store the serial data to an array and access each cell to use the data and modify it.
I know C but the syntax of .NET is different and I can't find support on this subject.
An example would help me a lot. thanks.

какой - то хороший парень мне очень помог, он мне сказал:
Use the SerialPort class: SerialPort Class (System.IO.Ports)[^] and the SerialPort.Read Method (Byte[], Int32, Int32) (System.IO.Ports)[^] will return an array of bytes.

To define an array in VB:
Hide   Copy Code
Dim myArray As Byte() = New Byte(99) {}


Что я уже пробовал:

Я все еще не понимал этого. Так я ему и сказал -
Hey, after long time of trying I still have difficulty to understand how to work with the functions.
Maby a code example for that subject will clear all.
I guess he still didn't saw it.

Если кто-нибудь еще также может помочь мне, пожалуйста, это будет здорово! спасибо.
с уважением.

2 Ответов

Рейтинг:
1

Richard MacCutchan

Да, он видел это, но вы забыли объяснить, в чем была ваша проблема. Если вы не понимаете, как использовать массивы, то вам следует пойти и посмотреть учебники dome по этому предмету и написать несколько примеров кода. Вы можете начать с Класс Массива (System)[^].


Рейтинг:
0

Jochen Arndt

Цитата:
Я знаю C, но синтаксис .NET отличается, и я не могу найти поддержку по этому вопросу.
Когда вы знаете C, подумайте о том, как это можно сделать в C:
char buf[BUF_SIZE];
fread(buf, 1, bytesToRead, fSerialHandle);

Если вы знаете, какую функцию использовать (если нет, то быстрое веб-исследование должно дать вам знать), ознакомьтесь с документацией: Метод SerialPort.Read (Byte[], Int32, Int32) (System.IO.Ports)[^].

Так что даже не зная об этом VB.NET (я никогда не пользовался им и написал свою последнюю базовую программу более 25 лет назад) соответствующий код был бы:
' Replace BUF_SIZE by the required size
Dim buf As Byte() = New Byte(BUF_SIZE)
mySerialPort.Read(buf, 0, bytesToRead)


Если вам нужен пример кода, поищите в интернете что-нибудь вроде "vb.net пример чтения последовательного порта". Большинство результатов будут обрабатывать чтение строк, но это не должно быть проблемой, когда вы уже знаете, как читать двоичные данные. Но примеры обычно показывают также, Как настроить последовательный порт.

Проблема с двоичными данными заключается в том, чтобы определить, сколько байтов нужно прочитать. Обычно вам приходится читать по байтам до тех пор, пока не будет прочитан определенный конечный код, или обрабатывать данные во время чтения, когда они содержат, например, поле длины.

Если ваш микроконтроллер отправляет новые строки с завершением строки, используйте Последовательный порт.Метод Readline (Системы.ИО.Порты)[^] вместо. Это делает обработку приема намного проще.