English
Forum

DDE query

 

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
 
TOSHIBA TECRA S1 / PROFAN 7.0
11/24/07  
 




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.
 
11/24/07  
 




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

27 kB
Kurzbeschreibung: myDDE
Hochgeladen:11/24/07
Downloadcounter249
Download
191 kB
Kurzbeschreibung: Orbitron
Hochgeladen:11/24/07
Downloadcounter259
Download
 
TOSHIBA TECRA S1 / PROFAN 7.0
11/24/07  
 




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.
 
11/24/07  
 




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
 
TOSHIBA TECRA S1 / PROFAN 7.0
11/25/07  
 




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...............
 
TOSHIBA TECRA S1 / PROFAN 7.0
11/25/07  
 




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
 
11/25/07  
 




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
 
TOSHIBA TECRA S1 / PROFAN 7.0
11/25/07  
 




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
 
TOSHIBA TECRA S1 / PROFAN 7.0
11/25/07  
 




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.
 
11/25/07  
 




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
 
TOSHIBA TECRA S1 / PROFAN 7.0
11/25/07  
 




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.
 
11/25/07  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

no Systemprofil laid out. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Please register circa a Posting To verfassen.
 

Topic-Options

14.492 Views

Untitledvor 0 min.
Gast.0815 vor 10 Tagen
H.Brill vor 19 Tagen
Axel Berse02/18/22
Walter03/14/20
More...

Themeninformationen

this Topic has 2 subscriber:

Uwe Skärke (10x)
Frank Abbing (8x)


Admins  |  AGB  |  Applications  |  Authors  |  Chat  |  Privacy Policy  |  Download  |  Entrance  |  Help  |  Merchantportal  |  Imprint  |  Mart  |  Interfaces  |  SDK  |  Services  |  Games  |  Search  |  Support

One proposition all XProfan, The there's!


My XProfan
Private Messages
Own Storage Forum
Topics-Remember-List
Own Posts
Own Topics
Clipboard
Log off
 Deutsch English Français Español Italia
Translations

Privacy Policy


we use Cookies only as Session-Cookies because of the technical necessity and with us there no Cookies of Drittanbietern.

If you here on our Website click or navigate, stimmst You ours registration of Information in our Cookies on XProfan.Net To.

further Information To our Cookies and moreover, How You The control above keep, find You in ours nachfolgenden Datenschutzerklärung.


all rightDatenschutzerklärung
i want none Cookie