TCP read не считывает данные
-
- beginner
- Сообщения: 10
- Зарегистрирован: 20 фев 2014, 11:11
- Версия LabVIEW: 13, 14
- Контактная информация:
TCP read не считывает данные
Добрый день! Имеется двухколесная тележка, с двумя моторами соответственно и своей платой управления, на которую по usb кабелю через локальный TCP сокет подаются простые команды управления (движение вперед, назад, повороты и т.д.). Также имеются датчики одометрии, и при попытке снять эти данные, при помощи подачи соответствующей команды, данные в Labview не считываются. При этом данные одометрии принимаются в консоли сокета, минуя каким-то образом Labview. Прикрепляю код, в данном случае все параметры у функции TCP read стоят по умолчанию, но при попытке задания их вручную, данные все равно не принимаются и возникает error 56 - мол истекло время ожидания функции.
Подскажите пожалуйста, в чем может быть причина.
Заранее спасибо!
Подскажите пожалуйста, в чем может быть причина.
Заранее спасибо!
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: TCP read не считывает данные
Начните с изучения стандартных примеров TCP приемник/передатчик.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
- Super Star
- adviser
- Сообщения: 228
- Зарегистрирован: 07 фев 2013, 08:37
- Версия LabVIEW: 2011
Re: TCP read не считывает данные
меня смущает что вы запрос сами себе посылаете
я люблю свою работу.... Я приду сюда в субботу ...
-
Oleg B.
- leader
- Сообщения: 674
- Зарегистрирован: 25 сен 2011, 11:30
- Награды: 2
- Версия LabVIEW: 5 .. 2021
- Откуда: Israel
- Контактная информация:
Re: TCP read не считывает данные
1.Установите правильный адрес и порт.
2. Отключите антивирус (web access protection)
2. Отключите антивирус (web access protection)
veni, vidi, phallomorphi
-
- beginner
- Сообщения: 10
- Зарегистрирован: 20 фев 2014, 11:11
- Версия LabVIEW: 13, 14
- Контактная информация:
Re: TCP read не считывает данные
Запрос я посылаю в локальный сокет, через него команда уже поступает на устройство, которое выдает ответ в консоль сокета, но до labview ответ не доходит. Получается, встает вопрос - можно ли как-то считать эти данные из консоли или нет...меня смущает что вы запрос сами себе посылаете
Адрес и порт установлены правильно, отключать антивирус пробовал, не помогает...((1.Установите правильный адрес и порт.
2. Отключите антивирус (web access protection)
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: TCP read не считывает данные
Параметры чтения задавайте вручную. Для начала читайте в режиме Immediate, количество байт ставьте заведомо больше,чем ожидаете(килобайт поставьте,например).параметры у функции TCP read стоят по умолчанию, но при попытке задания их вручную, данные все равно не принимаются и возникает error 56 - мол истекло время ожидания функции.
Далее,на каком этапе происходить ошибка?У Вас соединение устанавливается?Или Вам ошибку возвращает блок открытия сеанса TCP/IP соединения?Вы поставили кластер ошибки в конец,назвали номер ошибки, но кто является источником?
В каком виде вы принимаете данные?Это streem либо у Вас предусмотрен обмен по принципу "Запрос - Ответ"с подтверждениями?
Запрос вы посылаете из LabVIEW?Запрос я посылаю в локальный сокет, через него команда уже поступает на устройство, которое выдает ответ в консоль сокета, но до labview ответ не доходит.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
- beginner
- Сообщения: 10
- Зарегистрирован: 20 фев 2014, 11:11
- Версия LabVIEW: 13, 14
- Контактная информация:
Re: TCP read не считывает данные
Ошибка происходит на этапе чтения, т.е. на TCP read. Да, соединение устанавливается нормально.Далее,на каком этапе происходить ошибка?У Вас соединение устанавливается?Или Вам ошибку возвращает блок открытия сеанса TCP/IP соединения?Вы поставили кластер ошибки в конец,назвали номер ошибки, но кто является источником?
По принципу "запрос-ответ". при подаче ping'а тоже пока нет ответа.В каком виде вы принимаете данные?Это streem либо у Вас предусмотрен обмен по принципу "Запрос - Ответ"с подтверждениями?
Да. labview является клиентом, а тележка сервером.Запрос вы посылаете из LabVIEW?
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: TCP read не считывает данные
Проверяйте реализацию локального сокета. Вы его на Си писали?Запрос я посылаю в локальный сокет, через него команда уже поступает на устройство, которое выдает ответ в консоль сокета, но до labview ответ не доходит. Получается, встает вопрос - можно ли как-то считать эти данные из консоли или нет...
Отправили команду из LabVIEW локальному сокету. Сокет эту команду получил и отправил тележке. Тележка приняла команду и отправила ответ сокету. Сокет её получил ответ, но не отправил этот ответ в LabVIEW. Так?
Попробуйте отладиться без тележки. Отсылайте команду в сокет с помощью LabVIEW.Сокет должен принять и отослать ответ в LabVIEW. Можете потренироваться на Echo-команде. Потом парочку протокольных команд попробуйте.
Предусмотрите что-то типа BadCommand - это на случай когда отправлена пустая строка или неизвестная команда,например.
Напишите отладочную программу для своего сокета. Всё по тому же принципу - запрос/ответ.
Так же обратите внимание на порядок байт,которые отправляются из LabVIEW и принимаются сокетом(тем более если работа на разных машинах).Litle-endian или big-endian. И в обратную сторону.Должно быть строгое соответствие.
Передача данных по TCP/IP в LabVIEW работает. Сопряжение с Си-шными серверами и сокетами тоже работает.
- Вложения
-
- Simple Client.vi
- (9.4 КБ) 149 скачиваний
-
- Simple Server.vi
- (8.27 КБ) 140 скачиваний
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
- assistant
- Сообщения: 149
- Зарегистрирован: 19 янв 2012, 10:15
- Версия LabVIEW: 2010-2012
- Откуда: Киев
- Контактная информация:
Re: TCP read не считывает данные
у ТСР Read есть вход сколько байт надо прочитать.
И Если число байт не сходится с количеством байт которые надо принять - будут проблемы.
Лучше открыть HELP по ТСР Read и там есть отличные примеры.
Взять эти примеры и использовать для своей задачи.
И Если число байт не сходится с количеством байт которые надо принять - будут проблемы.
Лучше открыть HELP по ТСР Read и там есть отличные примеры.
Взять эти примеры и использовать для своей задачи.
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: TCP read не считывает данные
Вы бы сами для начала HELP почитали,а еще лучше о TCP/IP-протоколе, а еще лучше ветку сообщений с самого начала.у ТСР Read есть вход сколько байт надо прочитать.
И Если число байт не сходится с количеством байт которые надо принять - будут проблемы.
Лучше открыть HELP по ТСР Read и там есть отличные примеры.
Взять эти примеры и использовать для своей задачи.
Похоже что,проблемы были у Вас.А безпроблемные варианты выглядят очень просто:у ТСР Read есть вход сколько байт надо прочитать.
И Если число байт не сходится с количеством байт которые надо принять - будут проблемы.
1.Передача размера отправленного сообщения,затем само сообщение.
2.Проработать протокол и определить,какое максимальное кол-во байт необходимо будет принимать. Используя режим Imediate и архитектуру "запрос-ответ" проблем не будет НИКАКИХ. Либо вставлять символ окончания пакета и выполнить ТСР Read в другом режим(в каком?это Вам домашнее задание.)
Бу-бу-бу
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
- beginner
- Сообщения: 10
- Зарегистрирован: 20 фев 2014, 11:11
- Версия LabVIEW: 13, 14
- Контактная информация:
Re: TCP read не считывает данные
Да, все именно так.Проверяйте реализацию локального сокета. Вы его на Си писали?
Отправили команду из LabVIEW локальному сокету. Сокет эту команду получил и отправил тележке. Тележка приняла команду и отправила ответ сокету. Сокет её получил ответ, но не отправил этот ответ в LabVIEW. Так?
Сокет был написан не мной, и на языке Lua. Думаю в этом и проблема, видимо по умолчанию у Labview нет сопряжения с такими сокетами. Буду разбираться с сокетом, спасибо!
-
- beginner
- Сообщения: 10
- Зарегистрирован: 20 фев 2014, 11:11
- Версия LabVIEW: 13, 14
- Контактная информация:
Re: TCP read не считывает данные
Спасибо, это уже читал)anda55 писал(а):Denis29
Почитайтеhttp://labviewportal.eu/viewtopic.php?f=22&t=5583
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: TCP read не считывает данные
Вам предстоит эпичное разбирательство с Lua,шерстить его коды и добавить пару строчек для выполнения роли "транзита" между тележкой и LabVIEW.Сокет был написан не мной, и на языке Lua. Думаю в этом и проблема, видимо по умолчанию у Labview нет сопряжения с такими сокетами.
А на каком языке поднят сокет или сервер или клиент - это не принципиально. Интерфейс взаимодействия остаётся одним и тем же. Пишите о результатах!
Успехов
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
- beginner
- Сообщения: 10
- Зарегистрирован: 20 фев 2014, 11:11
- Версия LabVIEW: 13, 14
- Контактная информация:
Re: TCP read не считывает данные
В общем решили не использовать tcp сокет, а передавать данные напрямую в HEXe через виртуальный com-порт, при помощи протокола VISA. Пока все получается, спасибо всем за помощь!)
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 3 Ответы
- 631 Просмотры
-
Последнее сообщение IvanLis
-
- 38 Ответы
- 13306 Просмотры
-
Последнее сообщение AndreyDmitriev
-
- 5 Ответы
- 252 Просмотры
-
Последнее сообщение IvanLis