Показано с 1 по 6 из 6

Тема: Получение значений от влагомера по TCP

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию Получение значений от влагомера по TCP

    Добрый день.
    Помогите пожалуйста разобраться, третий день не могу собрать все в рабочий вариант,уже кучу всего перепробовал. (Готов отблагодарить,наверное это самый правильный путь, так как знаний не хватает, пишите в личку)
    Есть СПК и влагомер который по протоколу TCP/IP при подключении к порту 4002 отправляет данные с интервалом 500мс :
    [0…3] – значение влажности в формате float ( [0] - младший байт, [3] - старший байт )
    [4] – номер текущего рецепта расчета значения влажности от 0 до 20,
    [5] – максимально возможное количество рецептов 20.
    До чего дошел:
    С помощью библиотеки CAA Net Base Services, устанавливаю соединение, значения удается получить.
    Но вот как их правильно обработать не знаю:
    1)Если получаю значения в переменную типа String(6),потом разбираю ее на массив байт [1..6], то значения [4] и [5] спокойно можно обработать из этого массива, а вот как свернуть первые 4 байта из массива в float не могу понять никак.
    Пример
    fbTcpRead
    (
    xEnable := TRUE,
    hConnection := fbTcpClient.hConnection,
    pData := ADR(VlString),
    szSize := SIZEOF(VLString),
    );

    2) Если делаю передаю указатель на Real, то периодически получаю нужное мне значение в переменной VLREAL, но как получить другие [4..5] не представляю.

    fbTcpRead
    (
    xEnable := TRUE,
    hConnection := fbTcpClient.hConnection,
    pData := ADR(VLREAL),
    szSize := SIZEOF(VLREAL),
    );
    Понимаю логически,что мне необходимо работать с буфером целиком и часть байт с 0...3 отправлять в переменную REAL,a 4 и 5 байт записывать в целочисленное, но как это сделать не понимаю.
    Возможно есть примеры?


    Также при необходимости обратно нужно отправлять команды в формате:
    [0] = 1 - код команды выбора рецепта
    [1]- номер требуемого рецепта (0-20), вот с этим тоже вопрос, в какой тип данных необходимо отправить,я понимаю, что размер команды 2 байта, но в какой тип переменной их нужно записать?

    fbTcpWrite
    (
    xExecute := TRUE,
    hConnection := fbTcpClient.hConnection,
    pData := ADR(sClientString),
    szSize := SIZEOF(sClientString)
    );
    Последний раз редактировалось oif; 12.02.2021 в 14:02.

Похожие темы

  1. Получение значений температуры 100П
    от bosch в разделе Программируемые реле
    Ответов: 7
    Последнее сообщение: 05.03.2020, 14:01
  2. Получение значений float32
    от инок в разделе СПК2хх
    Ответов: 57
    Последнее сообщение: 29.11.2015, 14:34
  3. Получение данных из ПЛК на ПК
    от bladerunner в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 06.01.2015, 08:51
  4. Получение сертификата.
    от smk1635 в разделе Трёп (Курилка)
    Ответов: 8
    Последнее сообщение: 13.08.2011, 20:58
  5. Получение данных от МВА8
    от КИПиА в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 03.03.2008, 14:10

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •