Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kharakhnin / Методичка_проектирование МП систем.doc
Скачиваний:
116
Добавлен:
08.03.2016
Размер:
1.92 Mб
Скачать

6.6. Программа для персонального компьютера на языке с в среде c-Builder

#include <vcl.h>

#include <math.h>

#pragma hdrstop

#include "Unit_Rylon.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "CPort"

#pragma link "CPortCtl"

#pragma resource "*.dfm"

TForm1 *Form1;

AnsiString DATA;

int N=0,b,n=0,n1=0;

// N - текущее количество витков

// b - 1 виток набран

// n - количество импульсов

// n1 - количество импульсов

float R,V,h,w,a,r=0,c;

// R - радиус рулона

// V - скорость движения полосы

// h - толщина полосы

// w - угловая скорость рулона

// a содержит требуемое количество витков

// r - текущий радиус рулона

// c - радиус моталки

char d;

// d - переменная для хранения принятых данных

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

Form1->ComPort1->Open(); // открыли СОМ - порт

Form1->ComPort1->Connected=true;

Form1->Edit1->Text="Стан к пуску готов";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn1Click(TObject *Sender)

{

c=StrToFloat(Form1->LabeledEdit7->Text);

Form1->ComPort1->TransmitChar(1); // отправка сигнала "ПУСК"

}

//---------------------------------------------------------------------------

void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count) // прием данных

