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

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы

Re: Как сделать прием данных по rs-232 с прерыванием?

Postby Eugen Graf on 15 Sep 2008, 13:56

А ты можешь как нибудь определить какой ответ принадлежит какой команде? Если да, до просто сортируй ответы по их принадлежности. Как выглядит ответ?
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

Re: Как сделать прием данных по rs-232 с прерыванием?

Postby Confocal on 15 Sep 2008, 14:45

есть список всех команд и ответов на них. Например, команда которая возвращает
текущие настройки прибора выдает строку в виде:Current speed xxxx hz, Switches status xx, Shutter Open(Close). где ххх-значение на данный момент измерения. строки передаются в ASCII c наличием знаков между словами: , \s \n и т.п. как видно в строке сожержатся несколько параметров которые я уже разделил для вывода на переднюю панель.
Confocal
assistant
assistant
 
Posts: 104
Joined: 15 Aug 2008, 11:55
Location: Россия, Московская область
LabVIEW Version: 8.5
Karma: 0

Re: Как сделать прием данных по rs-232 с прерыванием?

Postby Eugen Graf on 15 Sep 2008, 15:11

Ну с ответами всё понятно. Можно легко определить что за ответ и к какой команде он принадлежит. А что ты потом делаешь с этими ответами? Просто показываешь на лицевой панели? Если да, то какая разница в какой очерёдности они приходят от прибора?
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

Re: Как сделать прием данных по rs-232 с прерыванием?

Postby Confocal on 15 Sep 2008, 16:36

результаты ответов нужно использовать для мат. обработки и последующей индикации
на панели. это уже другая задача.
еще раз на примере скриншотов выложенных раннее. нужно чтобы при перемещении
каретки (выполнение первой команды) отображалось текущее значение ее координаты (выполнение второй команды). тут-то и возникли проблемы. при запуске двух подприборов (каждый для своей команды), в ответной строке
текущей координаты при запуске выдается предыдущее или еще более раннее значение
координаты и только через какое-то время работы выдается истинное значение.
Confocal
assistant
assistant
 
Posts: 104
Joined: 15 Aug 2008, 11:55
Location: Россия, Московская область
LabVIEW Version: 8.5
Karma: 0

Re: Как сделать прием данных по rs-232 с прерыванием?

Postby Eugen Graf on 15 Sep 2008, 17:14

Мне ещё не хватает скрина прибора "Move Delay Line.vi" . Я хочу узнать ты в нём опрашиваешь данные с порта или только посылаешь команду.
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

Re: Как сделать прием данных по rs-232 с прерыванием?

Postby Confocal on 16 Sep 2008, 14:53

"Move Delay Line.vi" по структуре аналогичен остальным vi, в нем посылается команда и идет перемещение каретки. Для этой команды существует ответная строка, считывать можно, но пока нет необходимости.
Confocal
assistant
assistant
 
Posts: 104
Joined: 15 Aug 2008, 11:55
Location: Россия, Московская область
LabVIEW Version: 8.5
Karma: 0

Re: Как сделать прием данных по rs-232 с прерыванием?

Postby Eugen Graf on 16 Sep 2008, 15:10

Но ответ всё таки приходит? Просто ты его не считываешь, да?
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

Re: Как сделать прием данных по rs-232 с прерыванием?

Postby Confocal on 16 Sep 2008, 15:22

да, не считываю. ответ конечно есть.
Confocal
assistant
assistant
 
Posts: 104
Joined: 15 Aug 2008, 11:55
Location: Россия, Московская область
LabVIEW Version: 8.5
Karma: 0

Re: Как сделать прием данных по rs-232 с прерыванием?

Postby Eugen Graf on 16 Sep 2008, 15:28

Ок, теперь давай разбираться с циклами. Зачем тебе нужен верхний цикл While в основном цикле? Какую функцию он вообще имеет? То что находится внутри этого цикла (то есть считывание статуса) будет выполнятся один раз, а потом программа будет ждать пока не будет нажата какая либо кнопка.
Я думаю ты хотел считывать статус постоянно (параллельно) и время от времени опять же параллельно нажимать на кнопки и посылать команды.

