DSDPlus User-friendly UI for DSDplus/FMP24 scanner - please answer if it already exists

Status
Not open for further replies.

scriptguru

Spy Satellite
Premium Subscriber
Joined
Apr 21, 2019
Messages
31
Location
Greater Vancouver area (Canada)
LimaZulu, thanks for the offer of help, please send me your batch file in a private message or post/attach it right here. It's definitely going to be useful. I'm using AutoIt, which is somewhat primitive from the programming point of view, but allows to develop working solutions very quickly. It's an automation tool, not a real programming tool, but it's good enough (maybe even optimal) for this particular task.

Annunaki, please share once you feel it's in a good enough shape to be shared. I believe the more UIs we have the better.

My update

I've worked on this project perhaps 8 hours total, but I have some progress and I'm still going to release something working (even if buggy and simplistic) this month.
What's done:
  • there is a simple but nice looking and convenient UI for frequency entry
  • many parameters of the UI and the application in general are controlled by a config file, so it's easy to customize the UI/app for your device. For example, you can control window width and it will affect overall UI size. You can also control font sizes and the font type for the frequency display. Path to DSD+ is also defined in the config file so it can be anywhere on your PC, no need to copy any files anywhere.
  • it starts FMP24 (for now just FMP24 for testing purposes, but it will run two instances of FMP24 and two instances of DSD+ in real use scenario)
  • the frequency entered in the UI is being set as a frequency of FMP24, so basically I have a working proof of concept
There are still some minor issues, but I'm going to work on this project every or almost every day now since I have a little more free time now.
FMP24 is a somewhat weird beast, it's a bit harder to automate than I expected, but there are workarounds which work. I just want to find reasonably good solutions to those problems I encounter and trying to avoid ugly hacks where possible.
 

hamradionl

Member
Joined
Mar 23, 2014
Messages
730
@scriptguru
Nice to hear you still active :)
In some areas in the world not use P25 fase I nor face II trunking, those people using DSD+Free version for listening only NXDN 48/96
For Annunaki and also for you, there are several users who ask, if DSD-UI also be working with the DSD+ free version, please.
 
Last edited:

thewraith2008

Member
Joined
Nov 22, 2016
Messages
1,890
What troubles you having with FMP24, you should still be able to use the SendKeys() approach with it like DSD+.
So long as you activate/focus the target window first before start sending keystrokes to it.

I made a siteLoader style program a few years ago that worked quite well with this approach.

Troubles can come about when you try and find FMPx window by window title (i.e. FindWindow() ), FMP24 changes this title with info/status type information so different configurations can trip you up.
 

scriptguru

Spy Satellite
Premium Subscriber
Joined
Apr 21, 2019
Messages
31
Location
Greater Vancouver area (Canada)
@scriptguru
Nice to hear you still active :)
In some areas in the world not use P25 fase I nor face II trunking, those people using DSD+Free version for listening only NXDN 48/96
For Annunaki and also for you, there are several users who ask, if DSD-UI also be working with the DSD+ free version, please.
It should work equally well for the free and the Fast Lane versions. As I understand the main difference between the versions is that they support different digital modes, but they still have the same interface. You can quickly check - if you can type frequency (following the Enter key) when FMP24/FMPA window is active and you see that the frequency is changing, then the UI should work as well because it's just sending keys to the window.

What troubles you having with FMP24, you should still be able to use the SendKeys() approach with it like DSD+.
So long as you activate/focus the target window first before start sending keystrokes to it.

I made a siteLoader style program a few years ago that worked quite well with this approach.

Troubles can come about when you try and find FMPx window by window title (i.e. FindWindow() ), FMP24 changes this title with info/status type information so different configurations can trip you up.
SendKeys() only works when the desired window is active (focused). Therefore to use it the window should be momentarily focused, then SendKeys() called, and then the UI should be focused again. It's not a big deal, but it could work unreliably in some cases. A better approach is to send keystrokes to a control (button, text field, etc) in a window - then you don't have to focus a window. The catch is - you have to know an ID or other parameter of a control, and FMP24 (just like DSD+ and other applications from the package) kind of hide the controls in a way that I can't get ID or any other parameters, so I can't send keystrokes to a control. I've tried to use Autoit Window Info application that comes with AutoIt, but it can't find any controls in FMP24 or DSD+. If you know a way that works please let me know. For now I'm going to fall back to SendKeys()

Regarding window title - it's actually a good thing that it's changing because it allows me to extract some additional info from the window title (like current mode and stuff like that). It doesn't make finding a window difficult because in order to find a window I'm detecting only the first part of the window title which is constant.
 

thewraith2008

Member
Joined
Nov 22, 2016
Messages
1,890
The only control your going to get with FMPx is the main window, that's all you really need to send the keypress/up/down messages too.

Way I did it was use 'GetWindowText' and 'GetClassName' to parse all parent windows.
These returned handle and title as well as window class.
Checked when window class matches Spectrum, Evnt or ConsoleWindowClass, then found DSD+ or FMPx windows.
Then parse window title to determine if it's the CC or VC or 1R or passive window.
- Could use the "-" to show command line options in title for DSD+ to further help match DSD+ FMPx windows.
If FMP24 not CC or VC then it's assumed 1R or passive mode.

This could get tricky if more than one DSD+ session is been run by user.
 

scriptguru

Spy Satellite
Premium Subscriber
Joined
Apr 21, 2019
Messages
31
Location
Greater Vancouver area (Canada)
Yes, I have access to all the windows I need, it's not a problem. The problem is that ControlSend() function must be provided with a window and a control.
I'll try to experiment with it a little in order to find out if there is a way to use it when I only have a window.

Regarding multiple sessions of DSD+ - it's not going to be supported beyond support of CC and VC in the first version of the UI for sure. The main goal of the UI is to offer functionality similar to a hardware radio scanner, and at the moment it looks like 2x FMPx and 2x DSD+ (one for control channel and one voice channel) should be enough.
 

thewraith2008

Member
Joined
Nov 22, 2016
Messages
1,890
In that reference page for ControlSend() there is a reference for 'Controls', can you not use:
Code:
ControlSend(hWnd , "", "[CLASS:Edit; INSTANCE:1]", "key to send")

Where "[CLASS:Edit; INSTANCE:1]" would be "[CLASS:Spectrum; INSTANCE:1]" if for FMPx
 

scriptguru

Spy Satellite
Premium Subscriber
Joined
Apr 21, 2019
Messages
31
Location
Greater Vancouver area (Canada)
I'll try that, thanks for the advice.

Unrelated thought - I was thinking about making the UI compatible with wide range of setups/configurations of DSD+/FMPx and came to the following conclusion. The UI shouldn't run the FMPx or DSD+. The user should first run any existing scripts that run FMPx and DSD+, and then the user should run the UI (possibly using the same script), and the UI should just find the windows (FMPx and DSD+) where it will send commands (as keystrokes). The user will be able to customize the way UI finds proper windows (by window title), but there will be some default values in the config that make sense and work in general case.

Basically all I need to do now is to add buttons for the missing functions (technically they'll be implemented the same way as existing buttons for setting the frequency, so it's not a big deal) optimize the way the keystrokes are sent to the windows (if I can make AutoIt work the way you suggested), and add processing of config entries related to FMPx/DSD+ window detection. This shouldn't really take long, a few hours maybe.

The buttons are going to be organized in tabs so that we don't see dozens of buttons on screen at the same time and the UI remains usable on a smallish (7-8 inch) touchscreen.
 

scriptguru

Spy Satellite
Premium Subscriber
Joined
Apr 21, 2019
Messages
31
Location
Greater Vancouver area (Canada)
While working on the UI found what seems to be a bug in FMP24 (possibly all FMPx applications) - stepping through frequencies possible only forward. Step backwards or 250Hz backwards doesn't work.
I'll still publish the code as is, but the corresponding buttons in the UI won't have any effect and it's not a bug in the UI.
 

thewraith2008

Member
Joined
Nov 22, 2016
Messages
1,890
While working on the UI found what seems to be a bug in FMP24 (possibly all FMPx applications) - stepping through frequencies possible only forward. Step backwards or 250Hz backwards doesn't work.
I'll still publish the code as is, but the corresponding buttons in the UI won't have any effect and it's not a bug in the UI.
For FMP and FMP24 directly, the step forward and backwards works as it should.

