https://yadi.sk/d/tqw8VMdbouKzg
Вид для печати
Проверил проект - обмен идет. Не обращайте внимания на надпись NoBP в компоненте Modbus - смотрите на значения переменных в программе.
На скриншоте - считал из слэйва число 10 в один из элементов массива.
Вложение 22668
Спасибо за ответ!
Здравствуйте, не хочу новую тему открывать.
По нестандартному протоколу приходит(буфер) массив байт, его хочу преобразовать в массив типа INT.
решил через цикл FOR записывать из буфера в двумерный массив
Как присвоить значения из одномерного массива в двумерный?
-------------------
a_a_byte: ARRAY [1..10] OF ARRAY [1..2] OF byte;
a_byte: OF ARRAY [1..20] OF byte;
i, w :int;// i - номер массива байт; w- номер байта массива
-------------
a_a_byte[i,w]:=a_byte[i+5],a_byte[i+4] --компилятор ругается,а я не знаю как правильно..
Добрый день.
Отвечая на конкретный вопрос - проще всего добавить в проект библиотеку CAA Memory и сделать так:
Но если "по нестандартному протоколу приходит(буфер) массив байт", то можно сразу разместить эти байты в "массиве типа INT" без использования каких-то промежуточных двумерных и одномерных байтовых массивов.Код:MEM.MemMove(ADR(a_byte), ADR(a_a_byte), SIZEOF(a_a_byte) );
не понимаю, как собрать из байт int без промежуточных вариантов. Я сделал объединение, чтоб указывать объединение.массивбайт[3]:=байт_буфера[4]; объединение.массивбайт[4]:=байт_буфера[3];
Zerling
BitConverter.ToInt(массив байт, позиция). более правильнее посмотрите в справке. возможно предварительно надо будет переставлять байты. в зависимости в куда, функция возьмет требуемое количество байт с указанной позиции.
ой, тут по ПЛК, извиняюсь :)
Код пока не написан, только разбираюсь, что к чему.
Принимаю посылку через CAA COM.Read / OCL.UNM_SerialRequest, дальше - фб в котором отделяю и собираю адрес и значение переменной(сейчас использую одну, а потом нужно будет с десяток). Собственно, поэтому и использовал юнион - не знаю других способов собрать из двух байт тип инт.
CAA COM.Read / OCL.UNM_SerialRequest возращают считанные данные по указателю - то есть можно передать на входы pBuffer / pResponse адрес чего угодно - например, сразу массива INT'ов.