roboforum.ru

Технический форум по робототехнике.

МиниБот Студия

Re: МиниБот Студия

EdGull » 17 авг 2008, 08:43

Давай дождемся твоего устаканившегося релиза и потом будет проверять...

Re: МиниБот Студия

MiBBiM » 18 авг 2008, 21:24

Релиз будет ещё не скоро, да и выпускать его сырым не имеет смысла. Поэтому проверочку бы сделать не мешало. Скоро(день-два) выложу новый пробник программатора, тогда проверить надо будет обязательно)
Сечас прикрутил описание типов и работу с потоками. Прикручиваю это к интерфейсу. Как только сделаю, выпушу программатор и начну создавать билдер для проектов, после чего организую работу с сервером прошивок, параллельно улучшая терминал.
Вот описание типа. Кто не согласен или хочет добавить что-нить - дерзайте пока не поздно. кст, полезную фичу прикрутил к файлу-проекту: можно добавлять в него различные файлы (до 255 штук)=) Комментарии, коды и хексы хранятся как .rtf файлы, а потому позволяют полностью извращаться над текстом)
Код: Выделить всёРазвернуть
//описания добавочных файлов
  type FileInf = record
    FileName: string[20];
    ShortComment: string[255];
  end;
//описание проекта
  type Project = record
    ProjectName: string[20];
    ShortComment: string[255];
    Version: single;
    FromSite: boolean;
    Date: string[8];
    HasInternalHex: boolean;//хекс встроен в проект или же валяется где-то на диске
    HexPath: string;
    HasInternalCode: boolean;//аналогично с кодом
    CodePath: string;
    HasWideComment: boolean;
    HasTerminalCodes: boolean;
    HasFiles: boolean;
    Files: array of FileInf;//описатель добавочных файлов
  end;
{структура файла: |размерфайла1|файл1|размерфайла2|файл2|}
{вначале пишутся (если существуют) Hex,Code,WideComment, TerminalCodes)}

P.S. Первую страничку обновлять пока не буду, т.к. отнимает много времени.

Re: МиниБот Студия

MiBBiM » 20 авг 2008, 13:18

ок. после многочисленных проблем удалось сделать сохранение проекта в файл.
Первая так себе новость: кривая запись структуры в поток. Делфи не умеет записывать структуры состоящие из динамических объектов, например строк и дин массивов (как было сделано вначале). Поэтому пришлось организовать хранение информации в виде набора индексировнных строк. Это неудобно, громоздко, но работает хотя бы=)
Вторая так себе новость: mdi дочки не могут иметь собственного меню. это ппц, если честно. Подумываю о переносе проекта на сди, но для этого надо заново собирать интерфейс и ставить иде поновее. походу этого не избежать.
После довода интерфейса доведу до ума файл проекта (в основном это наклепать разных диалогов+написать по этому веселому поводу тонну кода :( ).
Вот так вот. к вечеру отпишусь чего получилось
Последний раз редактировалось MiBBiM 20 авг 2008, 16:03, всего редактировалось 1 раз.

Re: МиниБот Студия

Vooon » 20 авг 2008, 15:35

Читай про [[сериализацию]]
Ну и лучше используй xml, парсеров полно.

Re: МиниБот Студия

MiBBiM » 20 авг 2008, 18:31

Vooon писал(а):Читай про сериализацию

Спасибо. Помогает. Потихоньку втыкается и реализуется.
Vooon писал(а):Ну и лучше используй xml, парсеров полно.

Не вижу смысла. Т.к. работать с форматом проекта будут одна-две, ну, максимум, три программы. xml здесь, на мой взгляд, из преимуществ даст ровно ничего, а недостатком - уменьшение производительности и больший размер проекта. Разве кто-нибудь будет вручную писать проекты в обход интерфейса менеждера? На мой взгляд таких экстремалов найдется немного.

Re: МиниБот Студия

Vooon » 20 авг 2008, 18:46

xml здесь на то, чтобы потом головной боли меньше было.
и в юникоде все.

Re: МиниБот Студия

MiBBiM » 21 авг 2008, 21:34

Ну нзн, сделал бинарное сохраанение пока.
Во вложении: уже можн баловаться с файлами-проектами: добавлять, удалять исходые коды, нексы, комментарии и т.д. Экспортирования пока нет, зато импорт работает прекрасно)+пока нет реализации добавления файлов. В аттаче вложение проверять все кому не лень и докладывать о багах в файл-проекте.
Вложения
MiniBotStudio.rar
0,026nc
(632.37 КиБ) Скачиваний: 17

Re: МиниБот Студия

Myp » 21 авг 2008, 22:23

