Forum | | | | - Page 1 - |
| 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 |
| | | | |
| | | | | - Page 1 - |
| 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. |
| | | | |
| | | | - Page 2 - |
| | Uwe Skärke | well Yes, one grows with its releases, if I always only the light make would, can I warscheinlich not time upright weg
means, The in the Image ruddy besprühten Controls must I permanent read, The Change itself each second...
see you soon, LG, Uwe |
| | | | |
| | Frank Abbing | Have something together gebastelt, knows but not, whether the so under Profan 7 runs. Ggf. are Umbauten vonnöten. The code finds any your begehrten Controls, but it'll your task his To decide, which Controls where correctly. are. probably is the Order but always same. CompileMarkSeparationDeclare Entry#,err&,handle&,cpid&,text$,text2$,pid&,cname#,z&,a&,x&,y&,zahl&
Struct PROCESSENTRY32=dwSize&,
cntUsage&,
th32ProcessID&,
th32DefaultHeapID&,
th32ModuleID&,
Threads&,
th32ParentProcessID&,
pcPriClassBase&,
dwFlags&,
szExeFile$(260)
Dim Entry#,PROCESSENTRY32
Entry#.dwSize& = SizeOf(Entry#)
Def CreateToolhelp32Snapshot(2) !Kernel32, CreateToolhelp32Snapshot
Def Process32First(2) !Kernel32, Process32First
Def Process32Next(2) !Kernel32, Process32Next
Def CloseHandle(1) !Kernel32, CloseHandle
Def GetCurrentProcessID(0) !Kernel32, GetCurrentProcessId
Def GetWindow(2) !USER32,GetWindow
Def GetClassName(3) !USER32,GetClassNameA
Def GetWindowThreadProcessId(2) !USER32,GetWindowThreadProcessId
Def GetParent(1) !USER32,GetParent
zahl&=1
Proc FillProcessList
cpid&=GetCurrentProcessID()
handle& = CreateToolhelp32Snapshot(2,0)
If handle&
err& = Process32First(handle&, Entry#)
If err&
text$=Str$(Entry#.th32ProcessID&)
text2$=Entry#.szExeFile$
Case Lower$(text2$)=orbitron.exe:Return Int(Val(text$))
Repeat
err& = Process32Next(handle&, Entry#)
If err&
text$=Str$(Entry#.th32ProcessID&)
text2$=Entry#.szExeFile$
Case Lower$(text2$)=orbitron.exe:Return Int(Val(text$))
EndIf
Until err& = 0
CloseHandle(handle&)
EndIf
EndIf
Return 0
EndProc
Proc EnumChildren
Parameters parent&
Declare result&,cn$
Dim cname#,256
GetClassName(parent&,cname#,64)
cn$=String$(cname#,0)
result&=GetWindow(parent&,5)
While result&<>0
GetWindowThreadProcessId(result&,addr(x&))
If x&=pid&
AddString Str$(zahl&)+. Controlhandle +Str$(result&)+ +Chr$(34)+GetText$(result&)+Chr$(34)
Inc zahl&
EnumChildren result&
EndIf
result&=GetWindow(result&,2)
EndWhile
Dispose cname#
EndProc
Cls
pid&=FillProcessList()
If pid&
EnumChildren %desktop
ListBox$(Ermittelte Orbitron-Control-Texte:, 1)
WaitInput
Else
MessageBox(Prozess Orbitron nicht aktiv...,Meldung:,64)
EndIf
Dispose Entry#
End
|
| | | | |
| | Uwe Skärke | Hello Frank. many Thanks, haste you yet The half-way night around the ears beaten, can I warscheinlich never again well make... i'll the test times and Message give, can though yet little last, must on the side yet Ackern..
LG, Uwe |
| | | | |
| | Frank Abbing | I Have only two Source combined and the Orbitron installs, was ne half-way hour work. is really one interessantes Tool, this Orbitron. What exactly want You really to that whom Satelliten funken? |
| | | | |
| | Uwe Skärke | Hello Frank, i was time on Dienstreise and so lane of „WINDOW“. yesterday have I XProfan 10 get and will be the then today same time install, time see whether then your Tool funktioniert… otherwise is with the whom Amateurfunksatelliten so, that one tappt im dunkeln in the first as repeater using, the means, one sends z. Bsp. On 145 MHz Language or Telegraphie signals to supra and the Sat mail The equal again on 435 MHz down and by the large Ausleuchtung (by the Höhe the Sat) You can then to that Bsp. an Funkverbindung on UKW with spain set up, whether well one on UKW by the Erdkrümmung only so around the 300 To 400 km far comes. The others Variant The, that one directly with the Crew the ISS or former with the MIR kommuniziert and then get is a QSL-ticket to verification the Funkverbindung, talk does one itself there usually over technical Topics. the nice is, that one too with very geringen Sendeleistungen large distances überbrücken can. naturally Send The Sats too Telemetriedaten, so that one anytime over the status the electronics on board informed is. The Sats go in the rule too through Funkamateure develops and then with the rockets the Russen or the Space Shuttle in that All befördert… Link for More Info : www.amsat-dl.org so, now becomes I once more little with XProfan 10 fummeln… LG, Uwe |
| | | | |
| | Frank Abbing | Jau! sound Real superinteressant... |
| | | | |
|
AnswerTopic-Options | 14.478 Views |
Themeninformationenthis Topic has 2 subscriber: |