Обсуждение участника:DeveloperX347
"...моделирование принципиальных схем..." очень интерестно, электроникой занимаешся? --Участник:Lit-uriy Да. Обучаюсь по специальности Электропривод и автоматика промышленных установок и технологических комплексов, хотя удалось получить тему дипломного проекта по программированию. :-) Тема такая: "Разработка программного комплекса по созданию, моделированию и синтезу релейно-контакторных схем урпавления электроприводом." Разрабатывал программу на Borland C++ Builder для Windows. Готово на 86% уже. Осталось чуть-чуть доделать и отмоделировать переходной процесс. ;-) Привожу начало кода программы на C++. Если уже кто то начнет преобразование программы под ОС Linux OpenSUSE, то будет очень хорошо, сэкономим время.
#include <vcl.h> #pragma hdrstop #include "added.h" #include "Unit1.h" #include <math.h> #include "About.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; TForm *Form2; TForm *Form3; TForm *OKBottomDlg; TForm *OKBottomDlg1; int delWidth, delHeight, delX, delY = 2000; int provodnik = 0; TCursor curs; int line = 0; int xpoint, ypoint, absx, absy; int component = 0; int kol_knop_raz, kol_knop_zam, obsh_knop, kol_rele_kl, kol_rele_vr = 0; int obsh_dvig, kol_motor_post, kol_asinh_kz, kol_asinh_faz, kol_rez = 0; int kol_ind, kol_trpit, kol_odpit, kl, rl = 0; int releis = 0; int Count, shag, newschema = 0; int kolich_vr, kolich_dv, nomer_kont = 0; int nomer_line = 0; int not_line, not_line2, xline1, yline1, find_line = 0; String Load; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { FNametemp = "shema.tmp"; } //--------------------------------------------------------------------------- void __fastcall TForm1::N6Click(TObject *Sender) { ListBox1->Visible = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::ListBox1Click(TObject *Sender) { ListBox1->Visible = false; } //--------------------------------------------------------------------------- void __fastcall TForm1::N3Click(TObject *Sender) { ListBox1->Visible = false; provodnik = 0; line = 0; component = 0; kol_knop_raz, kol_knop_zam, obsh_knop, kol_rele_kl, kol_rele_vr = 0; obsh_dvig, kol_motor_post, kol_asinh_kz, kol_asinh_faz, kol_rez = 0; kol_ind, kol_trpit, kol_odpit, kl, rl = 0; releis = 0; Count, shag = 0; Memo1->Clear(); DeleteFile(FNametemp); newschema = 1; Invalidate(); } //--------------------------------------------------------------------------- void __fastcall TForm1::N2Click(TObject *Sender) { AboutBox->ShowModal(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Animate1->Active = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Animate1->Active = false; } //--------------------------------------------------------------------------- void __fastcall TForm1::ToolButton1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { ToolButton1->ShowHint = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::N4Click(TObject *Sender) { if (OpenDialog1->Execute()) {FName = OpenDialog1->FileName; Memo1->Lines->LoadFromFile(FName); } Count = Memo1->Lines->Count; kol_rele_kl = 0; kol_rele_vr = 0; while (shag<=Count) { Load = Memo1->Lines->Strings[shag]; if (Load=="rele_kl") { Graphics::TBitmap *pBitmap = new Graphics::TBitmap(); pBitmap->LoadFromFile(".\\images\\rele.bmp"); Form1->Canvas->Draw(StrToInt(Memo1->Lines->Strings[shag+1]),StrToInt(Memo1->Lines->Strings[shag+2]),pBitmap); delWidth = StrToInt(Memo1->Lines->Strings[shag+1]) + pBitmap->Width; delHeight = StrToInt(Memo1->Lines->Strings[shag+2]) + pBitmap->Height; Form1->Canvas->Font->Color = clBlue; kol_rele_kl = kol_rele_kl + 1; Form1->Canvas->TextOutA(StrToInt(Memo1->Lines->Strings[shag+5]),StrToInt(Memo1->Lines->Strings[shag+6]),Memo1->Lines->Strings[shag+3]+IntToStr(kol_rele_kl)); delete pBitmap; shag = shag + 6; } if (Load=="rele_vr") { Graphics::TBitmap *pBitmap = new Graphics::TBitmap(); pBitmap->LoadFromFile(".\\images\\rele.bmp"); Form1->Canvas->Draw(StrToInt(Memo1->Lines->Strings[shag+1]),StrToInt(Memo1->Lines->Strings[shag+2]),pBitmap); delWidth = StrToInt(Memo1->Lines->Strings[shag+1]) + pBitmap->Width; delHeight = StrToInt(Memo1->Lines->Strings[shag+2]) + pBitmap->Height; Form1->Canvas->Font->Color = clBlue; kol_rele_vr = kol_rele_vr + 1; Form1->Canvas->TextOutA(StrToInt(Memo1->Lines->Strings[shag+5]),StrToInt(Memo1->Lines->Strings[shag+6]),Memo1->Lines->Strings[shag+3]+IntToStr(kol_rele_vr)); delete pBitmap; shag = shag + 6; } if (Load=="knop_raz") { Graphics::TBitmap *pBitmap = new Graphics::TBitmap(); pBitmap->LoadFromFile(".\\images\\knop_raz.bmp"); Form1->Canvas->Draw(StrToInt(Memo1->Lines->Strings[shag+1]),StrToInt(Memo1->Lines->Strings[shag+2]),pBitmap); delWidth = StrToInt(Memo1->Lines->Strings[shag+1]) + pBitmap->Width; delHeight = StrToInt(Memo1->Lines->Strings[shag+2]) + pBitmap->Height; kol_knop_raz = kol_knop_raz + 1; obsh_knop = kol_knop_raz + kol_knop_zam; Form1->Canvas->Font->Color = clBlue; Form1->Canvas->TextOutA(StrToInt(Memo1->Lines->Strings[shag+5]),StrToInt(Memo1->Lines->Strings[shag+6]),Memo1->Lines->Strings[shag+3]+IntToStr(obsh_knop)); delete pBitmap; shag = shag + 6; } if (Load=="knop_zam") { Graphics::TBitmap *pBitmap = new Graphics::TBitmap(); pBitmap->LoadFromFile(".\\images\\knop_zam.bmp"); Form1->Canvas->Draw(StrToInt(Memo1->Lines->Strings[shag+1]),StrToInt(Memo1->Lines->Strings[shag+2]),pBitmap); delWidth = StrToInt(Memo1->Lines->Strings[shag+1]) + pBitmap->Width; delHeight = StrToInt(Memo1->Lines->Strings[shag+2]) + pBitmap->Height; kol_knop_zam = kol_knop_zam + 1; obsh_knop = kol_knop_raz + kol_knop_zam; Form1->Canvas->Font->Color = clBlue; Form1->Canvas->TextOutA(StrToInt(Memo1->Lines->Strings[shag+5]),StrToInt(Memo1->Lines->Strings[shag+6]),Memo1->Lines->Strings[shag+3]+IntToStr(obsh_knop)); delete pBitmap; shag = shag + 6; }
//Это только начало. На данный момент текст программы занимает около 100 страниц печатного текста 13 размера шрифта Times New Roman. Хоть я и поддерживаю мораль Open Source, но мне нужно будет оценивать стоимость программы (оценить экономическю эффективность). Буду благодарен, если у кого-то найдется какой-нибудь курсовой проект (в электронном виде) на тему "Экономическая эффективность применения информационных технологий". Если что-то найдется, то пишите мне на емайл: special347-hide2@bk.ru
Преобразование
Еслиб ты писал на MS VC то можно было бы вести речь о преобразовании, но с Билдером, это просто надо код писать заново, я уже по этому поводу думал. Пишу для своей промавтоматики на Билдере ( уж 3 месяца как случайно в програмерах, собственно электроника моя профессия), вроде удобно, что окошки визуально строишь, объекты продуманы, их методы и т.д. Но не переносимо совсем. Думаю надо что-то крос-платформенное изучать:
- QT-идеологию нужно понять(слоты и сигналы),
- wxWidgets-инструмент визуального проектирования под винды, убожество, уж лучше ручками в коде,
- GTK-тоже запутаный.
Надо мозговать.
lit-uriy 16:57, 28 октября 2007 (UTC)
По ценам
Совсем не вкурсе, надо смотреть товарищей типа:
- Siemens
- Schneider electric
- Misubishi
Ну и там краем глаза на Адамы и т.п. У Шнайдера вроде такие софтины все платные, а у Сименса помоему и дармовые есть, про Адамы, к ним без денег, помоему, вообще нестоит соваться.
Уменя дипломец похожий был, комплекс контроля и автоматического регулирования температуры для установки МЛЭ "Ангара"
lit-uriy 17:18, 28 октября 2007 (UTC)
Да, спасибо. :-) Мне придется заново переписать код программы. Хочу использовать GTK+. А экономическую часть уже получил с сайта www.disser.ru . :-) Не бесплатно правда, но ничего, это того стоит. ;-)
Lit-uriy, подскажи пожалуйста если знаешь. Вот: Еще не разу не получалось загрузиться с Windows раздела (который находится на втором жестком диске, на первом диске стоит OpenSUSE 10.3. В меню загрузчика GRUB есть пункт Windows, но загрузиться не получается. Появляется сообщение NTLDR missing.... ну и так далее, либо ничего не появляется. :-( В мандриве загрузка удавалась. Придется через биос каждый раз менять порядок загрузки жестких дисков. ;-)
Про виндовоз
Об этом недавно в списке рассылки вопрос поднимался, архив
Темы: Загрузка WinXP, два диска
Ркомендую подписаться на openSUSE-ru, надо просто отправить письмо, без темы и без содержимого. --lit-uriy 05:24, 22 ноября 2007 (UTC)