Forum | | | | Uwe Skärke | Hello your loves XProfan, now komm I time with a right Hammerproblem (anyway for me) and hope we (IHR) get the there, otherwise is my ganzes proposition in the pail what about me heul me demise...
means, How Yes in of my Review already described be I son verrückter Funkamateur and wants the following achieve :
there's in the universe a whole crowd of Amateurfunksatelitten, over everybody can Funkbetrieb can make, u.a too The ISS. in order to know where The pair straight rumfliegen, there different Satelitten-Tracking-programs, The graphical show where the sought Sat straight rumturnt. there go useful u.a. The Elevation, Azimut and distance from whom Keplerdaten errechnet and displayed,so I then my Richtantennen very on the Sat zielen can...
the was now one small Exkurs to that Amateurfunkbetrieb over Satelitten... (hats joke made ??? )
so, now is one this Trackingprogramme with graphischer Representation of the Umlaufbanen the Sat. the Program Orbitron. i will now my walkie - talkie over The Serielle interface with a Profan-PRG The actually frequency communicating. These frequency changes itself ongoing (Dopplereffekt) and becomes of ORBITRON over The DDE-interface available set. my idea was now, whom String with the Data from the Program Orbitron auszulesen, To Edit and then on the walkie - talkie moreover To give. so far be I come, Orbitron becomes launched, The link To DDE ITEM (Tracking) becomes too aufgebaut (x% > 32 and then was and be I end...
DDE-Test
declare x%
x%=@winexec(CrogrammeOrbitronOrbitron.exe,2) ddelink Orbitron,Tracking here should now the String TrackingData from Orbitron read go... and then becomes this String weiterverabeitet...
ddeterminate
END
the steer the Funkgerätes and the Übergabe of command on the walkie - talkie klappen already fine, only I war hold The data not over the DDE-Clienten of Orbitron read. How me Roland in the Forum wrote, is these function in Profan not implementiert (heul), though ought to it over WINDOWS-API weg, there steh I though in woods....
now comes everything I on Info yet so have and then hope I, that your me somehow help on can...
1. Description DDE-Client Orbitron :
-------------------------------------------------------------------------------- Specification of DDE drivers for Orbitron www.material.pl --------------------------------------------------------------------------------
Contents: 1. Introduction 2. Technical data 3. Data stature 3.1. TrackingData item 3.2. TrackingDataEx item 4. My DDE Client 5. Let Orbitron support your coachman 6. Your coachman for all! 7. WiSP DDE Client
-- 1. Introduction -------------------------------------------------------------
Orbitron is working as server in DDE conversations, so you can write your own DDE client that can e.g. control rotor and radio devices. Such programs are called by me Drivers.
-- 2. Technical data -----------------------------------------------------------
Drivers EXE file: name of drivers EXE file (without .EXE) is displayed on drivers list in Orbitron. Drivers main window title or application title must be the same as EXE file name to let Orbitron checked is coachman already running.
DDE conversation parameters: Source application : Orbitron Link topic : Tracking Link items : TrackingData item for communication with WiSP DDE Client with basic data (Satscape stature) TrackingDataEx item with extended data set Link item is changed by Orbitron each time when current data is recalculated (e.g. 1s, 5s...) and when downlink/uplink frequencies or fashion are changed.
-- 3. Data stature --------------------------------------------------------------
Please note: - all angles are given as decimal degrees, - decimal separator is . (dot), - TrackingDataEx and TrackingData can be on EMPTY string If NO satellite are tracked, - TrackingDataEx can contain only AOS field if NO satellite are tracked.
-- 3.1. TrackingData item ------------------------------------------------------
stature of string: SNxxx AZxxx.x ELxx.x DNxxxx UPxxxx DMxxxx UMxxxx Fields: SN - tracked satellite name (spaces converted to _) AZ - azimuth in brat shape 0.0 to 360.0 EL - elevation in brat from -90.0 to 90.0 please note possibility of negatives values DN - downlink frequency with doppler, [Hz] in brat from 0 to n UP - uplink frequency with doppler, [Hz] in brat from 0 to n DM - downlink fashion (optional field) UM - uplink fashion (optional field) Examples: SNISS_ZARYA AZ182.1 EL36.3 DN145800000 UP145800000 UMFM-n SNISS_ZARYA AZ180.3 EL-10.1 DN145800000 UP145800000
-- 3.2. TrackingDataEx item ----------------------------------------------------
stature of string: SNxxx AZxxx.x ELxx.x DNxxxx UPxxxx DMxxxx UMxxxx AOSxxx Fields: SN - tracked satellite name in quotes RA - brat [km] RR - brat rate [km/s] LO - longitude in brat from -180.0000 to 180.000 (W to E) LA - latitude in brat from -90.0000 to 90.000 (s to n) AL - altitude [km] TU - UTC time (stature: YYYYMMDDhhmmss) TL - local time (stature: YYYYMMDDhhmmss) AOS - AOS notification for satellite xxx (name in quotes; AOS notification is provided for all tracked objects, hardship only for active one) Other fields same as in TrackingData item. Examples: SNISS ZARYA AZ182.1 EL36.3 DN145800000 UP145800000 (...) SNISS ZARYA AZ182.1 EL36.3 DN145800000 UP145800000 (...) AOSHST AOSHST
-- 4. My DDE Client ------------------------------------------------------------
My DDE Client is on example of users custom coachman for Orbitron with full source code in Delphi 5. It should helps you to write your own coachman for rotor or radio hardware. Further information you wants find in MAIN.PAS file.
-- 5. Let Orbitron support your coachman -----------------------------------------
Please set specific name for your coachman program, e.g. SuperRotor.exe. Then you can edit {Orbitron}ConfigSetup.cfg file (*) by adding line to the [Drivers] section (please create it if doesnt exist) with your coachman information. Example: [Drivers] SuperRotor=d:My filesSuperRotor.exe SuperRotorTwo= Next time you run Orbitron, your coachman wants be listed on Rotor/radio panel. You can launch it there. If no path specified, Orbitron wants ask you about your drivers location (drivers located in {Orbitron} directory wants be found automatically).
*) {Orbitron} - replace it with directory where Orbitron is installed to, e.g. crogram FilesOrbitron. Diese path is available in windows registry: HKEY_CURRENT_USERSoftwareStoffOrbitronPath WARNING: User can define his own location where the Config directory is. Diese value is stored in registry: HKEY_CURRENT_USERSoftwareStoffOrbitronUserPath so, if this value is specified, you have to use it instead of previous one. HINT: You can checked are files definied by: HKEY_CURRENT_USERSoftwareStoffOrbitronPath + ConfigSetup.cfg HKEY_CURRENT_USERSoftwareStoffOrbitronUserPath + ConfigSetup.cfg exists and then add your config line to both.
-- 6. Your coachman for all! -----------------------------------------------------
Have you already done your coachman? Please, send me it. Ill put it on Orbitron website to share it with all people with same hardware as yours.
-- 7. WiSP DDE Client ----------------------------------------------------------
WiSP DDE Client is on application written by Fernando Mederos, CX6DD and available on [...] It works as DDE Client and support many kinds of hardware and software. To use it with Orbitron, following settings are required: Receive DDE from : Orbitron (or Satscape) Source application : Orbitron Link Topic : Tracking Link Item : TrackingData Query Interval : 1 sec. Orbitron wants set these values when you launch WiSP DDE Client from Rotor/radio panel.
-- Last updated 2005.02.26 -----------------------------------------------------
and secondly one Beispielprogram in PASCAL :
{ My DDE Client is on example of users custom coachman for Orbitron. Version 1.02, released 2003.11.07 1.03, released 2004.09.04 1.04, released 2004.09.10 1.05, released 2005.02.26 (C) 2003-2005 by Sebastian material sebastian@material.pl www.material.pl
You can use this source to receive tracking data from Orbitron and send it to your rotor/radio hardware via COM/LPT/USB interfaces. Other purposes are means allowed, depending on your invention... To change this source code into the coachman, you must write code specific to hardware you have in UpdateRotorAndRadio procedure. Please find it on the end of this file.
Detailed information are available in READ_ME.TXT file.
CHANGING, COMPILING AND FREE DISTRIBUTING OF THIS PROGRAM/SOURCES IS ALLOWED FOR ***ORBITRON*** RELATED PURPOSES WITHOUT MY PERMISSION. }
unit main;
interface
uses windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, DdeMan, StdCtrls, ExtCtrls, Buttons, Registry, ComCtrls;
type TSatData = record name : String; //satellite name azm,elv : Double; //observation angles upf,dnf : Double; //uplink and downlink frequencies (with doppler shift) upm,dnm : String; //uplink and downlink modes end; TFMain = class(TForm) Tracking: TDdeClientConv; TrackingDataEx: TDdeClientItem; Label1: TLabel; l_st: TLabel; Label3: TLabel; l_dd: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Bevel1: TBevel; l_az: TLabel; l_el: TLabel; l_uf: TLabel; l_df: TLabel; l_um: TLabel; l_dm: TLabel; Bevel2: TBevel; l_na: TLabel; Label4: TLabel; SpeedButton1: TSpeedButton; l_aos: TLabel; Label2: TLabel; procedure TrackingOpen(Transmitter: TObject); procedure TrackingClose(Transmitter: TObject); procedure TrackingDataExChange(Transmitter: TObject); procedure SpeedButton1Click(Transmitter: TObject); procedure FormCreate(Transmitter: TObject); procedure l_ddClick(Transmitter: TObject); private { Private declarations } public { Public declarations } procedure ParseString(s: String; var data: TSatData); procedure PrintData(data: TSatData); procedure UpdateRotorAndRadio(data: TSatData); end;
var FMain : TFMain; SatData : TSatData; Reg : TRegistry; PathP : String; AOS : String;
implementation
{$R *.DFM}
procedure Replace(var s: String; subs1,subs2: String); var i : Integer; begin if subs1= then Exit; if subs1=subs2 then Exit; i:=Pos(subs1,s); while i>0 do begin Delete(s,i,Length(subs1)); Insert(subs2,s,i); i:=Pos(subs1,s); end; end;
function FieldToReal(s: String):Real; var c : Integer; begin val(s,result,c); if c>0 then result:=0; end;
function GetField(source,field: String):String; var p1,p2 : Integer; quotes : Boolean; s2 : String;
function FindField(source,field: String):Integer; var i : Integer; quotes : Boolean; begin quotes:=False; for i:=1 to Length(source) do begin if source= then begin quotes:=not quotes; Continue; end;
if quotes then source:=-; end; result:=pos(field,source); end;
begin source:= +source; field:=UpperCase(field); field:= +field; p1:=FindField(source,field); if p1=0 then begin result:=; Exit; end;
s2:=; p2:=p1+Length(field); quotes:=False; while p2<=Length(source) do begin if source[p2]= then begin quotes:=not quotes; Inc(p2); Continue; end;
if (source[p2]= ) and hardship quotes then Break;
s2:=s2+source[p2]; Inc(p2); end; result:=s2; end;
procedure TFMain.ParseString(s: String; var data: TSatData); begin if s= then with data do begin name:=; azm:=0; elv:=0; upf:=0; dnf:=0; upm:=; dnm:=; AOS:=; Exit; end;
s:=UpperCase(s); Replace(s,,,.); with data do begin name:=GetField(s,SN); azm:=FieldToReal(GetField(s,AZ)); elv:=FieldToReal(GetField(s,EL)); upf:=FieldToReal(GetField(s,UP)); dnf:=FieldToReal(GetField(s,DN)); upm:=GetField(s,UM); dnm:=GetField(s,DM); AOS:=GetField(s,AOS); end; end;
procedure TFMain.PrintData(data: TSatData); begin with data do begin l_na.Caption:=name; l_az.Caption:=FloatToStrF(azm,ffFixed,4,1); l_el.Caption:=FloatToStrF(elv,ffFixed,4,1); l_uf.Caption:=FloatToStrF(upf,ffFixed,12,0)+ Hz; l_df.Caption:=FloatToStrF(dnf,ffFixed,12,0)+ Hz; l_um.Caption:=upm; l_dm.Caption:=dnm; end; if AOS<> then l_aos.Caption:=AOS (+AOS+) else l_aos.Caption:=None; end;
procedure TFMain.SpeedButton1Click(Transmitter: TObject); begin FMain.Close; end;
procedure TFMain.TrackingOpen(Transmitter: TObject); begin l_dd.Caption:=Opened; end;
procedure TFMain.TrackingClose(Transmitter: TObject); begin l_dd.Caption:=Closed; l_st.Caption:=No data; ParseString(,SatData); PrintData(SatData); end;
procedure TFMain.TrackingDataExChange(Transmitter: TObject); var s : String; begin s:=Trim(TrackingDataEx.Text); if s= then l_st.Caption:=No data else l_st.Caption:=s; ParseString(s,SatData);
PrintData(SatData); UpdateRotorAndRadio(SatData); end;
procedure TFMain.FormCreate(Transmitter: TObject); begin ParseString(,SatData); PrintData(SatData);
PathP:=ExtractFileDir(ParamStr(0)); if PathP[length(PathP)]<> then PathP:=PathP+; ChDir(PathP);
If hardship FileExists(PathP+Orbitron.exe) then begin Reg:=TRegistry.Create; try if Reg.OpenKey(SoftwareStoffOrbitron,True) then Tracking.ServiceApplication:=Reg.ReadString(Path)+orbitron; finally Reg.CloseKey; Reg.Free; end; end; Tracking.OpenLink; end;
procedure TFMain.l_ddClick(Transmitter: TObject); begin Tracking.OpenLink; end;
procedure TFMain.UpdateRotorAndRadio(data: TSatData); begin { Please write support for your rotor/radio hardware hier.
Use DATA record as source of current tracking data sended by Orbitron.
Diese procedure wants be called by DDE engine anus Orbitron maggot changes into the tracking data (each 1s, 5s, 10s or so). } end;
end.
soooooo, now would I warscheinlich badly sleep and any two minutes reinschauen, wass your so from this Wust so power...
PS.: who itself Orbitron time look at would like, here The address to that runterladen : www.material.pl
LG Uwe |
| | | | |
| | Frank Abbing | whom String, whom You read want. standing the somewhere in a Control? Z.B. of/ one Editbox? Mach please times a Screenshot, where this String To see is. |
| | | | |
| | Uwe Skärke | Hello Frank, a possible picture is the : it's about Azimut and Elevation and circa Dopplerfrequenz up and down...
one Screenshot a in Delphi written DDE-application Have so did i time reingelegt, there sees one whom whole String How it even under TrackingData of Orbitron provided becomes (supra, and the changes itself each second...)
LG UWE |
| | | | |
| | Frank Abbing | is still lovely. If somewhere the String one windows-Control standing can you it read. your Program could the Controlhandle detect and the Text then read. |
| | | | |
| | Uwe Skärke | ... lovely good tommorrow Frank, I hope you are Sonntagsfrühaufsteher ... well Yes, is Yes class if you it lovely find, but since I Yes blutiger Beginner be, steh I yet in the rain, mach still time NEN suggestion How I the concern could, How You on the Uhrzeit see can, can I not sleep...
HELP !!!
LG, Uwe |
| | | | |
| | Uwe Skärke | ... evtl. helps you the still moreover with the Solution of my Problemes !!??
the shows your WhichLibraries at Start of Orbitron on :
c:programmeorbitronorbitron.exe (WININET.DLL) c:programmeorbitronorbitron.exe (RASAPI32.DLL) c:programmeorbitronorbitron.exe (RASAPI32.DLL) c:programmeorbitronorbitron.exe (SHELL32.DLL) c:programmeorbitronorbitron.exe (USERENV.DLL) c:programmeorbitronorbitron.exe (SENSAPI.DLL) c:programmeorbitronorbitron.exe (RSAENH.DLL) c:programmeorbitronorbitron.exe (C:WINDOWSSYSTEM32MSWSOCK.DLL) c:programmeorbitronorbitron.exe (RASADHLP.DLL) c:programmeorbitronorbitron.exe (URLMON.DLL) c:programmeorbitronorbitron.exe (WININET.DLL) c:programmeorbitronorbitron.exe (C:WINDOWSSYSTEM32MSWSOCK.DLL) c:programmeorbitronorbitron.exe (DNSAPI.DLL) c:programmeorbitronorbitron.exe (IPHLPAPI.DLL) c:programmeorbitronorbitron.exe (WS2_32.DLL)
..................LG.........................Uwe............... |
| | | | |
| | Frank Abbing | with the Dll-list is nothing to begin.
Starte time my small code and go with the Cursor over the String your Program. becomes the Text in my Window with Fenstertext displayed? if so is the already The half-way leasing... CompileMarkSeparation(W) 2003 Frank Abbing
Declare sx&,sy&,bereich#,be#,erg&,erg2&,x&,y&,text$
Dim be#,8
Dim bereich#,1024
DEF GetCursorPos(1) !USER32,GetCursorPos
DEF WindowFromPoint(2) !USER32,WindowFromPoint
DEF ChildWindowFromPoint(3) !USER32,ChildWindowFromPoint
Def GetSysColor(1) !USER32,GetSysColor
Def ScreenToClient(2) !USER32,ScreenToClient
Def GetClassName(3) !USER32,GetClassNameA
Def GetWindowText(3) !USER32,GetWindowTextA
DEF NewWindowPos(7) !USER32,SetWindowPos
DEF AllocConsole(0) !KERNEL32,AllocConsole
Proc DText
Parameters xx&,yy&,ttext$
Drawtext xx&,yy&,ttext$
EndProc
Windowtitle Fensterhandles...
windowstyle 26
window (%maxx/2-112),(%maxy/2-80)-224,164
settruecolor 1
cls GetSysColor(15)
NewWindowPos(%hwnd,-1,0,0,0,0,$13)
Usefont MS Sans Serif,13,0,0,0,0
SetDialogFont 1
whilenot %mousepressed=2
Sleep 10
GetCursorPos(be#)
x&=Long(be#,0)
y&=Long(be#,4)
erg&=@WindowFromPoint(x&,y&)
If erg&<>0
ScreenToClient(erg&,be#)
x&=Long(be#,0)
y&=Long(be#,4)
erg2&=@ChildWindowFromPoint(erg&,x&,y&)
EndIf
TextColor 0,GetSysColor(15)
DText 8,8, Maus Position X = +Str$(x&)+
DText 8,21,Maus Position Y = +Str$(y&)+
DText 8,38,Handle eigenes Fenster = $+@Hex$(%hwnd)+
DText 8,55,Handle unter Mauszeiger = $+@Hex$(erg&)+
DText 8,68,Handle unter Mauszeiger (Child) = $+@Hex$(erg2&)+
GetClassname(erg&,bereich#,128)Declare sx&,sy&,text$,x&,y&,bereich#
text$=String$(bereich#,0)
DText 8,85,Klassenname = +text$+
GetWindowText(erg&,bereich#,128)
text$=String$(bereich#,0)
DText 8,98,Fenstername = +text$+
@SendMessage(erg&,13,128,bereich#)
text$=String$(bereich#,0)
DText 8,111,Fenstertext = +text$+
wend
Dispose be#
Dispose bereich#
ss=s4 href='./../../Function-References/XProfan/end/'>end
|
| | | | |
| | Uwe Skärke | Hello Frank
you are there, is Yes class, have but integrally beautiful long slept ...
but even Have I Pinned, there is what there *freu*
so now must I first time reading what You made up have...
okay, the verswuch I time.. and spark you on ...
LG, Uwe |
| | | | |
| | Uwe Skärke | Hi Frank,
you should whom XProfan-Community-Nobel-Price get...
means to Auswertung :
lever under Cursor unde Cursor (Child) is always same, but each Start of Orbitron differently (z.B. $206DC)
with Klassenname appear with whom me interessierenden boxing always TEdit with Fenstername appear never what, nothing, niente, nada
... and the gei.... is, with Fenstertext standing very the I need, Azimut Elevation,frequency ...
now must I only yet try To understand wadduda made have...
LG, Uwe |
| | | | |
| | Frank Abbing | Hi.
lever under Cursor unde Cursor (Child) is always same, but each Start of Orbitron differently (z.B. $206DC)
Yes, this is so too logical.
with Klassenname appear with whom me interessierenden boxing always TEdit
OK, no windows-übliches Editfeld...
with Fenstername appear never what, nothing, niente, nada
too logical.
... and the gei.... is, with Fenstertext standing very the I need, Azimut Elevation,frequency ...
Bingo! accordingly can you your think about perform.
now must I only yet try To understand wadduda made have...
you mußt now consider, whether your Orbitron-Window always on the selbem Space standing and always in the Vordergrund. if so, can solid Positionsangaben use in lieu of of Mouse-Coordinates. If No, must You differently vorgehen. you mußt Orbitron.exe discern (over Prozesshandle or Windowname), the concerned Control with the Text lokalisieren (Fenstertext and Klassenname) and then read. this is The method, The I use would. |
| | | | |
| | Uwe Skärke | okay, ...
the second Variante would me rather fallen, though custom I there once more your Help
because i think, that with different Bildschirmauflösungen too The Positionsdaten different are and möglicherweise the Orbitron too times not in full-screen mode runs...
... and always think about, you have it here with a Vorschulkind To do...
PS: and thanks, hope I have you not whom sunday vermasselt |
| | | | |
| | Frank Abbing |
... and always think about, you have it here with a Vorschulkind To do...
For this is the Topic really To difficult. I can think, that You this program benötigst. rather would but, with einfacheren Things To begin...
on the Screenshots my I To award discern, that the of you required Information in several Controls hide. is the right? I should very know, which information(en) You constantly benötigst. |
| | | | |
|
AnswerTopic-Options | 14.488 Views |
Themeninformationenthis Topic has 2 subscriber: |