CWX Backspace Bug Still Present in SSDR V2

  • 1
  • Problem
  • Updated 8 months ago
I am mostly a CW operator and use "remote" with a laptop on my home network. The new SSDR V2 works well for me (very stable) and I love that the CWX window can be moved! But a bug remains in CWX, Backspacing in the CWX buffer does not correct typing errors and the errors get sent even if I backspace to correct them. This is a previously reported bug (Tracker 4542 + community comments).  Unless I am wrong, SSDR V2 has not fixed this bug? It would significantly enhance the quality of CW sent by CWX if this can be remedied.
Photo of John AK4Z

John AK4Z

  • 21 Posts
  • 5 Reply Likes

Posted 8 months ago

  • 1
Photo of Tim - W4TME

Tim - W4TME, Customer Experience Manager

  • 8684 Posts
  • 3262 Reply Likes
Are you positive that the backspaced characters are not sent and it isn't just the sidetone you are hearing?
Photo of Craig - KØCF

Craig - KØCF

  • 89 Posts
  • 24 Reply Likes

Tim, why would the sidetone not monitor the actual signal being sent? That is, after all, its purpose -- to let you know exactly what is going out over the air. In my estimation, this needs to be fixed, as you will usually not have the means to monitor your signal any other way. The way it works now will only lead to confusion.

73,
Craig, KØCF

Photo of John AK4Z

John AK4Z

  • 21 Posts
  • 5 Reply Likes
Good question. I hear the typing errors sent even when I backspace and correct them. But this is reported by listening to the laptop sidetone. I will listen to the actual transmitted signal on a second receiver to confirm whether they are or are not corrected. I will report back after checking with a second receiver on the actual transmit signal. Thanks Tim for guiding me in checking this out. 
Photo of John AK4Z

John AK4Z

  • 21 Posts
  • 5 Reply Likes
Tim you are correct! The text being transmitted is correct but the sidetone retains the errors. In my inexperience with my Flex I didn't think to listen to the actual transmitted signal. I was fooled by what I was hearing in the sidetone.  Lesson learned for me...don't rely on sidetone. When text is corrected in the type-ahead buffer it is correctly sent when transmitted. A big THANK YOU for helping me understand. Loving SSDR V2. 
Photo of Tim - W4TME

Tim - W4TME, Customer Experience Manager

  • 8684 Posts
  • 3262 Reply Likes
So here is the deal. Everything concerning the sending of CW is all about timing and minimizing latency (the killer of timing).  Unfortunately, with CWX, the same process that is generating CW (the radio) is not the same process that is generating sidetone (a pc sound card)

In CWX, there are two separate processes are realted but not dependent on each other; sending CW as RF and generating sidetone so you can hear the CW that you have sent.  These two processes do not have to happen simultaneously.  As a matter of fact, it is best that they do not happen exactly at the same time.

In CWX, when you hit the enter key the client (SmartSDR) sends a buffer of commands from the PC to the radio for sending the actual CW.  Each character in that buffer is put in a sending queue and the CW generated based on the WPM one character at a time. 

At the same time you hit the enter key in the example above, the same buffer of data is sent to the PC sound card (client tone generator) so you can hear what you just sent.

The two processes are happening at the same time independently of one another.  If they worked together interdependently, then network latency and all of the other system latencies get in the way and that can make for the actual CW sent as RF come out with irregular timing (very bad).

When you backspace, we know exactly how many characters are removed and send commands to the radio to remove those characters from the sending queue if they have not been sent.  This has priority because we do not want to send irregular or malformed CW, especially when high sending speeds are used.  

Due to several factors, some of which are indeterminate and we have little or no control over, we cannot be certain that we'll be able to sync the client tone generator with the sending queue on the radio, therefore we err on the side of preventing incorrect CW from being sent.

This is not to say what you are asking for cannot be done.  It is just a very complex problem programmatically that might result in a worse overall situation (CW sending quality) to sync an edge case of cleaning up the sidetone when deleting characters.

This is one of the reasons that Maestro has a hardware Winkeyer embedded in the unit.  The Winkeyer hardware is generating the sidetone while simultaneously sending the control characters to send CW as RF.  It does not have to deal with PC latencies of using a sound card to generate CW
Photo of Jean-Luc / F5JRC

Jean-Luc / F5JRC

  • 47 Posts
  • 4 Reply Likes
Thanks Tim, very informative!
Photo of Mark WS7M

Mark WS7M

  • 270 Posts
  • 74 Reply Likes
@Tim,

Thanks for the detailed explanation.  It does seem to me that sending (IE over the air) follows what you type and backspace but the sound card plays everything even if not backspaced.

This is functional but kind of annoying and unless you test it like I have you will wonder what in the heck you actually sent.

I understand the difficulty of what is being done but it seems to be one way to fix this if it isn't being done already is to commit a full word at a time to both buffers.  When you take that word you would change its color and not allow backspace.

Like anything there is that user interaction to worry about and creating a control where you isolate a word at time and prevent the user from changing it would be a minor challenge in itself.

I've been considering this same problem for software I am writing.  It is a tricky problem and I think there is no ideal solution.  To me word selection makes the most sense.

Anyway thanks to the team for making this better than it used to be.
Photo of Tim - W4TME

Tim - W4TME, Customer Experience Manager

  • 8672 Posts
  • 3261 Reply Likes
Mark,  Thanks for the reply.  If you come up with a solution for your issue that is closer to ideal, let us know so we can consider applying that logic to this issue.
(Edited)