Ну вот проект таки дорос до версии 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 кнопку слева на тулбаре.
Прогресс будет временно выводится в окно терминала (именно из-за этого я его временно отключил).
Идем далее. Версия миниботаПро сильно отличается то минибота? добавлять в файл проекта свойство принадлежности платформе минибот или минибот про?
Вы так и не ответили какие есть возможности подключения минибота к компьютеру. Какие планируются?
Фуух. Вроде бы все на данный момент. Пошел отсыпаться и готовиться к трудовым будням

.*нечаянно глянув на часы, Штирлиц, увидев, что сечас 2,35 ночи

, ужсанулся и резко пшел спать*