Advertisement
roozgar

my new thread

Jun 16th, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 17.67 KB | None | 0 0
  1. function ecef2lla(a : array of double): PAnsiChar ; stdcall ; external 'ODCS.dll';
  2. function ECI2ECF(a : array of double): PAnsiChar ; stdcall ; external 'ODCS.dll';
  3. function eci2orb(a : array of double): PAnsiChar ; stdcall ; external 'ODCS.dll';
  4. function lighting(a : array of double): PAnsiChar ; stdcall ; external 'ODCS.dll';
  5. function AzElRg(a : array of double): PAnsiChar ; stdcall ; external 'ODCS.dll';
  6. function AOS_LOS(a : array of double): PAnsiChar ; stdcall ; external 'ODCS.dll';
  7. function Beta_angle(a : array of double ; b: double ; c: double ): PAnsiChar ; stdcall ; external 'ODCS.dll';
  8. function solar(a : array of double): PAnsiChar ; stdcall ; external 'ODCS.dll';
  9. function ssgp4(a : array of double): PAnsiChar ; stdcall ; external 'ODCSPR.dll';
  10. function EKF_Predict(a : integer): PAnsiChar ; stdcall ; external 'ODCSPR.dll';
  11.  
  12. ...
  13.  
  14. procedure TMyThread3.Execute;
  15. var
  16.   sendStr : string;
  17.   strFile:string;
  18.   //file
  19.   myFile : TextFile;
  20.   List: TStringList;
  21.   vStr1,vStr2,vStr3,vStr4,vStr5,vStr6,vStr7,vStr8,vStr9,vStr10,DBServerIp,DBName ,DBUserName,DBPassWord : string;
  22.   //
  23.   UniConnectionRead,UniConnectionWrite : TUniConnection;
  24.   UniQueryRead,UniQueryWrite : Tuniquery;
  25.  
  26.   i:integer;
  27.   panelfor : Tpanel;
  28.   selCom : TComponent;
  29.   activePage:integer;
  30.   OutPutList: TStringList;
  31.  
  32.   gsid , lineText , stri1 ,stri2 ,stri3 ,stri4 ,stri5 ,stri6 ,stri7 , stri8 , stri9 , stri10 , mysqlQuryOutStr: string;
  33.   Listlight : TStringList;
  34.   j,sSecTimeVal,igs : integer;
  35.   arr,arr1,arr2 ,arr3 : array of double;
  36.   ListEcf,ListEcfF2,Listloc,gsAziRange : TStringList;
  37.   thePointDate : TDateTime;
  38.   thePointDateStamp:int64;
  39.   gsdataList : array of array of string;
  40.   fdsGSValues  : tstringlist;
  41.   IGcounter , dateStrSt, dateStrEn  :integer;
  42. begin
  43.     //form1.Label23.Caption , form1.Label25.Caption , form1.Label27.Caption, form1.Label29.Caption, form1.Label31.Caption , form1.Label33.Caption , form1.Label35.Caption , form1.Label37.Caption
  44.    {
  45.        Thread3 := TMyThread3.Create( inttostr(DateUtils.YearOf(DateTimePicker1.Date)) ,inttostr(DateUtils.MonthOf(DateTimePicker1.Date))
  46.           , inttostr(DateUtils.DayOf(DateTimePicker1.Date)) , '00' , '00' , '00' , '1');
  47.         //---
  48.       end;
  49.     end    }
  50.  
  51. //----------------------------------------------------------------------------------------------------------------------------
  52.   try
  53.          
  54.       form1.Button2.Enabled:=false;
  55.       form1.AbLED5.Checked:=true;
  56.       i:=0;
  57.       j:=0;
  58.       Listlight := TStringList.Create;
  59.       setlength(arr,15);
  60.  
  61.       arr := [strtofloat(form1.Label23.Caption) , strtofloat(form1.Label25.Caption) , strtofloat(form1.Label27.Caption),
  62.               strtofloat(form1.Label29.Caption), strtofloat(form1.Label31.Caption) , strtofloat(form1.Label33.Caption)
  63.               ,strtofloat(form1.Label35.Caption) , strtofloat(form1.Label37.Caption) , ye.ToInteger , mo.ToInteger , da.ToInteger
  64.               , ho.ToInteger , mi.ToInteger , se.ToInteger ,1];
  65.  
  66.       if fileexists( 'OutputSGP4.txt' ) then
  67.       begin
  68.         deletefile('OutputSGP4.txt');
  69.       end;
  70.  
  71.            ssgp4(arr);
  72.  
  73.       //-------------------------------------
  74.  
  75.         try
  76.             strFile := ExpandFileName(ExtractFileDir(Application.ExeName))+'\settings.inc';
  77.             if fileexists(strFile)  then
  78.             begin
  79.                 AssignFile(myFile, strFile );
  80.                 Reset(myFile);
  81.                 ReadLn(myFile, vStr1 );
  82.                 ReadLn(myFile, vStr2 );
  83.                 ReadLn(myFile, vStr3 );
  84.                 ReadLn(myFile, vStr4 );
  85.                 ReadLn(myFile, vStr5);
  86.                 ReadLn(myFile, vStr6);
  87.                 ReadLn(myFile, vStr7);
  88.                 ReadLn(myFile, vStr8 );
  89.                 ReadLn(myFile, vStr9 );
  90.                 ReadLn(myFile, vStr10 );
  91.                 CloseFile(myFile);
  92.             end;
  93.  
  94.            try
  95.                 UniConnectionWrite := TUniConnection.Create(nil);
  96.                 UniConnectionWrite.ProviderName:='Mysql';
  97.                 UniConnectionWrite.Server := vStr7;
  98.                 UniConnectionWrite.Username := vStr9;
  99.                 UniConnectionWrite.Password := vStr10;
  100.                 UniConnectionWrite.Database := 'sat';
  101.                 UniConnectionWrite.AutoCommit := true;
  102.                 UniConnectionWrite.SpecificOptions.Values['MySQL.UseUnicode'] := 'True';
  103.                 UniConnectionWrite.Connected := true;
  104.  
  105.                 UniQueryRead := TUniQuery.Create(nil);
  106.                 UniQueryRead.Connection := UniConnectionWrite;
  107.                 UniQueryWrite := TUniQuery.Create(nil);
  108.                 UniQueryWrite.Connection := UniConnectionWrite;
  109.            except
  110.                   on E : Exception do
  111.                   begin
  112.                       TThread.Synchronize(TThread.CurrentThread,
  113.                       procedure
  114.                       begin
  115.                          form1.memo1.Lines.Add('Cant connect to mysql in thread');
  116.  
  117.                          form1.memo1.Lines.Add( UniConnectionWrite.Server );
  118.                          form1.memo1.Lines.Add( UniConnectionWrite.Username );
  119.                          form1.memo1.Lines.Add( UniConnectionWrite.Password );
  120.                          form1.memo1.Lines.Add( UniConnectionWrite.Database );
  121.  
  122.                          form1.memo1.Lines.Add(E.ClassName+' , message: '+E.Message);
  123.                       end);
  124.                   end;
  125.            end;
  126.  
  127.            try
  128.               dateStrSt := DateTimeToUnix(strtodatetime(da+'/'+mo+'/'+ye+' 00:00:00'));
  129.               dateStrEn := DateTimeToUnix(strtodatetime(da+'/'+mo+'/'+ye+' 23:59:59'));
  130.             except
  131.                   on E : Exception do begin
  132.                       TThread.Synchronize(TThread.CurrentThread,
  133.                       procedure
  134.                       begin
  135.                          form1.memo1.Lines.Add(E.ClassName+' , message: '+E.Message);
  136.                          form1.memo1.Lines.Add(ye+'/'+mo+'/'+da+' 00:00:00');
  137.                          form1.memo1.Lines.Add('error there...');
  138.                       end);
  139.                   end;
  140.             end;
  141.             UniQueryWrite.SQL.Text := 'delete FROM `fds_data` where rtime>'+QuotedStr(dateStrSt.ToString)+' and rtime<'+QuotedStr(dateStrEn.ToString)+' ;';
  142.             UniQueryWrite.Execute;
  143.  
  144.  
  145.             UniQueryWrite.SQL.Text := 'Delete FROM `fds_gs` where rtime>'+QuotedStr(dateStrSt.ToString)+' and rtime<'+QuotedStr(dateStrEn.ToString)+' ;';
  146.             UniQueryWrite.Execute;
  147.  
  148.  
  149.  
  150.               AssignFile(myFile, 'OutputSGP4.txt' );
  151.               Reset(MyFile);
  152.  
  153.               // Display the file contents
  154.               mysqlQuryOutStr:='';
  155.               IGcounter:=0;
  156.               while (not Eof(myFile)) and (not Terminated) do
  157.               begin
  158.  
  159.                   TThread.Synchronize(TThread.CurrentThread,
  160.                   procedure
  161.                   begin
  162.                      form1.label46.Caption:= i.ToString;
  163.                   end);
  164.  
  165.  
  166.                   try
  167.                       ReadLn(myFile, lineText);
  168.                       List := TStringList.Create;
  169.                       Split(',', lineText , List) ;
  170.                       //--------------
  171.                       setlength(arr1,20);
  172.                       arr1 := [ List[0].ToExtended , List[1].ToExtended , List[2].ToExtended , List[3].ToExtended , List[4].ToExtended , List[5].ToExtended ,
  173.                               List[6].ToExtended , List[7].ToExtended, List[8].ToExtended ,List[9].ToExtended , List[10].ToExtended,List[11].ToExtended ,
  174.                               32 , -0.4399619, 0.140682 , 0.3333 , -0.05219 , -0.003875 , 0.00032 , 0 ] ;
  175.                       stri1 := ECI2ECF(arr1);
  176.                       ListEcf := TStringList.Create;
  177.                       Split(',', stri1 , ListEcf);
  178.  
  179.                       stri2 := ecef2lla([      ListEcf[0].ToDouble    ,    ListEcf[1].ToDouble     , ListEcf[2].ToDouble       ] );
  180.  
  181.                       ListEcfF2 := TStringList.Create;
  182.  
  183.                       Split(',', stri2 , ListEcfF2);
  184.  
  185.                       stri3 := eci2orb([List[0].ToExtended , List[1].ToExtended , List[2].ToExtended , List[3].ToExtended , List[4].ToExtended , List[5].ToExtended]);
  186.                       Listloc := TStringList.Create;
  187.                       Split(',', stri3 , Listloc);
  188.  
  189.                       if Trunc(List[11].ToExtended)=60  then
  190.                           sSecTimeVal := 0
  191.                       else
  192.                           sSecTimeVal := Trunc(List[11].ToExtended);
  193.                       thePointDate := EncodeDateTime( List[6].ToInteger ,List[7].ToInteger ,List[8].ToInteger ,List[9].ToInteger ,List[10].ToInteger, sSecTimeVal ,0);
  194.                       thePointDateStamp := DateTimeToUnix( thePointDate );
  195.                   except
  196.                         TThread.Synchronize(TThread.CurrentThread,
  197.                         procedure
  198.                         begin
  199.                            form1.memo1.Lines.Add('Cant run ods dll for sgp4 functions on : '+lineText);
  200.                         end);
  201.                   end;
  202.  
  203.                 //-------------------------------------------
  204.                   try
  205.  
  206.                       //fdsGSValues := tstringlist.Create();
  207.                       //mysqlQuryOutStr:='';
  208.                       for Igs := 1 to form1.AdvStringGrid1.RowCount-1 do begin
  209.                       //while (not UniQueryRead.Eof) do begin
  210.                         setlength(arr2,6);
  211.                         arr2 := [ List[0].ToExtended , List[1].ToExtended , List[2].ToExtended
  212.                         ,form1.AdvStringGrid1.Cells[2,igs].ToExtended ,form1.AdvStringGrid1.Cells[3,igs].ToExtended ,form1.AdvStringGrid1.Cells[4,igs].ToExtended ] ;
  213.                         stri4 := AzElRg( arr2 );
  214.                         gsAziRange := TStringList.Create;
  215.                         Split(',', stri4 , gsAziRange);
  216.                         //--------------------
  217.                         stri5 := AOS_LOS( arr2 );
  218.                         //stri5:='1';
  219.                         //memo1.Lines.Add('aos:'+stri5);
  220.                         //--------------------
  221.                         setlength(arr3 , 9);
  222.                         arr3 := [ List[6].ToExtended ,List[7].ToExtended ,List[8].ToExtended ,
  223.                                   List[9].ToExtended ,List[10].ToExtended ,List[11].ToExtended ,
  224.                                   List[0].ToExtended , List[1].ToExtended , List[2].ToExtended ] ;
  225.                         stri6 := lighting( arr3 );
  226.                         //form1.memo1.Lines.Add('ligh:'+stri6);
  227.                         //-------------------------------
  228.  
  229.                          mysqlQuryOutStr := mysqlQuryOutStr
  230.                            + '( '+QuotedStr(thePointDateStamp.ToString)+' , '+QuotedStr(form1.AdvStringGrid1.Cells[0,igs])+', '
  231.                            +QuotedStr(gsAziRange[0])+', '+QuotedStr(gsAziRange[1])+', '+QuotedStr(gsAziRange[2])+', '+QuotedStr(stri5)+', '+QuotedStr(stri6)+',0 ),';
  232.  
  233.                         //UniQueryRead.Next;
  234.                         j:=j+1;
  235.                       end;
  236.  
  237.                       if IGcounter>100 then
  238.                        begin
  239.                             IGcounter:=0;
  240.                             delete(mysqlQuryOutStr,length(mysqlQuryOutStr),1);
  241.                             UniQueryWrite.SQL.Text := 'INSERT INTO `fds_gs` (`rtime`,`gs_id`,`azm`,`elev`,`rang`,`link_aval`,`lighting`,`loc_time`) VALUES '
  242.                             +mysqlQuryOutStr+';';
  243.                             UniQueryWrite.Execute;
  244.                             mysqlQuryOutStr:='';
  245.                        end;
  246.                        IGcounter := IGcounter + 1 ;
  247.  
  248.                   except
  249.                       on E : Exception do begin
  250.                         TThread.Synchronize(TThread.CurrentThread,
  251.                         procedure
  252.                         begin
  253.                            form1.Memo1.Lines.Add(E.ClassName+' , 12 message: '+E.Message);
  254.                            form1.memo1.Lines.Add('Cant write data to fds_gs_data...');
  255.                         end);
  256.                       end;
  257.  
  258.  
  259.  
  260.                   end;
  261.                   //---------------------------------------------------
  262.                   try
  263.                       //---------------------
  264.                       UniQueryWrite.SQL.Text := 'INSERT INTO `fds_data` (`type`,`x`,`y`,`z`,`vx`,`vy`,`vz`,`rtime`,`rgroup`,`ecfx`,`ecfy`,`ecfz`,'+
  265.                       '`ecfvx`,`ecfvy`,`ecfvz`,`lat`,`lng`,`alt`,`sma`,`ecc`,`incl`,`argop`,`raan`,`truea`,`lighting`,`loctime`,`status`) VALUES '+
  266.                       '(:f0,:f1,:f2,:f3,:f4,:f5,:f6,:f7,:f8,:f9,:f10,:f11,:f12,:f13,:f14,:f15,:f16,:f17,:f18,:f19,:f20,:f21,:f22,:f23,:f24,:f25,:f26);';
  267.                       UniQueryWrite.Params[0].DataType := ftString;
  268.                       UniQueryWrite.Params[1].DataType := ftString;
  269.                       UniQueryWrite.Params[2].DataType := ftString;
  270.                       UniQueryWrite.Params[3].DataType := ftString;
  271.                       UniQueryWrite.Params[4].DataType := ftString;
  272.                       UniQueryWrite.Params[5].DataType := ftString;
  273.                       UniQueryWrite.Params[6].DataType := ftString;
  274.                       UniQueryWrite.Params[7].DataType := ftString;
  275.                       UniQueryWrite.Params[8].DataType := ftString;
  276.                       UniQueryWrite.Params[9].DataType := ftString;
  277.                       UniQueryWrite.Params[10].DataType := ftString;
  278.                       UniQueryWrite.Params[11].DataType := ftString;
  279.                       UniQueryWrite.Params[12].DataType := ftString;
  280.                       UniQueryWrite.Params[13].DataType := ftString;
  281.                       UniQueryWrite.Params[14].DataType := ftString;
  282.                       UniQueryWrite.Params[15].DataType := ftString;
  283.                       UniQueryWrite.Params[16].DataType := ftString;
  284.                       UniQueryWrite.Params[17].DataType := ftString;
  285.                       UniQueryWrite.Params[18].DataType := ftString;
  286.                       UniQueryWrite.Params[19].DataType := ftString;
  287.                       UniQueryWrite.Params[20].DataType := ftString;
  288.                       UniQueryWrite.Params[21].DataType := ftString;
  289.                       UniQueryWrite.Params[22].DataType := ftString;
  290.                       UniQueryWrite.Params[23].DataType := ftString;
  291.                       UniQueryWrite.Params[24].DataType := ftString;
  292.                       UniQueryWrite.Params[25].DataType := ftString;
  293.                       UniQueryWrite.Params[26].DataType := ftString;
  294.                       UniQueryWrite.Params[0].AsString := 'sgp4';
  295.                       UniQueryWrite.Params[1].AsString := List[0];
  296.                       UniQueryWrite.Params[2].AsString := List[1];
  297.                       UniQueryWrite.Params[3].AsString := List[2];
  298.                       UniQueryWrite.Params[4].AsString := List[3];
  299.                       UniQueryWrite.Params[5].AsString := List[4];
  300.                       UniQueryWrite.Params[6].AsString := List[5];
  301.                       UniQueryWrite.Params[7].AsString := thePointDateStamp.ToString;
  302.                       UniQueryWrite.Params[8].AsString := '0';
  303.                       UniQueryWrite.Params[9].AsString := ListEcf[0];
  304.                       UniQueryWrite.Params[10].AsString := ListEcf[1];
  305.                       UniQueryWrite.Params[11].AsString := ListEcf[2];
  306.                       UniQueryWrite.Params[12].AsString := ListEcf[3];
  307.                       UniQueryWrite.Params[13].AsString := ListEcf[4];
  308.                       UniQueryWrite.Params[14].AsString := ListEcf[5];
  309.                       UniQueryWrite.Params[15].AsString := ListEcfF2[0];
  310.                       UniQueryWrite.Params[16].AsString := ListEcfF2[1];
  311.                       UniQueryWrite.Params[17].AsString := ListEcfF2[2];
  312.                       UniQueryWrite.Params[18].AsString := Listloc[0];
  313.                       UniQueryWrite.Params[19].AsString := Listloc[1];
  314.                       UniQueryWrite.Params[20].AsString := Listloc[2];
  315.                       UniQueryWrite.Params[21].AsString := Listloc[3];
  316.                       UniQueryWrite.Params[22].AsString := Listloc[4];
  317.                       UniQueryWrite.Params[23].AsString := Listloc[5];
  318.                       UniQueryWrite.Params[24].AsString := '1';
  319.                       UniQueryWrite.Params[25].AsString := '1';
  320.                       UniQueryWrite.Params[26].AsString := 'new';
  321.                       UniQueryWrite.Execute;
  322.                       i:=i+1;
  323.                   except
  324.                       TThread.Synchronize(TThread.CurrentThread,
  325.                       procedure
  326.                       begin
  327.                          form1.memo1.Lines.Add('Cant write sgp4 data to fds_data...');
  328.                       end);
  329.                   end;
  330.                 //------------------------------------------------
  331.                 //form1.memo1.Lines.Add( lineText );
  332.                 //application.ProcessMessages;
  333.               end;
  334.                   TThread.Synchronize(TThread.CurrentThread,
  335.                   procedure
  336.                   begin
  337.                      form1.memo1.Lines.Add( 'Fds sgp4 added row '+ i.ToString );
  338.                      form1.memo1.Lines.Add( 'Fds sgp4 gs added row '+ j.ToString  );
  339.                   end);
  340.         finally
  341.             CloseFile(myFile);
  342.             UniQueryRead.Free;
  343.             UniQueryWrite.Free;
  344.             UniConnectionWrite.Free;
  345.         end;
  346.   finally
  347.       TThread.Synchronize(TThread.CurrentThread,
  348.       procedure
  349.       begin
  350.           form1.AbLED5.Checked:=false;
  351.           form1.Button8.Enabled:=false;
  352.           form1.Button7.Enabled:=true;
  353.       end);
  354.   end;
  355. //-----------------------------------------------------------------------------------------------------------------------------
  356. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement