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

📄 main.cpp

📁 QAM module to use in Java with an easy interface and powerful performance
💻 CPP
📖 第 1 页 / 共 5 页
字号:
        NewClient->LingerOnOff=wsLingerOff;
        NewClient->OnDataAvailable     = ClientDataAvailable;
        NewClient->OnSessionClosed     = ClientSessionClosed;
        NewClient->HSocket             = SocketUnRealTCPServerListner->Accept();
        if(QAMUnRealHeaderGotIt)NewClient->Send(QAMUnRealHeader,QAMUnRealHeadersize);
         else
         {
                //Display("close delay\r");
                NewClient->CloseDelayed();
         }

}
//---------------------------------------------------------------------------
void __fastcall TQAMForm::Display(AnsiString Msg)
{
        //if(!QAMForm->Showing)return;
        criticalsection->Acquire();
        tstrings->Add(Msg);
        criticalsection->Release();
        PostMessage(this->Handle,CM_GOTTEXTDATABLOCK, 0,0);
}

void __fastcall TQAMForm::FormDestroy(TObject *Sender)
{
        FILE *output_file;
        output_file = fopen("Wisdom.ini", "w");
        if(output_file!=NULL)
        {
                fftw_export_wisdom_to_file(output_file);
                fclose(output_file);
        }
         else Application->MessageBox("Failed To Save Wisdom.", "Alert!", MB_OK);

    if (FClients) {
        delete FClients;
        FClients = NULL;
    }
    if(ftp_clients)
    {
        for(int i=0;i<ftp_clients->Count;i++)delete((FTPClient_PutFile*)ftp_clients->Items[i]);
        delete ftp_clients;
        ftp_clients=NULL;
    }
    delete [] rs232incharbuf;
}
//---------------------------------------------------------------------------

void __fastcall TQAMForm::ClientDataAvailable(TObject *Sender,
      WORD Error)
{
    char Buf[1280];
    int  Len;
    Len = ((TWSocket *)Sender)->Receive(&Buf, sizeof(Buf) - 1);

    if (Len <= 0)return;
    // Remove any trailing CR/LF
    while ((Len > 0) &&
           ((Buf[Len - 1] == '\r') || (Buf[Len - 1] == '\n')))
        Len--;
    // Nul terminate data
    Buf[Len] = 0;

  //  Display("DataAvailable: \"" + (AnsiString)Buf + "\"\r");
}
//---------------------------------------------------------------------------
void __fastcall TQAMForm::ClientSessionClosed(TObject *Sender,
      WORD Error)
{
    TWSocket *Cli;
    int      Itm;

    Cli = (TWSocket *)Sender;
 //   Display("Client diconnected\r");

    Itm = FClients->IndexOf(Cli);
    if (Itm >= 0)
        FClients->Delete(Itm);
    // We can"t destroy a TWSocket from a SessionClosed event handler.
    // So we post a message to delay destruction until we are out of the
    // message handler.
    PostMessage(Handle, WM_DESTROY_SOCKET, 0, (LPARAM)Cli);
}
//---------------------------------------------------------------------------
void __fastcall TQAMForm::WMDestroySocket(TMessage Msg)
{
    delete (TWSocket *)(Msg.LParam);
}
//---------------------------------------------------------------------------

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

void __fastcall TQAMForm::SendRs232(unsigned char * Buf,int Len)
{
        rs232criticalsection->Acquire();
        if(sending)
        {
                for(int i=0;i<Len;i++)
                {
                        rs232outcharbuf[rs232outcharbufptr]=Buf[i];
                        rs232outcharbufptr++;
                        if(rs232outcharbufptr>=sizeof(rs232outcharbuf))
                        {
                                rs232outcharbufptr=0;
                                //if we get here where sending data to quick to the rs232 port
                        }
                }
        }
        else
        {
                rs232outcharbufptr=0;
                sending=true;
                CiaComPort1->Send(Buf,Len);
        }
        rs232criticalsection->Release();
}
//---------------------------------------------------------------------------




void __fastcall TQAMForm::CiaComPort1DataSent(TObject *Sender)
{
        rs232criticalsection->Acquire();
        CiaComPort1->PurgeTx();
        if(rs232outcharbufptr)
        {
                CiaComPort1->Send(rs232outcharbuf,rs232outcharbufptr);
                rs232outcharbufptr=0;
        }
        else
        {
                sending=false;
        }
        rs232criticalsection->Release();
}
//---------------------------------------------------------------------------







