Простой пример работы с последовательным портом
Re: Простой пример работы с последовательным портом
Понял. Ну а со считыванием реального сигнала с частотой дискретизации 40 кГц с помощью VISA READ будут проблемы?
P.S. я правильно понимаю что частота дискретизации-это частота отсчетов(1,2,4 байта) а не частота битов?
P.S. я правильно понимаю что частота дискретизации-это частота отсчетов(1,2,4 байта) а не частота битов?
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Простой пример работы с последовательным портом
Реальный сигнал с чего снимается и чем принимается, какой он формы. Если ты собираешься напрямую его подавать на линию RX, то это плохая идея.
Частота дискретизации - частота следования отсчетов, а что из себя представляет сам отсчет в данном случае не важно.
Частота дискретизации - частота следования отсчетов, а что из себя представляет сам отсчет в данном случае не важно.
Re: Простой пример работы с последовательным портом
Реальный сигнал представляет собой последовательные отсчеты, идущие с интервалом 25 мкс.Сигнал идет с платы FT232R, с компьютером будет соединена через USB , то есть работать с ним буду через VISA как с COM портом. В этом случае скорость чтения будет больше?
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Простой пример работы с последовательным портом
Вот честно, из описания мало что понятно: эти отсчеты что формирует- АЦП или микроконтроллер их сам генерирует и т.п.? С платы FT232R идут данные на компьютер (которые тоже на физическом уровне есть сигнал, но нам этот уровень не нужен). FT232 в режиме эмуляции UART поддерживает скорости до 3 мбод.
Re: Простой пример работы с последовательным портом
Благодарю...Konstantin Sumenko писал(а): FT232 в режиме эмуляции UART поддерживает скорости до 3 мбод.
-
- assistant
- Сообщения: 119
- Зарегистрирован: 10 янв 2011, 11:01
- Версия LabVIEW: 8.6, 2009, 2010
- Откуда: Таганрог
- Контактная информация:
Re: Простой пример работы с последовательным портом
Не работал с FT232R, но приходилось применять различные преобразователи интерфейсов ICP DAS и MOXA. Так вот последовательный порт, как известно, с такими модулями на компе может быть представлен как виртуальный. И взаимодействие происходит ПО->Драйвер устройства->физический порт (USB, Ethernet)-> Преобразователь->Устройство и Обратно. Так что, не знаю как FT232R, а вышеперечисленные вносят ощутимую задержку. Ведь скорость передачи по ком-порту имеется ввиду только м/у преобразователем интерфейсов и опрашиваемым устройством, и при этом не берется в расчет топология всей сети вместе со временем обработки данных в контроллерах модулей. Поправьте, если ошибаюсь.
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Простой пример работы с последовательным портом
Все верно, принимая во внимание тот факт, что обмен (FT232 с ПК) по USB ведется в режиме bulk, то ни о каких микросекундных задержках можно даже и не говорить.
-
- interested
- Сообщения: 2
- Зарегистрирован: 27 ноя 2011, 21:57
- Версия LabVIEW: 8.6
- Контактная информация:
Re: Простой пример работы с последовательным портом
Код: Выделить всё
Микроконтроллер Atmega48
АЦП:
Инициализация сбора данных(одновременно работает один канал):
-первого канала 201 (DEC)
-второго канала 202 (DEC)
Получение результат АЦП :
-для обоих каналов 209(DEC)
Деинициализация сбора данных для АЦП:
-для обоих каналов 216 (DEC)
Внешние прерывания
Инициализация сбора данных о внешнем прерывании
-первого канала 203(DEC)
-второго канала 204(DEC)
Получение данных о внешнем прерывании
-для первого канала 210(DEC)
-для второго канала 211(DEC)
Деинициализация сбора данных о внешнем прерывании
-для первого канала 217(DEC)
-для второго канала 218(DEC)
АЦП усредненного ШИМ сигнала
Инициализация режима усреднения ШИМ сигнала:
-для первого канала 205(DEC) - разрешение режима - число от 0(DEC) до 255(DEC) - регулятор уровня напряжения на АЦП от 255 до 0
-для второго канала 206(DEC) - разрешение режима - два числа в сумме составляющие число от 0(DEC) до 1023(DEC).Причем первое младшие разряды, а второе старшие. Пример: число 1020(DEC) будет послано как 252 (DEC) и 3(DEC)
-для третьего канала 207(DEC) -разрешение режима - два числа в сумме составляющие число от 0(DEC) до 1023(DEC).Причем первое младшие разряды, а второе старшие.
Получение данных усреднения ШИМ сигнала:
-для первого канала 213(DEC)
-для второго канала 214(DEC)
-для третьего канала 215(DEC)
Деинициализация режима усреднения ШИМ сигнала
-для первого канала 219(DEC)
-для второго канала 220(DEC)
-для третьего канала 221(DEC)
Сравнение напряжений двух каналов
Инициализация режима
-посылка 208(DEC)
Получение данных о результате сравнения:
-посылка 215(DEC)
Деинициализация режима
-посылка 222(DEC).
-
- interested
- Сообщения: 4
- Зарегистрирован: 02 апр 2012, 23:26
- Версия LabVIEW: 11
- Контактная информация:
Re: Простой пример работы с последовательным портом
Доброго времени суток!
Не пинайте сильно, я только начал ознакомление с LabView.
Построил небольшой пример но что то ничего не работает (((
Есть МК ATmega который шлет по последовательному порту номинал измеряемого тока, мне нужно отображать его на графике.
Тут мне еще не понятно вот что, мк разделяет переменную типа-int для пересылки. Как мне обратно ее склеить ? Чтобы получить корректное значение.
З.Ы. не пинайте я начинающий но очень хочу разобраться.
За ранее благодарен!.
Uploaded with ImageShack.us
Не пинайте сильно, я только начал ознакомление с LabView.
Построил небольшой пример но что то ничего не работает (((
Есть МК ATmega который шлет по последовательному порту номинал измеряемого тока, мне нужно отображать его на графике.
Тут мне еще не понятно вот что, мк разделяет переменную типа-int для пересылки. Как мне обратно ее склеить ? Чтобы получить корректное значение.
З.Ы. не пинайте я начинающий но очень хочу разобраться.
За ранее благодарен!.
Uploaded with ImageShack.us
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Простой пример работы с последовательным портом
Покажите что Вы принимаете и что нужно получить (что посылается).Frank писал(а):Тут мне еще не понятно вот что, мк разделяет переменную типа-int для пересылки. Как мне обратно ее склеить ? Чтобы получить корректное значение.
Только я уже запутался....
В одном месте Вы говорите о корреляторе (Сбор данных с коррелятора)
Здесь об ATmega.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- interested
- Сообщения: 4
- Зарегистрирован: 02 апр 2012, 23:26
- Версия LabVIEW: 11
- Контактная информация:
Re: Простой пример работы с последовательным портом
Тема про коррелятор не моя, то сообщение что выше в этой ветке первое на этом форуме, я только вчера зарегистрировался.
В контроллере в переменную "current" типа int (16-ти разрядная) записывается значение, оно уже рассчитанное и не требует какой либо мат. обработки. На дисплее платы контроллера отображается корректно. Я хочу отправить его на комп. для визуального отображения на графике.
Та как компорт передает информацию побайтно я разделил переменную "current" на две 8 разрядные переменные.
temph = current>>8;
templ = current;
При получении на компьютере в терминале я вижу эти байты они корректно приходят один за другим.
При тестировании VISA тоже принимает эти данные. Я сейчас на работе и не могу выложить скрин. Постараюсь ближе к вечеру предоставить его.
Но как только запускаю LabView получаю ошибку и нету ни каких результатов на графике.
Я понимаю что, то что принято из буфера нужно как то распознать для дальнейшего отображения. Но как до сих пор не нашел.
За ранее благодарен.
В контроллере в переменную "current" типа int (16-ти разрядная) записывается значение, оно уже рассчитанное и не требует какой либо мат. обработки. На дисплее платы контроллера отображается корректно. Я хочу отправить его на комп. для визуального отображения на графике.
Та как компорт передает информацию побайтно я разделил переменную "current" на две 8 разрядные переменные.
temph = current>>8;
templ = current;
При получении на компьютере в терминале я вижу эти байты они корректно приходят один за другим.
При тестировании VISA тоже принимает эти данные. Я сейчас на работе и не могу выложить скрин. Постараюсь ближе к вечеру предоставить его.
Но как только запускаю LabView получаю ошибку и нету ни каких результатов на графике.
Я понимаю что, то что принято из буфера нужно как то распознать для дальнейшего отображения. Но как до сих пор не нашел.
За ранее благодарен.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Простой пример работы с последовательным портом
Считывать нужно два байта, а не двести, но даже если считывать два, то какой из них первый, а какой второй не понятно, можно ведь случайно начать считывать и со второго.
Преобразовывать нужно иначе, с помощью Type Cast в Int16.
Преобразовывать нужно иначе, с помощью Type Cast в Int16.
-
- interested
- Сообщения: 4
- Зарегистрирован: 02 апр 2012, 23:26
- Версия LabVIEW: 11
- Контактная информация:
Re: Простой пример работы с последовательным портом
Спасибо! )) Попробую, отпишусь о результатах! )
З.Ы. в принципе мне не критично я могу сначала запускать LabView а потом стартовать передачу данных. Так что я думаю в таком порядке должно получится всегда чтение с первого байта.
З.Ы. в принципе мне не критично я могу сначала запускать LabView а потом стартовать передачу данных. Так что я думаю в таком порядке должно получится всегда чтение с первого байта.
-
- interested
- Сообщения: 4
- Зарегистрирован: 02 апр 2012, 23:26
- Версия LabVIEW: 11
- Контактная информация:
Re: Простой пример работы с последовательным портом
Всем спасибо!
Все получилось и работает!
Следующей ступенью будет выводить два сигнала на один график...
Мои мысли по этому поводу: Нужно отсылать два байта от первого сигнала потом разделитель например возврат каретки и опять два байта от второго?
Пока не знаю как это все городить в LabView... почитаю книжки, появятся более вменяемые вопросы задам.
Всем еще раз спасибо! )
Все получилось и работает!
Следующей ступенью будет выводить два сигнала на один график...
Мои мысли по этому поводу: Нужно отсылать два байта от первого сигнала потом разделитель например возврат каретки и опять два байта от второго?
Пока не знаю как это все городить в LabView... почитаю книжки, появятся более вменяемые вопросы задам.
Всем еще раз спасибо! )
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Простой пример работы с последовательным портом
Возврат каретки может случайно встретиться и в самих данных, что будешь в этом случае делать?
Но мысли направлены в правильную сторону. Разделитель нужен, назови его синхронизационным байтом или терминаторным байтом. Разделительный байт не обязательно должен быть одним, их может быть больше. Так же можно добавить тип сигнала, например "1" или "2" и контрольную сумму.
Пара выкинутых пакетов не страшна, но если трафик сбивается с синхронизации, то выйдет кака.
Но мысли направлены в правильную сторону. Разделитель нужен, назови его синхронизационным байтом или терминаторным байтом. Разделительный байт не обязательно должен быть одним, их может быть больше. Так же можно добавить тип сигнала, например "1" или "2" и контрольную сумму.
Пара выкинутых пакетов не страшна, но если трафик сбивается с синхронизации, то выйдет кака.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 7 Ответы
- 298 Просмотры
-
Последнее сообщение dadreamer