Аддон к программе

Тема в разделе "WASM.RESEARCH", создана пользователем TheBoss, 11 мар 2012.

  1. TheBoss

    TheBoss New Member

    Публикаций:
    0
    Регистрация:
    11 мар 2012
    Сообщения:
    4
    Доброго времени суток
    Посоветовали Ваш форум для решения вопроса

    Итак, имеется: написанная "кем-то"(заказанная старым руководством) программа, которая преобразует входящие данные с микроконтроллера, обрабатывает и строит графики как в реальном времени, так и с загрузки данных из файла.
    Написана она на Дельфи. Для графика используется TChart (если важно).

    Требуется: так как сами эксперименты могут длиться хоть сутками, то по необходимо ставить на графике "метки" с комментариями - чтобы всегда можно было вернуться к какому-либо участку, посмотреть метки или распечатать

    Пробовал: изначально хотел полностью переписать программу. Подогнал обработку данных под график - почти похоже на исходный результат (правда есть отклонения), но запнулся на определении протокола микроконтроллера

    Посоветовали: написать аддон, который позволял бы ставить метки в изначальной программе. Собственно, таких вещей никогда не делал. Исходя из вышенаписанного реально ли это сделать? и что посоветуете?


    P.S. - если разделом промахнулся - прошу прощения
     
  2. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Если в проге интерфейс для плагинов не предусмотрен, упаришься ты этот TChart переписывать.
     
  3. TheBoss

    TheBoss New Member

    Публикаций:
    0
    Регистрация:
    11 мар 2012
    Сообщения:
    4
    Интерфейса разумеется нету.
    То есть по Вашему мнению решить задачу таким образом нереально?
     
  4. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    TheBoss
    А если стянуть из нета спецификации этого микроконтроллера?
    Они ни на что не натолкнут?
     
  5. TheBoss

    TheBoss New Member

    Публикаций:
    0
    Регистрация:
    11 мар 2012
    Сообщения:
    4
    разумеется пробовал. Плата контроллера прямо сейчас передо мной - Silicon Labs C8051FX20-TB. Покопался на офсайте - примеров не нашел. В "нашу" техподдержку дистрибьютора - ответ:
    "Платы отладки с наименованием C8051F005-TB, C8051F020-TB, C8051F120-B, C8051F040-TB и т.д. обычно входят в состав отладочных комплектов. В состав комплектов кроме этих плат также входит программатор-адаптер DEBUGADPTR1-USB, который необходим для программирования по интерфейсу JTAG запаянных на плате микроконтроллеров.
    Если у вас есть программатор-адаптер DEBUGADPTR1-USB вы можете самостоятельно запрограммировать или перепрограммировать контроллер установленный на плате C8051Fххх-TB."
    А ничего естественно от предыдущих разработчиков не осталось. Документации в том числе

    К тому же исходя из работы программы - данные поступают с разделением на 4 канала (с разным коэф усилением). Пробовал "отпортмонить" программу - работает с портом в асинхронном режиме. Размер входного буфера = 65536, выходного = 1024. Маска ожидания данных по RXCHAR и TXEMPTY.... Большая часть параметров задается в ней самой...
    В этом направлении и застопорился на этом...
     
  6. gorodon

    gorodon New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2009
    Сообщения:
    301
    TheBoss
    1) Замена win-программы на свою - нужно полностью восстановить/повторить интерфейс взаимодействия с девайсом (RS-232 -?).
    Если доков совсем нет, то
    -анализируем обмен, разбираемся с пакетами (программы дампинга обмена по комам тут светились)
    -реверсим часть win-программы, связанную с генерацией и парсингом пакетов по RS

    2) "обрабатывает и строит графики как в реальном времени, так и с загрузки данных из файла."
    если win-программа дампит данные в файл (а потом может графики по данным из файла строить), то тогда можете попытаться разобраться с форматом файла и попробовать заточить свою программу под работу с файлами данных.

    3) "написать аддон, который позволял бы ставить метки в изначальной программе." - ну, реализовать доп-й функционал в виде отдельной
    bpl/dll в принципе возможно(сложно но можно :)... только завтра заказчик захочет еще чего-нить добавить.. :).. - предпочтительнее 1 вариант, будете "держатем калек".
     
  7. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    540
    Написать DLL-ку со специфичным классом, порожденным от TChart и реализующим нужные специфики (метки, автоперескоки на нужные места и проч).
    Пофиксить секцию импорта, добавив в нее эту длл-ку и запись о конструкторе.
    Олей или Идой отловить место создания объекта TChart в программе, и вместо вызова конструктора TChart исправить на вызов конструктора специфичного класса в DLL-ке. Практически все функции взаимодействия с пользователем в VCL (onMouseMove, onLButtonDown и проч) являются вирутальными, так что на пользовательских событиях будут вызваны функции специфичного класса (импортировать их нет необходимости, поскольку их адреса будут в таблице виртуальных функций, адрес которой в объект запихнет конструктор).
     
  8. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    540
    Хм, забыл про выделение памяти. Просто конструктор подменить нельзя. Надо заменить/обойти весь код, где создается TChart, скажем, сделать в DLL-ке функцию, создающую объект специфичного класса, прописать в импорте эту функцию и вместо участка кода создания объекта TChart вызвать эту функцию. Так корректнее будет.
     
  9. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Проще будет всю работу с портом вытащить, в Delphi такие вещи модно было делать через компоненты, так что нужный код скорее всего локализован и легко вычленяем.
     
  10. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Тогда уж проще прицепится к существующему чарту через обработчики WindowProc и\или всевозможные OnXXX. Но для это ес-но версия чарта\дельфей должна быть совместимой + по любому могут остаться сомнения, не глюканет ли эта прицепка на чем нибудь (как известно, в приложении и в dll и формальные описания\типы VCL-классов разные и глобальные переменные ес-но тоже, включая Application, Screen и кучку скрытых - может и TChart какие-то свои глобалы юзает)
     
  11. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    TheBoss
    Раз это дельфя, то попробуй скормить прогу IDR. Не исключено (и даже весьма вероятно), что работа с портом завернута в отдельный поток TThread.Execute с переадачей данных в программу через Synchronize - это может сущ-но упростить ковыряние... ;)
     
  12. TheBoss

    TheBoss New Member

    Публикаций:
    0
    Регистрация:
    11 мар 2012
    Сообщения:
    4
    Ну да, она складывает просто значения в файл. Методом научного тыка и дифференцирования - я научился строить по ним похожий график

    Спасибо за советы, сейчас постараюсь переварить информацию