1. в настройках порта когда выпадающий список выпадает пытаюсь колёсиком прокрутить, а крутится не список
а активная ячейка на форме скачет вниз

Добавлено спустя 1 минуту 40 секунд:
2. нужна функция добавить свою настройку кроме тех 3х которые есть

зачем? а вот для разных роботов
может у меня 1 со медленным уартом а второй с быстрым
вот я бы и соххранил настроечки под каждого робота

Добавлено спустя 54 секунды:
3. там где меняется скин написать что эта галочка включает поддержку скинов и отключает
и чтоб при снятой галке список выбора скина становился неактивный

Добавлено спустя 2 минуты 27 секунд:
4. не работает файл->выход

Re: МиниБот Студия

MiBBiM » 21 авг 2008, 22:50

Myp писал(а):1. в настройках порта когда выпадающий список выпадает пытаюсь колёсиком прокрутить, а крутится не список а активная ячейка на форме скачет вниз

компонент виноват(или мои кривые руки). быть может позже (намного позже) заменю tvaluelisteditor на grid
Myp писал(а):2. нужна функция добавить свою настройку кроме тех 3х которые есть
зачем? а вот для разных роботов
может у меня 1 со медленным уартом а второй с быстрым
вот я бы и соххранил настроечки под каждого робота

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

Здесь такая вещь: поддержка скинов не включится, если не выбрать хотябы один скин. Для этого надо оставлять активность кнопке выбора директории (а то вдруг человек выберет директорию без скинов, а потом отключит скины. больше он их включть не сможет :) ). Насчет активности чекбокса: быть может сделаю неактивным и при выборе директории в него будт подставляться первый найденный скин.
Myp писал(а):4. не работает файл->выход

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

Re: МиниБот Студия

Digit » 22 авг 2008, 09:04

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


Сто лет не писал на Делфях, но... Уже тогда была штука - называлась ActionList. Ее использовать не хочешь по каким причинам?

Re: МиниБот Студия

MiBBiM » 23 авг 2008, 12:45

О_0 удобная штука...
Насчет менюшек. Оказывается, меню дочернего окна не заменяет меню родительского, а хитрым образом дополняет на основании свойства groupindex. Даже удобно получается)

Добавлено спустя 3 часа 33 минуты 17 секунд:
А тем временем колиство кода маленькими, но упорными шажками приближается к отметке в 2000 строк.

Re: МиниБот Студия

Сергей » 23 авг 2008, 13:07

Хех, судя по тому что проект еще находица в "никакой" стадии и переваливает 2К строк могу сказать что это не айс. У меня достаточно большой проект занимает 5К строк примерно, причем уже релиз. Так что если такими темпами пойдет то запутаешься вскоре)

Re: МиниБот Студия

MiBBiM » 23 авг 2008, 15:23

Приближается<>перешагивает. сейчас в нем около 1,5к рабочего кода, во время миграции причешу код, будет меньше слегка. Правда, после все равно будет расти объём. И да, 5к и 2к различается в два с половиной раза, а по функционалу реализовано почти все, кроме загрузки проектов с интернета.

Re: МиниБот Студия

MiBBiM » 25 авг 2008, 00:35

Ну вот проект таки дорос до версии 0,027nc.
Кстати, кто-нибудь (кроме меня, естественно) знает что означают две маленькие буковки nc?
Даю наводку: они появились после отказа от поддержки линукс систем. Кто отгадает - тому плюс (смайлом).

Теперь о самой программе. Она почти мигрировала на новый тип интерфейса (отключен терминал и не причесан код программатора, но это вынужденная мера, см. ниже).
В связи с этим была проделана огромная работа (по времени - все выходные). Я почти что полностью переписал исходник.
Итак, что было сделано:
*Отвязана исполнительная часть программыы от интерфейсной. Закомменчено все вдоль и поперек.
*Т.к. изменился тип интерфейса, пришлось писать алгоритм одновременной работы с несколькими проектами. Пока что немного не доделано(нет функции закрытия проекта).
Об алгоритме расскажу отдельно:
При создании или открытии проекта создается экземпляр класса TProject, хранящийся в динамическом массиве. В классе описаны все параметры проекта+!Очент важно!тексты комментариев, хексов, исходников и т.д.
Это означает, что весь проект (за исключением файлов) хранится в памяти. Как вы понимаете, это очень неудачное решение, но лучшего пока что нет.
Далее проект хитро переписывается в элементы интерфейса. Причем переписывается только та вкладка интерфейса, что открыта пользователем. Это позволяет существенно увеличить скорость переключения между проектами. Опять таки, ваши предложения по этому поводу приветствуются.
*Далее, все основные действия переписаны в компонент Taction. удобство в последующей разработке бесспорно.
*Дуракоустойчивый интерфейс перетерпел изменения и теперь уже может противостоять некоторым незаконным действиям юзера. В качестве примера того, чего стоит это приведу кусочек кода, сохраняющего проект:

Добавлено спустя 12 минут 53 секунды:
Код: Выделить всёРазвернуть
procedure TfrmMain.FileSaveExecute(Sender: TObject);
var i:byte;
    buf:string;
begin
for i:=0 to 5 do SaveInterface(i);       //сохраняю интерфейс в проекты
i:=tcProject.TabIndex;                    //запоминаю проект для сохранения
buf:=Projects[i].FilePath;                //запоминаю путь до файла
if Projects[i].FilePath='' then
  begin
    dlgSave.Filter:='Проект МиниБот Студии *.mbp|*.mbp';
    dlgSave.InitialDir:=Path;
    dlgSave.Execute;
    buf:=dlgSave.FileName;
    if buf='' then exit;                  //выхожу если отменили

    //если пользователь "забыл" написать расширение файла
    if copy(buf, length(buf)-3, 4)<>'.mbp' then
        insert('.mbp', buf, length(buf)+1);
       
    if FileExists(buf) then               //указали на существующий файл
      if MessageDlg('Заменить?', mtInformation, [mbYes,mbNo],0)=mrYes then
      begin
        for i:=0 to High(Projects) do   //такой файл открыт?
          if Projects[i]<>nil then        //пустые проекты не проверяю
            if Projects[i].FilePath=buf then
            begin                            //такой файл открыт?
              MessageDlg('Этот проект открыт, сохранение невозможно!',
                mtInformation, [mbOk], 0);
              exit;
            end;
        DeleteFile(buf);                  //удаляю файл для замены
      end else
      begin
        MessageDlg('Проект не сохранен!', mtinformation, [mbOk],0);
        exit;
      end;
  end;
i:=tcProject.TabIndex;        //восстанавливаю номер, изменившийся после цикла
Projects[i].FilePath:=buf;    //сохранил путь
SaveProject(i);                 //теперь процедура сохранения создаст новый файл
UpdateInterface(i,0,true);
end;

Причем рабочих строчек из всего кода лишь 6-7. Остальные понятно зачем. тем не менее, через это все-равно можно пробится, просто переименовав любой файл под файл проекта. Для защиты от этого дела чуть позже к файлу прибавлю несколько байт, подтверждающих, что текущий файл - это проект студии. Однако известно: "Дураки, они, сцуко, умные и ушлые"
*Может ещё что-нибудь сделано, сейчас ночь уже, так что вспонить не могу, недаром ведь эта версия студии названа MBSReincornation.

2Edgull.
*Внимательно перечитал ветку бутлодера. А правильно понял, что используется вот этот бутлодер:

Добавлено спустя 20 минут 1 секунду:
For Tmp1 = 1 To 255
Print "Checkboot " ; Tmp1
Waitms 10
S = Inkey()
If S = 80 Then
Print ""
Print "programing!!!"
'Jmp $3800
Wait 3
End If
Next

Do
Led = 1 : Waitms 250
Led = 0 : Waitms 250
Loop
****************************************************
и дальше асмовский код?

Дык вот. Программатор теперь ждет строки "Checkboot", после чего шлет "P", ждет 750мс и прошивает.
Буду рад, если вы его проверите.
Как проверить:
Запускаете приложение, лезете в настройки, настраиваете порт.
Файл - новый
Проект - добавить - хекс
Дальше НЕ динамический, загрузить из файла - выбираете небольшой хекс.
После этого, нажимаете левую вернхнюю кнопочку тулбара(полоска с несколькими кнопочками).
Если что-то пошло не так, то отменить процесс можно, нажав 2 кнопку слева на тулбаре.
Прогресс будет временно выводится в окно терминала (именно из-за этого я его временно отключил).

Идем далее. Версия миниботаПро сильно отличается то минибота? добавлять в файл проекта свойство принадлежности платформе минибот или минибот про?
Вы так и не ответили какие есть возможности подключения минибота к компьютеру. Какие планируются?

Фуух. Вроде бы все на данный момент. Пошел отсыпаться и готовиться к трудовым будням :D .*нечаянно глянув на часы, Штирлиц, увидев, что сечас 2,35 ночи :shock: , ужсанулся и резко пшел спать*

Re: МиниБот Студия

EdGull » 25 авг 2008, 07:27

Как проверить:
Запускаете приложение

какое именно приложение?
Версия миниботаПро сильно отличается то минибота?

с точки зрения бутлоадера ничем
Вы так и не ответили какие есть возможности подключения минибота к компьютеру. Какие планируются?

уарт


Rambler\'s Top100 Mail.ru counter