⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.cpp

📁 超音波測距程式
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#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 + -