void __fastcall TQAMForm::CMStationIDChanged(TMessage &Msg)
{
        AnsiString tas;
        StationIDRec=StationIDRec.Trim();
        tas="";
        for(int i=1;i<=StationIDRec.Length();i++)
        {
                char ch=StationIDRec[i];
                if(   ((ch>='A')&&(ch<='Z'))  || ((ch>='a')&&(ch<='z'))  ||  ((ch>='0')&&(ch<='9')) || (ch==' ') || (ch=='!')|| (ch=='@')|| (ch=='#')|| (ch=='$')|| (ch=='%')|| (ch=='^')|| (ch=='&')|| (ch=='-')|| (ch=='+')|| (ch=='{')|| (ch=='}')|| (ch=='[')|| (ch==']')|| (ch==',')|| (ch=='\'')|| (ch==';'))tas+=(AnsiString)ch;
        }
        RXStationIDText->Caption=StationIDRec;
        RXStationIDText->Cursor=crHandPoint;
        //StatusBar1->Panels->Items[1]->Text="StationID=\""+StationIDRec+"\"";
        StationIDRecDirectoryCompatibil=tas;
        SaveDirectory=ExtractFilePath(Application->ExeName)+"\\"+tas;
        CreateDir(SaveDirectory);
        UpDateSaveDirectoryList();
}


//------------------------------------------------------------------------
// web reciveing section
//------------------------------------------------------------------------
//------------------------------------------------------------------------
void __fastcall TQAMForm::CMGotFilePacketForYou(TMessage &Msg)
{
        bool found;
        int tage;
        //Display("Got Packet For You\r");
        int pktsize=*(int*)&file_pkt_buffer[file_pkt_buffer_ptr_r];
        if(pktsize==-1)
        {
                file_pkt_buffer_ptr_r=0;
                pktsize=*(int*)&file_pkt_buffer[file_pkt_buffer_ptr_r];
                //Display("gotbacktrack\r");
        }
        file_pkt_buffer_ptr_r+=4;
        int namelen=StrLen(&file_pkt_buffer[file_pkt_buffer_ptr_r]);
        AnsiString name=(AnsiString)(char*)&file_pkt_buffer[file_pkt_buffer_ptr_r];
        int size=*((int*)&file_pkt_buffer[file_pkt_buffer_ptr_r+namelen+1]);
        int age=*((int*)&file_pkt_buffer[file_pkt_buffer_ptr_r+namelen+5]);
        int pos=*((int*)&file_pkt_buffer[file_pkt_buffer_ptr_r+namelen+9]);

     //   Display("Name="+name+"  Size="+size+"  pos="+pos+"\r");
        StatusBar1->Panels->Items[1]->Text=(AnsiString)name+"  ("+(int)(100*(double)pos/(double)size)+"%)";

       // Display((AnsiString)name+" "+pos+"\r");


        found=false;
        for(unsigned int i=0;i<File_name_size_date.size();i++)
        {
                if(File_name_size_date[i].Filename==name)
                {
                        if((File_name_size_date[i].FileDate==age)&&(File_name_size_date[i].FileSize==size))found=true;
                         else {DeleteFile(SaveDirectory+"\\"+name);Display("File Different Deleted Old One\r");UpDateSaveDirectoryList();}
                        break;
                }
        }
        if(found)
        {
            //    Display("Found File\r");
        }
         else
         {
            //    Display("File Not Found\rLooking For met file \""+name+".met"+"\"\r");
                found=false;
                for(unsigned int i=0;i<File_name_size_date.size();i++)
                {
                        if(File_name_size_date[i].Filename==name+".met")
                        {
                                tage=File_name_size_date[i].FileDate;
                                //Display((AnsiString)"metfile found name="+name+".met"+" age="+age+"\r");
                                if(File_name_size_date[i].FileDate==age)found=true;
                                 else
                                 {
                                        if(webmetfilerec>=0)FileClose(webmetfilerec);webmetfilerec=-2;
                                        if(webfilfilerec>=0)
                                        {
                                                //int delme=
                                                FileWrite(webfilfilerec,fil_data.begin(),sizeof(int)*fil_data.size());//&fil_data[0],4*fil_data.size());
                                                //Display((AnsiString)"bytes="+delme+"\r");
                                                FileClose(webfilfilerec);
                                        }
                                        webfilfilerec=-2;
                                        DeleteFile(SaveDirectory+"\\"+name+".met");
                                        DeleteFile(SaveDirectory+"\\"+name+".fil");
                                        //Display((AnsiString)"MetFile Different Deleted Old One. should be=\""+age+"\" but on disk=\""+File_name_size_date[i].FileDate+"\"\r");
                                        webmetfilenamerec="";
                                        UpDateSaveDirectoryList();
                                 }
                                break;
                        }
                }
                if(!found)
                {
 //                       Display("Met File Not Found\rCreating and opening met and fil files\r");
                        if(webmetfilerec>=0)FileClose(webmetfilerec);webmetfilerec=-2;
                        if(webfilfilerec>=0)
                        {
                                //displayfildata();
                                //int delme=
                                FileWrite(webfilfilerec,fil_data.begin(),sizeof(int)*fil_data.size());//&fil_data[0],4*fil_data.size());
                                //Display((AnsiString)"bytes="+delme+"\r");
                                FileClose(webfilfilerec);
                        }
                        webfilfilerec=-2;
                        webmetfilenamerec=name+".met";
                        webmetfilerec=FileCreate(SaveDirectory+"\\"+webmetfilenamerec);
                        FileSetDate(webmetfilerec, age);
                        webfilfilerec=FileCreate(SaveDirectory+"\\"+name+".fil");
                        if(webmetfilerec==-1)Display("Error Creating Met File\r");
                        if(webfilfilerec==-1)Display("Error Creating Fil File\r");
                        //Display("MetFile="+SaveDirectory+"\\"+webmetfilenamerec+"\r");
                        fil_data.resize(1);
                        fil_data[0]=0;
                        UpDateSaveDirectoryList();
                }
                 else
                 {
                       // Display("Met File Found\r");
                        if((webmetfilerec>=0)&&(webfilfilerec>=0)&&(webmetfilenamerec==(name+".met")))
                        {
//                                Display("Met And Fil Files Allready Open\r");
                        }
                         else
                         {
//                                Display("Opening Met And Fil Files\r");
                                if(webmetfilerec>=0)FileClose(webmetfilerec);webmetfilerec=-2;
                                if(webfilfilerec>=0)
                                {
                                        //displayfildata();
                                        //int delme=
                                        FileWrite(webfilfilerec,fil_data.begin(),sizeof(int)*fil_data.size());//&fil_data[0],4*fil_data.size());
                                        //Display((AnsiString)"bytes="+delme+"\r");
                                        FileClose(webfilfilerec);
                                }
                                webfilfilerec=-2;
                                webmetfilenamerec=name+".met";
                                webmetfilerec=FileOpen(SaveDirectory+"\\"+webmetfilenamerec,fmOpenWrite);
                                webfilfilerec=FileOpen(SaveDirectory+"\\"+name+".fil",fmOpenReadWrite);
                                if(webmetfilerec==-1)Display("Error Opening Met File\r");
                                if(webfilfilerec==-1)Display("Error Opening Fil File\r");
                                FileSetDate(webmetfilerec, tage);
                                unsigned int num_bytes_to_read = FileSeek(webfilfilerec,0,2);
                                FileSeek(webfilfilerec,0,0);
                                fil_data.resize(num_bytes_to_read/sizeof(int));
                                num_bytes_to_read = FileRead(webfilfilerec, &fil_data[0], num_bytes_to_read);
                                FileSeek(webfilfilerec,0,0);
                                if(num_bytes_to_read!=(sizeof(int)*fil_data.size()))Display("Error Loading Fil file Data\r");

                            // Display("\r++++++++\ropening name="+name+"\r");
                            // Display((AnsiString)"bytes="+num_bytes_to_read+"\r");
                            // displayfildata();
                            // Display("++++++++++\r");
                             // for(unsigned int i=0;i<fil_data.size();i++)Display((AnsiString)"fil_pos="+fil_data[i]+"\r");
                         }

                 }
                if((webmetfilerec>=0)&&(webfilfilerec>=0)&&(webmetfilenamerec==(name+".met")))
                {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -