Паразитные нули с COM-порта
-
- beginner
- Сообщения: 21
- Зарегистрирован: 03 дек 2020, 16:49
- Версия LabVIEW: 2014
- Благодарил (а): 6 раз
- Контактная информация:
Паразитные нули с COM-порта
Здравствуйте, подключили старый советский прибор через микроконтроллер по виртуальному COM-порту к Labview, но несмотря на правильно прописанную скорость приема данных, кроме значений появляющихся на индикаторе прибора появляются лишние нули. Например, на экране 138.7, затем 138.8, а в Labview 138.7, 0, 0, 138.8. Есть ли решение у проблемы?
-
- professor
- Сообщения: 3408
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Паразитные нули с COM-порта
вопрос из разряда: у меня машина не заводится, кто-нибудь знает, почему?
Как прибор отправляет данные?
Как вы их читаете?
Банально, вы читаете чаще, чем они присылаются.
Как прибор отправляет данные?
Как вы их читаете?
Банально, вы читаете чаще, чем они присылаются.
-
- beginner
- Сообщения: 21
- Зарегистрирован: 03 дек 2020, 16:49
- Версия LabVIEW: 2014
- Благодарил (а): 6 раз
- Контактная информация:
Re: Паразитные нули с COM-порта
Читаю через VISA. Смотрю данные с микроконтроллера через Termite, там нет нулей, а в Labview та же скорость, но они есть.
(Прошу прощения заранее, я еще новичок, только начал разбираться в приеме/выводе данных в LabView)
-
- professor
- Сообщения: 3408
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Паразитные нули с COM-порта
Если вы будете и дальше так детально описывать свою проблему и её детали, то вряд ли найдутся желающие вас пытать и помочь в вашем вопросе.
Скорость - это и частота шины, и период запросов данных из шины.
Может, слишком часто проверяете, что там есть? Сырые данные смотрели?
И уже давно можно было выложить свой код, чтобы было понятно, что происходит
Скорость - это и частота шины, и период запросов данных из шины.
Может, слишком часто проверяете, что там есть? Сырые данные смотрели?
И уже давно можно было выложить свой код, чтобы было понятно, что происходит
-
- beginner
- Сообщения: 21
- Зарегистрирован: 03 дек 2020, 16:49
- Версия LabVIEW: 2014
- Благодарил (а): 6 раз
- Контактная информация:
Re: Паразитные нули с COM-порта
Да, конечно, вот код, только почему-то сейчас перестали считываться данные. Весь день работало, а сейчас перестало
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Паразитные нули с COM-порта
Первое, что бросается в глаза...
Вы по какому признаку определяете конец пакета данных?
У Вас в настройках VISA Configure Serial Port VI указываете, что терминатор использовать (по умолчанию = True) в качестве него используете символ перевода каретки (0xA).
Но потом, внутри цикла Вы читаете данные пакетами по 6 byte.
Нужно сначала порыться в протоколе и определиться есть там терминатор, а скорее всего есть и принимать решение именно по нему.
Если терминатор отсутствует, то необходимо как-то синхронизироваться на начальном этапе, что бы не принять две чати разных пакетов за оди, а потом уже вычитывать из регистра указанное число byte.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- professor
- Сообщения: 3408
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Паразитные нули с COM-порта
И ещё отобразите строку, которую получаете, возможно, проблема при её переводе в число.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Паразитные нули с COM-порта
Скорее всего он числа передаются с небольшой частотой, поэтому попасть в середину посылки при старте маловероятно.
нулевое значение - значение по умолчанию, надо смотреть содержимое принятой строки (после чтения), тогда будет понятнее, откуда нули появляются.
-
- beginner
- Сообщения: 21
- Зарегистрирован: 03 дек 2020, 16:49
- Версия LabVIEW: 2014
- Благодарил (а): 6 раз
- Контактная информация:
Re: Паразитные нули с COM-порта
Сразу после чтения нулей не находит, только после преобразования в число
Последний раз редактировалось blindoss 04 дек 2020, 12:46, всего редактировалось 2 раза.
-
- beginner
- Сообщения: 21
- Зарегистрирован: 03 дек 2020, 16:49
- Версия LabVIEW: 2014
- Благодарил (а): 6 раз
- Контактная информация:
Re: Паразитные нули с COM-порта
Вывел в массив значения из строки и одновременно построил график уже преобразованных в число значений
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Паразитные нули с COM-порта
проверяйте перед преобразованием в число на пустую строку и ошибку чтения из порта по таймауту. У вас установлен таймаут 20 секунд. Если обновление происходит реже таймаута, то это надо обрабатывать. Сделаете обработку и таймаут можно уменьшить, программа будет более отзывчивой.
-
- beginner
- Сообщения: 21
- Зарегистрирован: 03 дек 2020, 16:49
- Версия LabVIEW: 2014
- Благодарил (а): 6 раз
- Контактная информация:
Re: Паразитные нули с COM-порта
Извините, а не могли бы Вы поподробнее рассказать про обработку ?Borjomy_1 писал(а): ↑04 дек 2020, 15:02 проверяйте перед преобразованием в число на пустую строку и ошибку чтения из порта по таймауту. У вас установлен таймаут 20 секунд. Если обновление происходит реже таймаута, то это надо обрабатывать. Сделаете обработку и таймаут можно уменьшить, программа будет более отзывчивой.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Паразитные нули с COM-порта
вы проверяете размер строки, которую получили. Если она меньше 6 или 4 (т.е меньше того, что заказали), то весь цикл крутится вхолостую. Можете в холостой части поставить небольшую задержку (20..50 мс), чтобы при возникновении ошибки, не связанной с таймаутом, предотвратить 100% нагрузку процессора.
-
- beginner
- Сообщения: 21
- Зарегистрирован: 03 дек 2020, 16:49
- Версия LabVIEW: 2014
- Благодарил (а): 6 раз
- Контактная информация:
Re: Паразитные нули с COM-порта
Сделал так, как Вы сказали, но теперь появилась другая проблема: на Scan From String Function всегда поступает нужная строка, но после нее появлялись нули. Я убрал ноль из default value 1 и и теперь появляется гуляющая запятая. Output 1 - сразу после Scan, а read buffer 2 после проверки размера строкиBorjomy_1 писал(а): ↑04 дек 2020, 17:56вы проверяете размер строки, которую получили. Если она меньше 6 или 4 (т.е меньше того, что заказали), то весь цикл крутится вхолостую. Можете в холостой части поставить небольшую задержку (20..50 мс), чтобы при возникновении ошибки, не связанной с таймаутом, предотвратить 100% нагрузку процессора.
- Вложения
-
- Снимок.PNG3.PNG (1.79 КБ) 2425 просмотров
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение