Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function ecef2lla(a : array of double): PAnsiChar ; stdcall ; external 'ODCS.dll';
- function ECI2ECF(a : array of double): PAnsiChar ; stdcall ; external 'ODCS.dll';
- function eci2orb(a : array of double): PAnsiChar ; stdcall ; external 'ODCS.dll';
- function lighting(a : array of double): PAnsiChar ; stdcall ; external 'ODCS.dll';
- function AzElRg(a : array of double): PAnsiChar ; stdcall ; external 'ODCS.dll';
- function AOS_LOS(a : array of double): PAnsiChar ; stdcall ; external 'ODCS.dll';
- function Beta_angle(a : array of double ; b: double ; c: double ): PAnsiChar ; stdcall ; external 'ODCS.dll';
- function solar(a : array of double): PAnsiChar ; stdcall ; external 'ODCS.dll';
- function ssgp4(a : array of double): PAnsiChar ; stdcall ; external 'ODCSPR.dll';
- function EKF_Predict(a : integer): PAnsiChar ; stdcall ; external 'ODCSPR.dll';
- ...
- procedure TMyThread3.Execute;
- var
- sendStr : string;
- strFile:string;
- //file
- myFile : TextFile;
- List: TStringList;
- vStr1,vStr2,vStr3,vStr4,vStr5,vStr6,vStr7,vStr8,vStr9,vStr10,DBServerIp,DBName ,DBUserName,DBPassWord : string;
- //
- UniConnectionRead,UniConnectionWrite : TUniConnection;
- UniQueryRead,UniQueryWrite : Tuniquery;
- i:integer;
- panelfor : Tpanel;
- selCom : TComponent;
- activePage:integer;
- OutPutList: TStringList;
- gsid , lineText , stri1 ,stri2 ,stri3 ,stri4 ,stri5 ,stri6 ,stri7 , stri8 , stri9 , stri10 , mysqlQuryOutStr: string;
- Listlight : TStringList;
- j,sSecTimeVal,igs : integer;
- arr,arr1,arr2 ,arr3 : array of double;
- ListEcf,ListEcfF2,Listloc,gsAziRange : TStringList;
- thePointDate : TDateTime;
- thePointDateStamp:int64;
- gsdataList : array of array of string;
- fdsGSValues : tstringlist;
- IGcounter , dateStrSt, dateStrEn :integer;
- begin
- //form1.Label23.Caption , form1.Label25.Caption , form1.Label27.Caption, form1.Label29.Caption, form1.Label31.Caption , form1.Label33.Caption , form1.Label35.Caption , form1.Label37.Caption
- {
- Thread3 := TMyThread3.Create( inttostr(DateUtils.YearOf(DateTimePicker1.Date)) ,inttostr(DateUtils.MonthOf(DateTimePicker1.Date))
- , inttostr(DateUtils.DayOf(DateTimePicker1.Date)) , '00' , '00' , '00' , '1');
- //---
- end;
- end }
- //----------------------------------------------------------------------------------------------------------------------------
- try
- form1.Button2.Enabled:=false;
- form1.AbLED5.Checked:=true;
- i:=0;
- j:=0;
- Listlight := TStringList.Create;
- setlength(arr,15);
- arr := [strtofloat(form1.Label23.Caption) , strtofloat(form1.Label25.Caption) , strtofloat(form1.Label27.Caption),
- strtofloat(form1.Label29.Caption), strtofloat(form1.Label31.Caption) , strtofloat(form1.Label33.Caption)
- ,strtofloat(form1.Label35.Caption) , strtofloat(form1.Label37.Caption) , ye.ToInteger , mo.ToInteger , da.ToInteger
- , ho.ToInteger , mi.ToInteger , se.ToInteger ,1];
- if fileexists( 'OutputSGP4.txt' ) then
- begin
- deletefile('OutputSGP4.txt');
- end;
- ssgp4(arr);
- //-------------------------------------
- try
- strFile := ExpandFileName(ExtractFileDir(Application.ExeName))+'\settings.inc';
- if fileexists(strFile) then
- begin
- AssignFile(myFile, strFile );
- Reset(myFile);
- ReadLn(myFile, vStr1 );
- ReadLn(myFile, vStr2 );
- ReadLn(myFile, vStr3 );
- ReadLn(myFile, vStr4 );
- ReadLn(myFile, vStr5);
- ReadLn(myFile, vStr6);
- ReadLn(myFile, vStr7);
- ReadLn(myFile, vStr8 );
- ReadLn(myFile, vStr9 );
- ReadLn(myFile, vStr10 );
- CloseFile(myFile);
- end;
- try
- UniConnectionWrite := TUniConnection.Create(nil);
- UniConnectionWrite.ProviderName:='Mysql';
- UniConnectionWrite.Server := vStr7;
- UniConnectionWrite.Username := vStr9;
- UniConnectionWrite.Password := vStr10;
- UniConnectionWrite.Database := 'sat';
- UniConnectionWrite.AutoCommit := true;
- UniConnectionWrite.SpecificOptions.Values['MySQL.UseUnicode'] := 'True';
- UniConnectionWrite.Connected := true;
- UniQueryRead := TUniQuery.Create(nil);
- UniQueryRead.Connection := UniConnectionWrite;
- UniQueryWrite := TUniQuery.Create(nil);
- UniQueryWrite.Connection := UniConnectionWrite;
- except
- on E : Exception do
- begin
- TThread.Synchronize(TThread.CurrentThread,
- procedure
- begin
- form1.memo1.Lines.Add('Cant connect to mysql in thread');
- form1.memo1.Lines.Add( UniConnectionWrite.Server );
- form1.memo1.Lines.Add( UniConnectionWrite.Username );
- form1.memo1.Lines.Add( UniConnectionWrite.Password );
- form1.memo1.Lines.Add( UniConnectionWrite.Database );
- form1.memo1.Lines.Add(E.ClassName+' , message: '+E.Message);
- end);
- end;
- end;
- try
- dateStrSt := DateTimeToUnix(strtodatetime(da+'/'+mo+'/'+ye+' 00:00:00'));
- dateStrEn := DateTimeToUnix(strtodatetime(da+'/'+mo+'/'+ye+' 23:59:59'));
- except
- on E : Exception do begin
- TThread.Synchronize(TThread.CurrentThread,
- procedure
- begin
- form1.memo1.Lines.Add(E.ClassName+' , message: '+E.Message);
- form1.memo1.Lines.Add(ye+'/'+mo+'/'+da+' 00:00:00');
- form1.memo1.Lines.Add('error there...');
- end);
- end;
- end;
- UniQueryWrite.SQL.Text := 'delete FROM `fds_data` where rtime>'+QuotedStr(dateStrSt.ToString)+' and rtime<'+QuotedStr(dateStrEn.ToString)+' ;';
- UniQueryWrite.Execute;
- UniQueryWrite.SQL.Text := 'Delete FROM `fds_gs` where rtime>'+QuotedStr(dateStrSt.ToString)+' and rtime<'+QuotedStr(dateStrEn.ToString)+' ;';
- UniQueryWrite.Execute;
- AssignFile(myFile, 'OutputSGP4.txt' );
- Reset(MyFile);
- // Display the file contents
- mysqlQuryOutStr:='';
- IGcounter:=0;
- while (not Eof(myFile)) and (not Terminated) do
- begin
- TThread.Synchronize(TThread.CurrentThread,
- procedure
- begin
- form1.label46.Caption:= i.ToString;
- end);
- try
- ReadLn(myFile, lineText);
- List := TStringList.Create;
- Split(',', lineText , List) ;
- //--------------
- setlength(arr1,20);
- arr1 := [ List[0].ToExtended , List[1].ToExtended , List[2].ToExtended , List[3].ToExtended , List[4].ToExtended , List[5].ToExtended ,
- List[6].ToExtended , List[7].ToExtended, List[8].ToExtended ,List[9].ToExtended , List[10].ToExtended,List[11].ToExtended ,
- 32 , -0.4399619, 0.140682 , 0.3333 , -0.05219 , -0.003875 , 0.00032 , 0 ] ;
- stri1 := ECI2ECF(arr1);
- ListEcf := TStringList.Create;
- Split(',', stri1 , ListEcf);
- stri2 := ecef2lla([ ListEcf[0].ToDouble , ListEcf[1].ToDouble , ListEcf[2].ToDouble ] );
- ListEcfF2 := TStringList.Create;
- Split(',', stri2 , ListEcfF2);
- stri3 := eci2orb([List[0].ToExtended , List[1].ToExtended , List[2].ToExtended , List[3].ToExtended , List[4].ToExtended , List[5].ToExtended]);
- Listloc := TStringList.Create;
- Split(',', stri3 , Listloc);
- if Trunc(List[11].ToExtended)=60 then
- sSecTimeVal := 0
- else
- sSecTimeVal := Trunc(List[11].ToExtended);
- thePointDate := EncodeDateTime( List[6].ToInteger ,List[7].ToInteger ,List[8].ToInteger ,List[9].ToInteger ,List[10].ToInteger, sSecTimeVal ,0);
- thePointDateStamp := DateTimeToUnix( thePointDate );
- except
- TThread.Synchronize(TThread.CurrentThread,
- procedure
- begin
- form1.memo1.Lines.Add('Cant run ods dll for sgp4 functions on : '+lineText);
- end);
- end;
- //-------------------------------------------
- try
- //fdsGSValues := tstringlist.Create();
- //mysqlQuryOutStr:='';
- for Igs := 1 to form1.AdvStringGrid1.RowCount-1 do begin
- //while (not UniQueryRead.Eof) do begin
- setlength(arr2,6);
- arr2 := [ List[0].ToExtended , List[1].ToExtended , List[2].ToExtended
- ,form1.AdvStringGrid1.Cells[2,igs].ToExtended ,form1.AdvStringGrid1.Cells[3,igs].ToExtended ,form1.AdvStringGrid1.Cells[4,igs].ToExtended ] ;
- stri4 := AzElRg( arr2 );
- gsAziRange := TStringList.Create;
- Split(',', stri4 , gsAziRange);
- //--------------------
- stri5 := AOS_LOS( arr2 );
- //stri5:='1';
- //memo1.Lines.Add('aos:'+stri5);
- //--------------------
- setlength(arr3 , 9);
- arr3 := [ List[6].ToExtended ,List[7].ToExtended ,List[8].ToExtended ,
- List[9].ToExtended ,List[10].ToExtended ,List[11].ToExtended ,
- List[0].ToExtended , List[1].ToExtended , List[2].ToExtended ] ;
- stri6 := lighting( arr3 );
- //form1.memo1.Lines.Add('ligh:'+stri6);
- //-------------------------------
- mysqlQuryOutStr := mysqlQuryOutStr
- + '( '+QuotedStr(thePointDateStamp.ToString)+' , '+QuotedStr(form1.AdvStringGrid1.Cells[0,igs])+', '
- +QuotedStr(gsAziRange[0])+', '+QuotedStr(gsAziRange[1])+', '+QuotedStr(gsAziRange[2])+', '+QuotedStr(stri5)+', '+QuotedStr(stri6)+',0 ),';
- //UniQueryRead.Next;
- j:=j+1;
- end;
- if IGcounter>100 then
- begin
- IGcounter:=0;
- delete(mysqlQuryOutStr,length(mysqlQuryOutStr),1);
- UniQueryWrite.SQL.Text := 'INSERT INTO `fds_gs` (`rtime`,`gs_id`,`azm`,`elev`,`rang`,`link_aval`,`lighting`,`loc_time`) VALUES '
- +mysqlQuryOutStr+';';
- UniQueryWrite.Execute;
- mysqlQuryOutStr:='';
- end;
- IGcounter := IGcounter + 1 ;
- except
- on E : Exception do begin
- TThread.Synchronize(TThread.CurrentThread,
- procedure
- begin
- form1.Memo1.Lines.Add(E.ClassName+' , 12 message: '+E.Message);
- form1.memo1.Lines.Add('Cant write data to fds_gs_data...');
- end);
- end;
- end;
- //---------------------------------------------------
- try
- //---------------------
- UniQueryWrite.SQL.Text := 'INSERT INTO `fds_data` (`type`,`x`,`y`,`z`,`vx`,`vy`,`vz`,`rtime`,`rgroup`,`ecfx`,`ecfy`,`ecfz`,'+
- '`ecfvx`,`ecfvy`,`ecfvz`,`lat`,`lng`,`alt`,`sma`,`ecc`,`incl`,`argop`,`raan`,`truea`,`lighting`,`loctime`,`status`) VALUES '+
- '(: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);';
- UniQueryWrite.Params[0].DataType := ftString;
- UniQueryWrite.Params[1].DataType := ftString;
- UniQueryWrite.Params[2].DataType := ftString;
- UniQueryWrite.Params[3].DataType := ftString;
- UniQueryWrite.Params[4].DataType := ftString;
- UniQueryWrite.Params[5].DataType := ftString;
- UniQueryWrite.Params[6].DataType := ftString;
- UniQueryWrite.Params[7].DataType := ftString;
- UniQueryWrite.Params[8].DataType := ftString;
- UniQueryWrite.Params[9].DataType := ftString;
- UniQueryWrite.Params[10].DataType := ftString;
- UniQueryWrite.Params[11].DataType := ftString;
- UniQueryWrite.Params[12].DataType := ftString;
- UniQueryWrite.Params[13].DataType := ftString;
- UniQueryWrite.Params[14].DataType := ftString;
- UniQueryWrite.Params[15].DataType := ftString;
- UniQueryWrite.Params[16].DataType := ftString;
- UniQueryWrite.Params[17].DataType := ftString;
- UniQueryWrite.Params[18].DataType := ftString;
- UniQueryWrite.Params[19].DataType := ftString;
- UniQueryWrite.Params[20].DataType := ftString;
- UniQueryWrite.Params[21].DataType := ftString;
- UniQueryWrite.Params[22].DataType := ftString;
- UniQueryWrite.Params[23].DataType := ftString;
- UniQueryWrite.Params[24].DataType := ftString;
- UniQueryWrite.Params[25].DataType := ftString;
- UniQueryWrite.Params[26].DataType := ftString;
- UniQueryWrite.Params[0].AsString := 'sgp4';
- UniQueryWrite.Params[1].AsString := List[0];
- UniQueryWrite.Params[2].AsString := List[1];
- UniQueryWrite.Params[3].AsString := List[2];
- UniQueryWrite.Params[4].AsString := List[3];
- UniQueryWrite.Params[5].AsString := List[4];
- UniQueryWrite.Params[6].AsString := List[5];
- UniQueryWrite.Params[7].AsString := thePointDateStamp.ToString;
- UniQueryWrite.Params[8].AsString := '0';
- UniQueryWrite.Params[9].AsString := ListEcf[0];
- UniQueryWrite.Params[10].AsString := ListEcf[1];
- UniQueryWrite.Params[11].AsString := ListEcf[2];
- UniQueryWrite.Params[12].AsString := ListEcf[3];
- UniQueryWrite.Params[13].AsString := ListEcf[4];
- UniQueryWrite.Params[14].AsString := ListEcf[5];
- UniQueryWrite.Params[15].AsString := ListEcfF2[0];
- UniQueryWrite.Params[16].AsString := ListEcfF2[1];
- UniQueryWrite.Params[17].AsString := ListEcfF2[2];
- UniQueryWrite.Params[18].AsString := Listloc[0];
- UniQueryWrite.Params[19].AsString := Listloc[1];
- UniQueryWrite.Params[20].AsString := Listloc[2];
- UniQueryWrite.Params[21].AsString := Listloc[3];
- UniQueryWrite.Params[22].AsString := Listloc[4];
- UniQueryWrite.Params[23].AsString := Listloc[5];
- UniQueryWrite.Params[24].AsString := '1';
- UniQueryWrite.Params[25].AsString := '1';
- UniQueryWrite.Params[26].AsString := 'new';
- UniQueryWrite.Execute;
- i:=i+1;
- except
- TThread.Synchronize(TThread.CurrentThread,
- procedure
- begin
- form1.memo1.Lines.Add('Cant write sgp4 data to fds_data...');
- end);
- end;
- //------------------------------------------------
- //form1.memo1.Lines.Add( lineText );
- //application.ProcessMessages;
- end;
- TThread.Synchronize(TThread.CurrentThread,
- procedure
- begin
- form1.memo1.Lines.Add( 'Fds sgp4 added row '+ i.ToString );
- form1.memo1.Lines.Add( 'Fds sgp4 gs added row '+ j.ToString );
- end);
- finally
- CloseFile(myFile);
- UniQueryRead.Free;
- UniQueryWrite.Free;
- UniConnectionWrite.Free;
- end;
- finally
- TThread.Synchronize(TThread.CurrentThread,
- procedure
- begin
- form1.AbLED5.Checked:=false;
- form1.Button8.Enabled:=false;
- form1.Button7.Enabled:=true;
- end);
- end;
- //-----------------------------------------------------------------------------------------------------------------------------
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement