TCP

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: TCP

Сообщение Eugen Graf »

Когда программируешь серверное приложение, а у тебя клиент.
Confocal
assistant
assistant
Сообщения: 104
Зарегистрирован: 15 авг 2008, 11:55
Версия LabVIEW: 8.5
Откуда: Россия, Московская область
Контактная информация:

Re: TCP

Сообщение Confocal »

А как в случае TCP соединения посылать команды прибору и считывать ответы, т.е. последовательно или иначе?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: TCP

Сообщение Eugen Graf »

Можно последовательно, а можно и иначе, например в двух параллельных циклах.
Sevas
user
user
Сообщения: 89
Зарегистрирован: 23 фев 2011, 19:32
Версия LabVIEW: 13
Откуда: Sevastopol

Re: TCP

Сообщение Sevas »

Помогите теорией и практикой.
По сети передаётся строка, заранее не известной длины, я с помощью :labview: пытаюсь её принять.
Частично всё работает, через два TCP-readera`a, как в начале темы делали, проблема в том что я не понимаю сколько в первый TCP-reader подавать для bytes to read? Пробовал и 4 и 8 и 1024, всегда разные результаты, то половину строки покажет, то только отрывок из 2х символов.
Shpik
assistant
assistant
Сообщения: 119
Зарегистрирован: 10 янв 2011, 11:01
Версия LabVIEW: 8.6, 2009, 2010
Откуда: Таганрог
Контактная информация:

Re: TCP

Сообщение Shpik »

Обычно в начале сообщения имеется поле (4 байта), показывающее длину этого сообщения. Тогда считываем так:
TCP Read.PNG
TCP Read.PNG (1.93 КБ) 11472 просмотра
Если же длины сообщений разные и нигде не сказано какие они (длины), то можно считывать только те байты, которые дошли и находятся в буфере:
TCP Read Immediate.PNG
TCP Read Immediate.PNG (4.17 КБ) 11472 просмотра
Sevas
user
user
Сообщения: 89
Зарегистрирован: 23 фев 2011, 19:32
Версия LabVIEW: 13
Откуда: Sevastopol

Re: TCP

Сообщение Sevas »

Shpik, спасибо, вроде работает. Т.е. насколько я понимаю 2000 это и есть размер буфера? Т.е. какая бы ни была строка всё должно читаться?
Shpik
assistant
assistant
Сообщения: 119
Зарегистрирован: 10 янв 2011, 11:01
Версия LabVIEW: 8.6, 2009, 2010
Откуда: Таганрог
Контактная информация:

Re: TCP

Сообщение Shpik »

Нет, это не размер буфера. Ну, например, если у тебя в буфере 2011 байт, то данная функция считает только 2000, а остальное в следующий раз. Это число байт для считывания, т.е. максимальное за раз.
Аватара пользователя
MSergey
beginner
beginner
Сообщения: 26
Зарегистрирован: 05 май 2011, 09:34
Версия LabVIEW: 8.5
Откуда: РФ, г. Таганрог
Контактная информация:

Определить ip адрес

Сообщение MSergey »

Люди подскажите как в :labview: определить ip адрес компьютера с которого отсылается сообщение (данные)?
Eugene

Activity Bronze
leader
leader
Сообщения: 548
Зарегистрирован: 20 авг 2009, 17:58
Награды: 2
Версия LabVIEW: 2011
Контактная информация:

Re: TCP

Сообщение Eugene »

примерно так
Вложения
tempIP.JPG
tempIP.JPG (3.04 КБ) 11204 просмотра
We live in a graphical world.
Why not program in one?
Аватара пользователя
MSergey
beginner
beginner
Сообщения: 26
Зарегистрирован: 05 май 2011, 09:34
Версия LabVIEW: 8.5
Откуда: РФ, г. Таганрог
Контактная информация:

Re: TCP

Сообщение MSergey »

Спасибо!!!
Аватара пользователя
mxdamage

Activity
assistant
assistant
Сообщения: 113
Зарегистрирован: 11 авг 2011, 15:45
Награды: 1
Версия LabVIEW: 2011
Откуда: Москва
Контактная информация:

Re: TCP

Сообщение mxdamage »

Confocal писал(а):слушатель когда нужно использовать?
Для программы, которая ждет подключения на данный порт.
Аватара пользователя
Mad_Ahab
junior
junior
Сообщения: 66
Зарегистрирован: 12 янв 2015, 16:33
Версия LabVIEW: 2013
Контактная информация:

Re: TCP

Сообщение Mad_Ahab »

Здравствуйте.

Вопрос с передачей данных по TCP: нужно передать строго четыре ноля, "0000" устройству по IP-адресу. Как вообще организовать передачу произвольных последовательностей чисел по TCP?
Я думал, что для этого послужит Number To Hexadecimal String Function, если подать на нее 0 и выставить длину 2. Однако, в Wireshark'e вместо "00 00" парой байтов видно "30 30". Вот блок-диаграмма:
Вложения
Безымянный.jpg
Курю маны, дым уже глаза ест...
Изображение
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: TCP

Сообщение Borjomy_1 »

0 это что? Символ "0", константа типа байт со значением 0? или что другое?

В первом случае подаете строку "0000", без каких-то конверсий на вход функции TCP Write
Во втором случае формируете байтовый массив из четырех элементов, конвертируете его функцией "Byte Array To String" и подаете на вход функции TCP Write

Upd Ваши 00 00 - это два байта. Следовательно второй вариант, только элементов массива 2
Последний раз редактировалось Borjomy_1 13 янв 2015, 17:19, всего редактировалось 1 раз.
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: TCP

Сообщение Vitekkz88 »

Mad_Ahab писал(а):Как вообще организовать передачу произвольных последовательностей чисел по TCP?
http://www.labviewportal.org/viewtopic.php?f=294&t=7704
Вторым сообщением пример. В проекте и клиент и сервер. Можете этот пример немного модифицировать и отправлять данные по событию(используя event structure, например).
Если не получится, то пишите - будем разбираться.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Аватара пользователя
Mad_Ahab
junior
junior
Сообщения: 66
Зарегистрирован: 12 янв 2015, 16:33
Версия LabVIEW: 2013
Контактная информация:

Re: TCP

Сообщение Mad_Ahab »

Большое спасибо, получилось!

Сделал (простите за деревянность решения - это мой первый проект в LV, я осваиваю по ходу) как сказали - массив байтов преобразовал в строку, отправил по TCP, пришел соотвествующий (все правильно, я проверил) акноледж. Спустя некоторое время выскочила ошибка №56 на элементе Read. В чем ее суть в данном случае?
Есть какая-то глобальная логика в реализации TCP-соединений в LV, я, видимо, не совсем понимаю. Чего не хватает? Что нужно иметь в виду?
Вложения
Безымянный.jpg
Курю маны, дым уже глаза ест...
Изображение
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Коммуникация с приборами»