Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2019, 11:55   #11
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

А что же вам покажет вот этот код если к примеру придет значение 0x0d или 0x0A
Код:
Length(Rx)
Сделайте лучше массив байт со счетчиком. Или список какой нибудь ... TList у вас там есть.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 02.08.2019, 11:59   #12
PTyTb32
Форумчанин
 
Регистрация: 06.10.2013
Сообщений: 216
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
А что же вам покажет вот этот код если к примеру придет значение 0x0d или 0x0A
функция вернет 1, если же будут оба то вернет 2
на сколько я понял из брейков

какой массив? я не совсем понимаю как его заполнять

Последний раз редактировалось PTyTb32; 02.08.2019 в 12:06.
PTyTb32 вне форума Ответить с цитированием
Старый 02.08.2019, 12:21   #13
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от PTyTb32 Посмотреть сообщение
функция вернет 1, если же будут оба то вернет 2
на сколько я понял из брейков

какой массив? я не совсем понимаю как его заполнять
Не правильно я сказал. В общем я к тому что для строк длина определяется до null то есть до нуля. И если приходят нулевые байты то вы их просто будете пропускать.


ну ладно. вы получили полный пакет с устройства?? Че дальше то не получчаетс?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 02.08.2019, 12:44   #14
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
В общем я к тому что для строк длина определяется до null то есть до нуля. И если приходят нулевые байты то вы их просто будете пропускать.
Ни капли для типа String. У #0 такие же права, как у любого другого символа. И этот тип у лазаря, если не ошибаюсь, может же быть и юникодный. Тогда Length совсем не количество байтов
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 02.08.2019 в 12:56.
Аватар вне форума Ответить с цитированием
Старый 02.08.2019, 12:56   #15
PTyTb32
Форумчанин
 
Регистрация: 06.10.2013
Сообщений: 216
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Не правильно я сказал. В общем я к тому что для строк длина определяется до null то есть до нуля. И если приходят нулевые байты то вы их просто будете пропускать.


ну ладно. вы получили полный пакет с устройства?? Че дальше то не получчаетс?
есть список того что запланировано к примеру
1) Строение 1 Вентилятор 1 включить 02.08.19 12:50
2) Строение 3 Вентилятор 1 Автоматически

и так далее

дальше таймер пускает цикл по этому списку вытягивает из него Строение (соответствует адресу устройства) и Вентилятор (соответствует номеру регистра)
дальше смотрит есть ли там слово "автоматически" если да, то опрашивает устройство с адресом (строение +4) и делает запрос к устройству ввода что бы то сказало в каком положении его регистры, в зависимости от ответа включать реле или выключать, а если слова "автоматически" нет, то просто проверить дату и время
не получается сделать часть которая автоматически работает.. регистры сбиваются и я тоже уже сильно запутался((
PTyTb32 вне форума Ответить с цитированием
Старый 02.08.2019, 13:03   #16
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Ни капли для типа String. У #0 такие же права, как у любого другого символа. И этот тип у лазаря, если не ошибаюсь, может же быть и юникодный. Тогда Length совсем не количество байтов
Ну тогда это не null терминированная строка.

Цитата:
Сообщение от PTyTb32 Посмотреть сообщение
и я тоже уже сильно запутался((
Значит пора взять листочек и ручку и на бумаге нарисовать блоками весь процесс. Разбить на мелкие подзадачи и решить каждую отдельно.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 02.08.2019, 13:07   #17
PTyTb32
Форумчанин
 
Регистрация: 06.10.2013
Сообщений: 216
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Значит пора взять листочек и ручку и на бумаге нарисовать блоками весь процесс. Разбить на мелкие подзадачи и решить каждую отдельно.
да, сидел рисовал уже, посоветовали набор компонентов PascalSCADA пробую на нем... тут не нужно лазить в протокол, оно уже готово
PTyTb32 вне форума Ответить с цитированием
Старый 02.08.2019, 13:21   #18
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от PTyTb32 Посмотреть сообщение
да, сидел рисовал уже, посоветовали набор компонентов PascalSCADA пробую на нем... тут не нужно лазить в протокол, оно уже готово
Ну зато надо будет лазить в мануалах к библиотеке. Еще неизвестно что хуже.

По мне так вроде ничего страшного нету. Там так много регистров чтоли? Я так понял там ответ будет типа "вкл/выкл". Зачем городить огромные либы если тут на пару часов работы. Просто надо точнее проработать на бумаге.

Я бы создал класс "Строение" и класс "Устройство"

Устройство - задал имя "вентилятор", адрес устройства, адрес устрйоства ввода.
строение - имеет адрес и список устрйоств.

создаем список строений.

Код:
далее в таймере:
если период настал то читаем список:
  прочитали номер строения и номер устройства
    ищем в списке это строение и в нем это устрйоство
    нашли 
           есть слово автоматически 
               состояниеУстройства =  устройство-метод-ДайСостояние.
               если состояниеУстройства == вкл то устройство-метод-Выключить.
               иначе устройство-метод-Включить.
           
           Записать дату и время кудато
    идем к следующей записи.
Далее только методы прописать и байты разобрать и все.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 02.08.2019, 13:37   #19
PTyTb32
Форумчанин
 
Регистрация: 06.10.2013
Сообщений: 216
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Ну зато надо будет лазить в мануалах к библиотеке. Еще неизвестно что хуже.
с библиотекой оказалость на много проще) в компоненты все регистры передал потом тяну за нужный он возвращает данные или передает. отличная библиотека на мой взгляд
PTyTb32 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
XML чтение nwhta WPF, UWP, WinRT, XAML 0 18.11.2014 14:08
Чтение mp3 Predator199 PHP 5 04.09.2012 19:28
чтение XML Gudzik11 Общие вопросы Delphi 2 05.12.2011 21:25
Чтение ini romanzi Общие вопросы Delphi 1 20.06.2011 13:33
Чтение MDL Gr@nd Общие вопросы Delphi 0 08.06.2009 06:58