When using in your UI, are you sure you have the correct scancode for the arrow keys? (LEFT=37, RIGHT=39, CTRL=17)
 

scriptguru

Spy Satellite
Premium Subscriber
Joined
Apr 21, 2019
Messages
31
Location
Greater Vancouver area (Canada)
I've tested on FMP24 from DSD+ 2.212 and tried it without any UI. After I've noticed that UI button doesn't work I've tried using keyboard on the window directly to check if the UI is causing the problem, and the direct keyboard input fails equally to the UI. I've also tried the cursor keys on the numpad (with NumLock on and off) and the result is the same. I've also tried focusing on the Console window or Spectrum window and the result is exactly the same.
I wonder how it's possible that it still works for you.
 

thewraith2008

Member
Joined
Nov 22, 2016
Messages
1,890
Do the arrow keys work elsewhere?
Can you just move the highlighted icon around on desktop?

Test your keyboard keys here (look for "Try it!" textbox on that page)
 

thewraith2008

Member
Joined
Nov 22, 2016
Messages
1,890
Strange indeed.

Here is stepping with arrows in FMP24 v2.63 (DSD+ v2.235)
8ioViFQ.gif
 

hamradionl

Member
Joined
Mar 23, 2014
Messages
730
testing the Anunaki version with the DSD+ Free, its not clear for me this moment, how its working.
Pushing the + and - buttons for volume AF, Freq steps, step size, i see nothing change in the DSD screen
Some distorted decode
Using SDR# + DSD+ plugin , all crystal clear voice
 
Last edited:

hamradionl

Member
Joined
Mar 23, 2014
Messages
730
Forgot,
SDR#plugin path to DSD.exe + BAT files located in :\dsd\ and plugin use this command line
-v2 -O NUL -I0 -i20011 -o1M -g0 -u3 -dr0 -dh0 -ds64 -dd10 -dv20 -M15 -fa
 

Annunaki

Member
Joined
Oct 5, 2014
Messages
116
Hey, sorry I dont come on here much my application is aimed at the Fastlane version but will work with the public release as long as that release supports the functions the Fastlane release does.

My application just forwards key strokes using my custom functions, You will not see any frequency steps / size changes in the DSD+ windows because they are directed to the FMPx window as they are FMPx specific keys, The AF volume for for DSD+ is already set to MAX as standard so increasing will not have any effect visually or audibly.

Also I dont even know if the public release supports any of the above i will have to check but if it doesn't theres nothing i can do but for the price point of the FL release it's well worth the money IMO.

Anyway my project is complete as is for an invasive application and I will make my own thread so people can use it.
 
Last edited:

scriptguru

Spy Satellite
Premium Subscriber
Joined
Apr 21, 2019
Messages
31
Location
Greater Vancouver area (Canada)
Strange indeed.

Here is stepping with arrows in FMP24 v2.63 (DSD+ v2.235)
And now it works for me as well just fine. It makes no sense, probably some Windows quirk, I don't know.

Still working on the UI. Currently working on step, bandwidth, gain and frequency extraction from the FMPx window title so that UI could display the correct value and let the user adjust it in the application. Tabs for Input/Scan/Settings are done (Scan feature doesn't work yet).
Features that currently work is direct frequency entry, stepping through the frequencies, bandwidth/gain/step adjustment (however it just blindly cycles through bandwidth/gain/step options in the application without displaying the current value in the UI).

I'm sorry that I couldn't release something in the January, but I'm working on the UI much more than before so I'm optimistic regarding the release date.

Annunaki, please do create your thread, ideally with some screenshots. I'm really curious.
 

hamradionl

Member
Joined
Mar 23, 2014
Messages
730
@Annunaki
Local area, No trunk, No P25, No other digital mode and only receive 3x NXDN very small private rental network (4 -8 voices per day) i dont need nor use all those Fastlane extra's and for that reason i use DSD+free :)
My interest for DSDui standalone, to use SDR# for something else.

@scriptguru,
DSD+free version use FMP.exe and slightly differ command line structure.
Curious your solution work with DSD+free.
 
Status
Not open for further replies.
Top