И потом подумай о том, о чём я тебя спрашивал раньше. Ведь если ответ ты не считываешь, значит он остаётся в буфере. А когда ты хочешь считать статус, то считываешь вместо этого ещё и прошлый ответ на команду Move Line.

Я думаю теперь несложно догадаться что и как надо переделать, чтобы программа работала как надо.
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

Re: Как сделать прием данных по rs-232 с прерыванием?

Postby Confocal on 16 Sep 2008, 17:21

Согласен, с циклами здесь запутанно. Нужно правильно организовать
параллельную работу: движение каретки и считывание ее текущего положения.
Теперь что происходит при работе приборов "Move Delay Line.vi" и "Status.vi".
Если после работы прибора "Move Delay Line.vi" отдельно запустить прибор "Status.vi", и последовательно нажимать кнопку Run, то раз через раз на лицевой панели в окнах параметров выдается либо фрагмент части всей строки, либо нужно значение, либо ничего с наличием ошибок. Может нужно настроить Baud rate для Visa Read?
Attachments
4.JPG
5.JPG
6.JPG
Confocal
assistant
assistant
 
Posts: 104
Joined: 15 Aug 2008, 11:55
Location: Россия, Московская область
LabVIEW Version: 8.5
Karma: 0

Re: Как сделать прием данных по rs-232 с прерыванием?

Postby Eugen Graf on 16 Sep 2008, 17:27

Цитирую то, что я написал выше. Может ты не заметил, т.к. я дописал это тогда, когда ты писал свой ответ.

И потом подумай о том, о чём я тебя спрашивал раньше. Ведь если ответ ты не считываешь, значит он остаётся в буфере. А когда ты хочешь считать статус, то считываешь вместо этого ещё и прошлый ответ.
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

Re: Как сделать прием данных по rs-232 с прерыванием?

Postby Confocal on 23 Sep 2008, 18:41

Установил Visa buffer size до 120, а по умолчанию - 4096. Теперь работает.
Confocal
assistant
assistant
 
Posts: 104
Joined: 15 Aug 2008, 11:55
Location: Россия, Московская область
LabVIEW Version: 8.5
Karma: 0

Re: Как сделать прием данных по rs-232 с прерыванием?

Postby Confocal on 01 Oct 2008, 18:10

Confocal wrote:Установил Visa buffer size до 120, а по умолчанию - 4096. Теперь работает.

Вот скрин редактированного прибора.
Еще хотелось бы узнать для чего используют реинтрантные приборы и как их создают?
Attachments
VISA1.PNG
Confocal
assistant
assistant
 
Posts: 104
Joined: 15 Aug 2008, 11:55
Location: Россия, Московская область
LabVIEW Version: 8.5
Karma: 0

Re: Как сделать прием данных по rs-232 с прерыванием?

Postby Eugen Graf on 01 Oct 2008, 18:12

Реинтрантность задаётся в установках прибора и используется для разделённого использования участков памяти при параллельном вызове этого прибора.
Чтобы было понятнее скажем если у тебя имеется реинтрантный прибор и ты используешь его параллельно, то при каждом вызове такого прибора создаётся его копия. Копия значит почти то же самое как если бы у тебя было например два одинаковых прибора, но с разными названиями и ты использовал бы их параллельно.
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

Re: Как сделать прием данных по rs-232 с прерыванием?

Postby Nemo on 02 Oct 2008, 09:45

Всем привет, что-то я столкнулся со странностью, не могу понять где ошибка? Почему-то после установки ИСТИНА в выполняющемся цикле он не останавливается, а делает еще один круг :shok:
Attachments
v0.8.rar
(804.39 KiB) Downloaded 116 times
User avatar
Nemo
user
user
 
Posts: 97
Joined: 26 Jun 2008, 11:48
Location: Россия
LabVIEW Version: 8
Karma: 0

PreviousNext

Return to Коммуникация с приборами

Who is online

Users browsing this forum: Google and 0 guests

cron