Member 12659926 Ответов: 3

Как увеличить скорость ведения журнала данных в visual basic


привет,
я хочу записать данные о температуре в моем приложении в txt-файл @ 1000 сэмплов в секунду, но я получаю только 4-5 сэмплов в секунду.я получаю значения tempearture с помощью последовательной связи (USB) с устройства, отслеживаю их на экране и регистрирую для дальнейшего использования.

Я хочу регистрировать данные со скоростью 1000 выборок в секунду.

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

вот мой код
'data log button code

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        bt_count1 = bt_count1 + 1
        If bt_count1 <= 1 Then
            Button1.Text = "STOP"
            Button1.ForeColor = Color.Red
            SaveFileDialog1.FileName = DateTime.Now.ToString("ddMMyyyy") & "_" & DateTime.Now.ToString("HHmmss") & ".txt"
            SaveFileDialog1.ShowDialog()
            txtfileName = SaveFileDialog1.FileName
            enable_log1hzdata = True
            FileOpen(1, txtfileName, OpenMode.Append)
            logprint1hz(log1hzdata_filename, "  DATE" & vbTab & "  TIME" & vbTab & "Pol" & vbTab & "HSW1,HSW2,VSW1,VSW2" &
                        vbTab & "H-TR1" & vbTab & "H-TR2" & vbTab & "H-Attn" & vbTab & "H-Ph" & vbTab & "Pol" & vbTab & "HSW1,HSW2,VSW1,VSW2" &
                        vbTab & "V-TR1" & vbTab & "V-TR2" & vbTab & "V-Attn" & vbTab & "V-Ph")
End sub

3 Ответов

Рейтинг:
2

CPallini

Цитата:
Я хочу регистрировать данные со скоростью 1000 выборок в секунду.
Обычно нет смысла использовать такую скорость передачи данных для измерения температуры (обычно температура меняется медленно). Если у вас нет очень веской причины делать обратное, просто отбросьте такое требование.

Скорость передачи данных зависит от скорости захвата датчика и скорости последовательной связи. Вы должны проверить оба этих параметра, чтобы просто указать осуществимость.

[обновление]
Около 9600 БОД, очень вероятно, что именно скорость последовательной связи является ограничивающим фактором скорости.
Предполагая, что 20 байт сообщения на единицу измерения, вы получаете максимум 48 меры в секунду.
Следовательно, если вы можете, увеличьте бодрат.
[/обновление]


Member 12659926

привет,
спасибо за ответ, наряду с температурой у меня есть некоторые другие данные, которые будут часто меняться,я работаю со скоростью передачи данных в бодах 9600 бит / с, используя usb 2.0 для последовательной связи, я хочу знать, есть ли у них какой-либо способ увеличить скорость регистрации данных через мой код.
это их любой параметр, который изменяет скорость регистрации данных.

CPallini

Смотрите мое обновленное решение.

Member 12659926

привет,
Спасибо за ответ, мое сообщение состоит из 96 бит,я увеличил скорость передачи данных до 115200, тогда у меня также нет 1000 сэмплов/сек.
есть ли у них какой-либо другой способ увеличить скорость регистрации данных

CPallini

Предполагая, что ваше сообщение 96 байты вам нужна по крайней мере последовательная связь в 960000 БОД.
Вы также должны проверить скорость приема ваших датчиков.

Member 12659926

возможна ли скорость передачи данных 960000 БОД, мои данные имеют размер 12 байт (96 бит), а не 96 байт.

CPallini

Тогда вам нужно не менее 120000 БОД. Я полагаю, что 230400 БОД сделают свое дело. Предположим, что устройство на другой стороне последовательной линии способно общаться с такой скоростью.

Рейтинг:
0

shinnapongk

попробуйте сохранить (конкатенация) текстовые данные в объект stringbuilder и записать в файл каждые 10 или 100 строк один раз. Операция обработки памяти выполняется намного быстрее, чем фактическая печать файлов.

Или проще, используя объект StreamWriter для облегчения и ускорения работы с файлами.


Рейтинг:
0

Patrice T

Во-первых, этот код не является полным, if структура не закрыта, и та часть, которая считывает данные, отсутствует.
Помочь вам невозможно, потому что вы не сказали нам скорость связи с датчиком, объем данных, которые нужно считывать при каждом считывании, что вы делаете с этими данными перед сохранением в файл.
Единственное, что я могу вам сказать, это то, что вы, вероятно, делаете слишком много вещей для скорости связи.

Улучшите свой вопрос с помощью дополнительных данных.