Welcome to the new FlexRadio Community! Please review the new Community Rules and other important new Community information on the Message Board.
If you are having a problem, please check the Help Center for known solutions.
Need technical support from FlexRadio? It's as simple as Creating a HelpDesk ticket.

Question for Java Developers - Multiplatform GUI classes

2»

Answers

  • IW7DMH, Enzo
    IW7DMH, Enzo Member ✭✭
    edited January 2017
    Hello,

    I did some progresses with my program and I want to show you the first significative result.
    I rewrote the code of my previous remote cw keyer program transforming it in a remote control console for my next device. Now I have implemented the following features:
     
    - 8 manual/automatic relay switch with embedded programming console (14 bands x 8 relays);
    - rotator control console for Prosistel "D" (the only I had to test with);
    - 2 hardware RS232 ports implementing 1.5 CAT protocol;
    - remote cw keyer.

    Here is the GUI I developed while it is running on the three most used operating systems (Windows 7, Mac OSX Yosemite, Linux Ubuntu 14.04-LTS).

    image

    image

    imageimage

    About the cw keyer feature I am testing a sidetone generation system while SSDR is in remote mode. It is the first time I am using the java.sound APIs and I am wondering if I am on the right way or I can use a better library to do the job. There is a lot documentation on playing clips but far less about tone generation. 
    I had some clipping problems as you can see in the following video while I am working VP8STI DXpedition






    Now let me thank Walt for his great advices! Mastering JavaFX isn't not so simple, but I am going on. 
    I hope the Flex Java APIs will be available as soon as possible.

    73' Enzo
    iw7dmh



  • Walt - KZ1F
    Walt - KZ1F Member ✭✭
    edited November 2016
    We could maybe work something out on that, my friend.

    Did you do straight Netty on those apps?
  • Walt - KZ1F
    Walt - KZ1F Member ✭✭
    edited November 2016
    BTW, Simply outstanding execution!!!
  • Walt - KZ1F
    Walt - KZ1F Member ✭✭
    edited November 2016
    Enzo, did you search java midi? Try kevinboone.net/javamidi.html
  • James Whiteway
    edited January 2017
    Enzo, it just gets better and better! Very nice. I'm sure you will solve your issues.
    james
    WD5GWY

  • IW7DMH, Enzo
    IW7DMH, Enzo Member ✭✭
    edited December 2016
    Netty is on my to-do list. In the beginning I had some trobles with the subtle "Not On fx application thread" error, so I concentrated my efforts on the gui logic.
    Actually my protocol is very simple, just 7-8 commands, and now I am using a simple parser thread.
    I'll do some test with javamidi in next days.

    Thank you very much.
  • IW7DMH, Enzo
    IW7DMH, Enzo Member ✭✭
    edited December 2016
    Thank you James, nice to read you again. I can work on this project only during the we, so my progresses go on very slowly ... :)
    JavaFx actually open an entire universe and I think it makes a lot of sense studing for it.

    73' Enzo
    iw7dmh

  • Walt - KZ1F
    Walt - KZ1F Member ✭✭
    edited November 2016
    Ah, the other thing I want to point out to you, small steps to start, is SceneBuilder. The 2.0.2 source is available and Gluon is now supporting the ongoing dev of it. You app is graphically very busy. SceneBuilder will save you an immense amount of time and will not only wire a controller for you and wire in a Style sheet (CSS) to your controls so you can externally change the look and feel without touching code. The base stylesheet for javafx8 is Modena but you can subclass it with your own stylesheet. Yes, I long ago concluded using javafx8 is the only sane way to develop graphical software. I have been trying to convince certain people of that. So far, to no avail. I have not updated XPSLib since adding the data access objects, so it is still at 1.4.whatever. However, unlike flexlib, it works just fine with a radio at 1.6.whatever. If you are not already using it you'll like SceneBuilder.
  • IW7DMH, Enzo
    IW7DMH, Enzo Member ✭✭
    edited December 2016
    Yes, it is.
    I developed two scenes using Scenebuilder and then I refined control's layout using CSS styles . This is really amazing for a desktop application.
    I have also tested the whole deployment cycle using the Eclipse plugin. It seems really smart and powerful. No matter where you develop: after the build process you can deploy wherever you like.





  • Walt - KZ1F
    Walt - KZ1F Member ✭✭
    edited November 2016
    And this is why I've been so, shall we say, passionate about FRS picking up the mantle of supporting SmartSDR for all platforms rather than people having to continually playing catchup with whatever FlexRadio decides they want to do every three months. Now, if I could charge what DogPark and Stu charge and even get but 200 people, much less 1,000) to take a completely portable (RUN IT ANYWHERE) SSDR facsimile, then sure I'd be happy to play follow the leader with FRS or, hire someone in India or China to play follow the leader with FRS while I maintain rights to the IP..hmm that precludes China then. As a consumer though, it's just easier if FRS does it...which they seem insistent on not doing. But, for free? I am not going to release it and support it for free.

    But I am thrilled you are embracing the technology. I think it is the only sane way to develop RIAs. There are just too many people who, given a viable choice, would never use Windows.

    But, hosting a 24x7x365 license server while doable is a pita to develop. I am not sure I could get a fail-safe vm from AWS for a year at three cents per hour.  It works with Apple and Google (Android) because they know who you are and what device you are using. Microsoft, RH/Canonical, Raspberry Pi don't. I agree with Stu that the problem is not rocket science. It is also not trivial once you think it through.

    Maybe I just lack a sufficient entrepreneurial spirit. (500 * $100 * 0.7). Hmmm, maybe I should do trailers.
  • IW7DMH, Enzo
    IW7DMH, Enzo Member ✭✭
    edited January 2017
    Hello,

    in the end I have used the beads library (http://www.beadsproject.net/) that is most likely a wrapper for the native Java Sound Api I was using in my first attempt. With the beads library you have out of the box most commons wave generators, players of any kind and a very reliable enviroment for thread handling/synchronization.
    Anyway tone generation is a matter of pc speed, audio sound card performance and cw speed. This actually means that you may experience bad delay if the mix of the three components is not enough for fast tone generation. I had good performance until 20wpm, but for more speed I still prefer the cw keyer sidetone generation. In this way I have a perfect timing until 35 wpm so I can consider this solution the only way to go.
    At the moment my experiment is ended and I now I am able to control my little station from a remote place using a standalone device (no pc on the remote side) and do other things you can see in this video.

    73'
    Enzo



  • Walt - KZ1F
    Walt - KZ1F Member ✭✭
    edited November 2016
    Very cool Enzo! Very cool indeed!
  • James Whiteway
    edited February 2016
    Outstanding work! James

Leave a Comment

Rich Text Editor. To edit a paragraph's style, hit tab to get to the paragraph menu. From there you will be able to pick one style. Nothing defaults to paragraph. An inline formatting menu will show up when you select text. Hit tab to get into that menu. Some elements, such as rich link embeds, images, loading indicators, and error messages may get inserted into the editor. You may navigate to these using the arrow keys inside of the editor and delete them with the delete or backspace key.