{

Form1->ComPort1->ReadStr(DATA,1);

d =(char)(DATA[1]);

Form1->ComPort1->ClearBuffer(true,true);

b=0;

switch((char)d) // обработка принятых данных

{

case 'A': // 6 ИМПУЛЬСОВ

{n=n+6;

if (n==600)

{N=N+1;

b=b+1;

Form1->ComPort1->TransmitChar(2); // отправка сигнала "1 виток"

Form1->ComPort1->ClearBuffer(true,true);

n=0;}

else N=N;

break;};

case 'B': // 60 ИМПУЛЬСОВ

{n1=n1+60;

if (n1==600)

{N=N+1;

b=b+1;

Form1->ComPort1->TransmitChar(2); // отправка сигнала "1 виток"

Form1->ComPort1->ClearBuffer(true,true);

n1=0;}

else N=N;

break;};

case 'C': // 600 ИМПУЛЬСОВ

{N=N+1;

b=b+1;

Form1->ComPort1->TransmitChar(2); // отправка сигнала "1 виток"

Form1->ComPort1->ClearBuffer(true,true);

break;};

case 'D': // 6000 ИМПУЛЬСОВ

{N=N+10;

b=b+1;

Form1->ComPort1->TransmitChar(2); // отправка сигнала "1 виток"

Form1->ComPort1->ClearBuffer(true,true);

break;};

case 'E': // 60000 ИМПУЛЬСОВ

{N=N+100;

b=b+1;

Form1->ComPort1->TransmitChar(2); // отправка сигнала "1 виток"

Form1->ComPort1->ClearBuffer(true,true);

break;};

case 'F': // ТОЛЩИНА ПОЛОСЫ

{Form1->LabeledEdit4->Text="0,45";

break;};

case 'G': // ТОЛЩИНА ПОЛОСЫ

{Form1->LabeledEdit4->Text="0,475";

break;};

case 'H': // ТОЛЩИНА ПОЛОСЫ

{Form1->LabeledEdit4->Text="0,5" ;

break;};

case 'I': // ТОЛЩИНА ПОЛОСЫ

{Form1->LabeledEdit4->Text="0,525";

break;};

case 'J': // ТОЛЩИНА ПОЛОСЫ

{Form1->LabeledEdit4->Text="0,55";

break;};

case 'K': // ПУСК

{Form1->LabeledEdit2->Text="10";

Form1->LabeledEdit4->Text="0,5";

Form1->Edit1->Text="";

Form1->Timer1->Enabled=True; // включаем таймер 1

break;};

case 'L': // СТОП

{Form1->Timer1->Enabled = false; // выключаем таймер 1

Form1->LabeledEdit2->Text="0";

Form1->Edit1->Text="Стан остановлен!";

break;};

case 'M': // РУЛОН НАБРАН

{N=0;

Form1->LabeledEdit6->Text=FloatToStr(N);

Form1->Timer2->Enabled=True; // включаем таймер 2

break;};

case 'N': // ЗАПУСК

{Form1->Timer1->Enabled = True; // включаем таймер 1

Form1->LabeledEdit2->Text="10";

Form1->Edit1->Text="";

break;};

};

a=StrToFloat(Form1->LabeledEdit3->Text);

Form1->LabeledEdit6->Text=FloatToStr(N);

h = StrToFloat(Form1->LabeledEdit4->Text);

V = StrToFloat(Form1->LabeledEdit2->Text);

r = StrToFloat(Form1->LabeledEdit7->Text);

R = r + b*h;

w = (V/R)*9,554;

Form1->LabeledEdit7->Text=FloatToStrF(R,ffFixed,9,4);

Form1->LabeledEdit5->Text=FloatToStrF(w,ffFixed,6,4);

if (N==a) // если рулон набран

{Form1->Edit1->Text="Рулон набран!";

Form1->Timer1->Enabled=False;

Form1->LabeledEdit2->Text="0";

Form1->LabeledEdit4->Text="0,5";

Form1->LabeledEdit7->Text=FloatToStr(c);

Form1->ComPort1->TransmitChar(3);

Form1->ComPort1->ClearBuffer(true,true);}

else N=N;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn2Click(TObject *Sender) // СТОП

{

Form1->BitBtn2->Visible = False;

Form1->BitBtn4->Visible = True;

Form1->ComPort1->TransmitChar(0);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn4Click(TObject *Sender) // ЗАПУСК

{

Form1->BitBtn2->Visible = True;

Form1->BitBtn4->Visible = False;

Form1->ComPort1->TransmitChar(4);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormDestroy(TObject *Sender) // ЗАКРЫТИЕ ФОРМЫ

{

Form1->ComPort1->ClearBuffer(true,true);

Form1->ComPort1->Connected=false;

Form1->ComPort1->Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn3Click(TObject *Sender) // ВЫХОД

{

Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender) // АНИМАЦИЯ

{

Timer1->Tag++;

if (fmod(Timer1->Tag,30)==0){Image1->Visible=false;Image2->Visible=false;

Image3->Visible=false;Image4->Visible=false;

Image5->Visible=false;Image6->Visible=false;

Image7->Visible=false;Image8->Visible=false;

Image9->Visible=false;Image10->Visible=false;

Image11->Visible=false;Image12->Visible=false;

Image13->Visible=false;Image14->Visible=false;

Image15->Visible=false;Image16->Visible=false;

Image17->Visible=false;Image18->Visible=false;

Image19->Visible=false;Image20->Visible=false;

Image21->Visible=false;Image22->Visible=false;

Image23->Visible=false;Image24->Visible=false;

Image25->Visible=true;Image26->Visible=false;}

else if (fmod(Timer1->Tag,30)==1){Image1->Visible=false;Image2->Visible=false;

Image3->Visible=false;Image4->Visible=false;

Image5->Visible=false;Image6->Visible=false;

Image7->Visible=false;Image8->Visible=false;

Image9->Visible=false;Image10->Visible=false;

Image11->Visible=false;Image12->Visible=false;

Image13->Visible=false;Image14->Visible=false;

Image15->Visible=false;Image16->Visible=false;

Image17->Visible=false;Image18->Visible=false;

Image19->Visible=false;Image20->Visible=false;

Image21->Visible=false;Image22->Visible=false;

Image23->Visible=false;Image24->Visible=false;

Image25->Visible=false;Image26->Visible=true;}