Обсуждение участника: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 месяца как случайно в програмерах, собственно электроника моя профессия), вроде удобно, что окошки визуально строишь, объекты продуманы, их методы и т.д. Но не переносимо совсем. Думаю надо что-то крос-платформенное изучать:

  1. QT-идеологию нужно понять(слоты и сигналы),
  2. wxWidgets-инструмент визуального проектирования под винды, убожество, уж лучше ручками в коде,
  3. GTK-тоже запутаный.

Надо мозговать.

lit-uriy 16:57, 28 октября 2007 (UTC)

По ценам

Совсем не вкурсе, надо смотреть товарищей типа:

  1. Siemens
  2. Schneider electric
  3. 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)