ну...лишний код
ну...лишний код
А я что-то торможу уже к вечеру. Одна переменная типа Real спокойно передается в Лектус, т.к. просто на вход данных функционального блока просто подаем указатель на эту переменную, а на вход количества данных просто размер переменной. А вот 2,3 и больше переменных передавать нужно, как я понимаю, с помощью формирования массива данных? Что-то у меня не получилось этот массив создать с помощью побайтного копирования-компилятор ругается.
пытался сделать нечто следующее:
VAR
e,f: real;
pt: pointer to byte;
my_array: array[1..8] of byte;
END_VAR
pt:=adr(e);
my_array[1]:=pt^;
my_array[2]:=(pt+1)^;
...
...
pt:=adr(f);
my_array[5]:=pt^;
my_array[6]:=(pt+1)^;
Ну и т.д.
Может я совсем затупил? Подтолкните в нужном направлении...
бред какой то, нет возможности сейчас на трешке показать, в дереве регистров именуете всё через раз, а далее как на картинке просто присваиваете и всё, зачем на байты то всё "бить"
ЗЫ улыбнуло про лишний код, где он?
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Как это где? На картинке справа. Если ставить не 2 байта, а флоат, то он не нужен
В третьем ещё не приходилось, только планирую в нем работать
ошибка 43 - это ошибка библиотеки, не удалось пропинговать через драйвер серверный IP адрес ( по умолчанию DNS Google поставил = 8.8.8.8 ).
модуль Ethernet в проекте никаким образом не влияет на на эту ошибку.
по разбитию и слиянию флоатов повторю вложением. импортируйте в проект и собирайте/разбирайте.
Артем, спасибо! А насчет ошибки я уже понял, что это проделки связи. Попозже к вечеру связь стала устойчивой и я гонял переменные по GPRS больше часа. Но вот еще что заметил: если FB_GPRS доходит до 43-ей ошибки (про другие не знаю) и на нем выставляется Restarting, то все - больше GPRS не перезапустишь, только передергивание питания помогает. Может там в FB_GPRS какую-то переменную нужно сбросить? Или я чего-то не так делаю? Или это проделки оператора (в чем крайне сомневаюсь)?
Вот, нашел в ветке "СПК107+ПМ01" обсуждение аналогичной проблемы с FB_GPRS. Возникли вопросы:
вообще рестарт - это :
1) закрытие всех процессов в линуксе связанных с GPRS
А как это сделать из программы?
2) проверочное завершение звонка для модема и перевод в режим приёма АТ команд.
Это дождаться пока на выходе FB_GPRS.Done появится FALSE?
3) переподключение.
Это, как я понимаю, опять подать на FB_GPRS.Enable:=TRUE и дождаться на FB_GPRS.Done появления TRUE?
Несколько смутило: на крайний случай, можете снять флаг Enable. подождать секунд 10, свести на пару секунд ( пока библиотека проверит стартовые компоненты в системе) , далее снять, выдержать паузу завершения всех процессов пункта 1 и 2. начать заново. . Дело в том, что Enable переводил в False и ждал достаточно долго. А вот дальше не совсем понял что это значит? Флаг Enable снимаем, далее что свести на пару секунд? Или это взвести флаг Enable на пару секунд? Если так, то остальное становится понятно.
Последний раз редактировалось Hemann; 03.02.2015 в 11:32.
Вот, нашел в ветке "СПК107+ПМ01" обсуждение аналогичной проблемы с FB_GPRS. Возникли вопросы:
вообще рестарт - это :
1) закрытие всех процессов в линуксе связанных с GPRS
А как это сделать из программы?
лучше не стоит, т.к. закрытие процессов делал цикличным до достижения результата. а так - библиотека sysexecute для работы с консолью linux.
2) проверочное завершение звонка для модема и перевод в режим приёма АТ команд.
Это дождаться пока на выходе FB_GPRS.Done появится FALSE?
правильно.
3) переподключение.
Это, как я понимаю, опять подать на FB_GPRS.Enable:=TRUE и дождаться на FB_GPRS.Done появления TRUE?
Несколько смутило: на крайний случай, можете снять флаг Enable. подождать секунд 10, свести на пару секунд ( пока библиотека проверит стартовые компоненты в системе) , далее снять, выдержать паузу завершения всех процессов пункта 1 и 2. начать заново. . Дело в том, что Enable переводил в False и ждал достаточно долго. А вот дальше не совсем понял что это значит? Флаг Enable снимаем, далее что свести на пару секунд? Или это взвести флаг Enable на пару секунд? Если так, то остальное становится понятно.
именно про стартовый флаг на Enable я и говорю. управляется запуск именно по нему. по заднему фронту этой переменной инициализируется алгоритм останова всех процессов библиотеки, по завершению которых done становится false.
по поводу флага restarting. видимо этот момент я пропустил (когда не удаётся подсоединиться он не сбрасывается, а лишь выдаётся ошибка 43 (учтём для релиза и подправим))