📄 unit1.~cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <stdio.h>
#include <dstring.h>
#include <math.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "Comm"
#pragma link "CSPIN"
#pragma resource "*.dfm"
TForm1 *Form1;
unsigned char Sonar_T[30][2];
unsigned int Sonar_Ta_[12],Sonar_Tb_[12],index;
bool start_f,TH;
POINT CENTER={200,200};
int S1=200,S2=200,S3=200,S4=200,S5=200,S6=200,S7=200,S8=200,S9=200,S10=200,S11=200,S12=200;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
BaudRateIndex->ItemIndex = 4;
DataBitIndex->ItemIndex = 4;
ParityIndex->ItemIndex = 0;
StopBitIndex->ItemIndex = 0;
PortIndex->ItemIndex = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if (Comm1->Enabled())
Comm1->Close();
// Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::OpenPortClick(TObject *Sender)
{
if (!Comm1->Enabled())
{
Comm1->DeviceName = "Com"+ IntToStr(PortIndex->ItemIndex+1);
Comm1->BaudRate =(TBaudRate)BaudRateIndex->ItemIndex;
Comm1->DataBits =(TDataBits)DataBitIndex->ItemIndex;
Comm1->Parity =(TParity)ParityIndex->ItemIndex;
Comm1->StopBits =(TStopBits)StopBitIndex->ItemIndex;
Comm1->Open();
Comm1->SetRTSState(true);
Comm1->SetDTRState(true);
OpenPort->Enabled=!Comm1->Enabled();
ClosePort->Enabled=Comm1->Enabled();
// SendData->Enabled=Comm1->Enabled();
Memo2->Lines->Add("Open "+Comm1->DeviceName+" OK");
PortIndex->Enabled = false;
}
else Memo2->Lines->Add("Port has already been opened!");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClosePortClick(TObject *Sender)
{
if (Comm1->Enabled())
{
Comm1->Close();
OpenPort->Enabled=!Comm1->Enabled();
ClosePort->Enabled=Comm1->Enabled();
// SendData->Enabled=Comm1->Enabled();
Memo2->Lines->Add("Close "+Comm1->DeviceName+" OK");
PortIndex->Enabled = true;
}
else Memo2->Lines->Add("Port has not been opened!");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Comm1RxChar(TObject *Sender, DWORD Count)
{
int i , Bytes;
char ts[5000];
unsigned char rb[5000];
Memo2->Lines->Add("Before Read, InQueCount : " + IntToStr(Comm1->InQueCount()));
Bytes = Comm1->Read(rb, Count);
if (Bytes>0)
{
rb[Bytes]=0 ;
rs="";
for (i=0;i<Bytes;i++)
{
if (rbRecieveASCII->Checked)
{ sprintf(ts,"%c",rb[i]); rs=rs+ts;}
else
{ if (rb[i]>15)
{sprintf(ts,"%X",rb[i]); rs=rs+ts;}
else
{sprintf(ts,"%X",rb[i]); rs=rs+'0'+ts;}
//===================================
if (start_f)
{
if (TH)
{
Sonar_T[index][0]=rb[i];
TH = false;
}
else// TL;
{
Sonar_T[index][1]=rb[i];
TH = true;
index ++;
}
if (index>=24)//12*2;
{
start_f = false;
Edt_Sonar_0a->Text = Sonar_Ta_[0] = Sonar_T[0][0]*256+Sonar_T[0][1];
Edt_Sonar_0b->Text = Sonar_Tb_[0] = Sonar_T[1][0]*256+Sonar_T[1][1];
Edt_Sonar_1a->Text = Sonar_Ta_[1] = Sonar_T[2][0]*256+Sonar_T[2][1];
Edt_Sonar_1b->Text = Sonar_Tb_[1] = Sonar_T[3][0]*256+Sonar_T[3][1];
Edt_Sonar_2a->Text = Sonar_Ta_[2] = Sonar_T[4][0]*256+Sonar_T[4][1];
Edt_Sonar_2b->Text = Sonar_Tb_[2] = Sonar_T[5][0]*256+Sonar_T[5][1];
Edt_Sonar_3a->Text = Sonar_Ta_[3] = Sonar_T[6][0]*256+Sonar_T[6][1];
Edt_Sonar_3b->Text = Sonar_Tb_[3] = Sonar_T[7][0]*256+Sonar_T[7][1];
Edt_Sonar_4a->Text = Sonar_Ta_[4] = Sonar_T[8][0]*256+Sonar_T[8][1];
Edt_Sonar_4b->Text = Sonar_Tb_[4] = Sonar_T[9][0]*256+Sonar_T[9][1];
Edt_Sonar_5a->Text = Sonar_Ta_[5] = Sonar_T[10][0]*256+Sonar_T[10][1];
Edt_Sonar_5b->Text = Sonar_Tb_[5] = Sonar_T[11][0]*256+Sonar_T[11][1];
Edt_Sonar_6a->Text = Sonar_Ta_[6] = Sonar_T[12][0]*256+Sonar_T[12][1];
Edt_Sonar_6b->Text = Sonar_Tb_[6] = Sonar_T[13][0]*256+Sonar_T[13][1];
Edt_Sonar_7a->Text = Sonar_Ta_[7] = Sonar_T[14][0]*256+Sonar_T[14][1];
Edt_Sonar_7b->Text = Sonar_Tb_[7] = Sonar_T[15][0]*256+Sonar_T[15][1];
Edt_Sonar_8a->Text = Sonar_Ta_[8] = Sonar_T[16][0]*256+Sonar_T[16][1];
Edt_Sonar_8b->Text = Sonar_Tb_[8] = Sonar_T[17][0]*256+Sonar_T[17][1];
Edt_Sonar_9a->Text = Sonar_Ta_[9] = Sonar_T[18][0]*256+Sonar_T[18][1];
Edt_Sonar_9b->Text = Sonar_Tb_[9] = Sonar_T[19][0]*256+Sonar_T[19][1];
Edt_Sonar_10a->Text = Sonar_Ta_[10] = Sonar_T[20][0]*256+Sonar_T[20][1];
Edt_Sonar_10b->Text = Sonar_Tb_[10] = Sonar_T[21][0]*256+Sonar_T[21][1];
Edt_Sonar_11a->Text = Sonar_Ta_[11] = Sonar_T[22][0]*256+Sonar_T[22][1];
Edt_Sonar_11b->Text = Sonar_Tb_[11] = Sonar_T[23][0]*256+Sonar_T[23][1];
// Timer1-Clock : 93.75KHz = 10.67us
// Voice speed : 34.6cm/ms = 0.0346cm/us
// So 1-clock-distance = 10.67*0.0346 = 0.369cm/clock
Edt_Distance_0a->Text = Sonar_Ta_[0]*0.369/2-4.5;//
Edt_Distance_0b->Text = Sonar_Tb_[0]*0.369/2-4.5;
Edt_Distance_1a->Text = Sonar_Ta_[1]*0.369/2-4.85;
Edt_Distance_1b->Text = Sonar_Tb_[1]*0.369/2-4.85;
Edt_Distance_2a->Text = Sonar_Ta_[2]*0.369/2-4.5;
Edt_Distance_2b->Text = Sonar_Tb_[2]*0.369/2-4.5;
Edt_Distance_3a->Text = Sonar_Ta_[3]*0.369/2-4.5;
Edt_Distance_3b->Text = Sonar_Tb_[3]*0.369/2-4.5;
Edt_Distance_4a->Text = Sonar_Ta_[4]*0.369/2-4.5;//
Edt_Distance_4b->Text = Sonar_Tb_[4]*0.369/2-4.5;
Edt_Distance_5a->Text = Sonar_Ta_[5]*0.369/2-4.85;
Edt_Distance_5b->Text = Sonar_Tb_[5]*0.369/2-4.85;
Edt_Distance_6a->Text = Sonar_Ta_[6]*0.369/2-4.5;
Edt_Distance_6b->Text = Sonar_Tb_[6]*0.369/2-4.5;
Edt_Distance_7a->Text = Sonar_Ta_[7]*0.369/2-4.5;
Edt_Distance_7b->Text = Sonar_Tb_[7]*0.369/2-4.5;
Edt_Distance_8a->Text = Sonar_Ta_[8]*0.369/2-4.5;//
Edt_Distance_8b->Text = Sonar_Tb_[8]*0.369/2-4.5;
Edt_Distance_9a->Text = Sonar_Ta_[9]*0.369/2-4.85;
Edt_Distance_9b->Text = Sonar_Tb_[9]*0.369/2-4.85;
Edt_Distance_10a->Text = Sonar_Ta_[10]*0.369/2-4.5;
Edt_Distance_10b->Text = Sonar_Tb_[10]*0.369/2-4.5;
Edt_Distance_11a->Text = Sonar_Ta_[11]*0.369/2-4.5;
Edt_Distance_11b->Text = Sonar_Tb_[11]*0.369/2-4.5;
Memo3->Lines->Add(Edt_Distance_1a->Text);
Memo4->Lines->Add(Edt_Distance_1b->Text);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -