<div dir="ltr">Hello Doug & Warren,<br><br>Would it be possible to include the patches below in a future release of PowerSDR/OpenHPSDR mRX PS?<br><br>When using digital modes like JT65, it is possible to run multiple instances of software, like for WSJT. In combination with an ANAN transceiver this allows to monitor 2 different bands concurrently (and hopefully more in future).<br>The CAT commands TX and FA are used by this software, independent of the instance used. This is a bit of a pain and confusing.<br><br>I have connected the first instance to the CAT(1) and the 2nd instance to CAT2 on HPSDR. <br>The patches will select the proper VFO for the instance (CAT port) for frequency changes and also for transmit. <br>Instance #1, connected to CAT(1) controls VFOA and when the transmitter is keyed, it selects VFOA for transmit. Likewise, instance #2, connected to CAT2 controls VFOB and when the transmitter is keyed, it selects VFOB for transmit.<br>When a VFO is adjusted in HPSDR, the corresponding instance of WSJT will follow too.<br><br>I think that it is necessary to add a flag in the CAT instances to enable of disable this patch.<br>When the number of receivers are increased, it would be very nice if there is a corresponding CAT port for each receiver.<br><br><br>My changes are between:  // pa0tbr start  and  // pa0tbr end<br><br>Changes in public class SIOListenerII(Console c) are:<br><br>        private void SerialRXEventHandler(object source, SerialRXEvent e)<br>        {<br>            ...<br>            ...<br><br>            CommBuffer.Append(e.buffer);                                 // put the data in the string<br>            if (parser != null) // is the parser instantiated<br>            {<br>                //bufferLen = CommBuffer.Length;<br>                try<br>                {<br>                    Regex rex = new Regex(".*?;"); //accept any string ending in ;<br>                    string answer;<br>                    uint result;<br><br>                    for (Match m = rex.Match(CommBuffer.ToString()); m.Success; m = m.NextMatch()) //loop thru the buffer and find matches<br>                    {<br>                        //testTimer1.Start();<br>// pa0tbr start<br>                        if (m.Value.Equals("TX;")) answer = parser.Get("ZZSW0;");             // Select VFO A for Transmit<br>// pa0tbr end<br>                        answer = parser.Get(m.Value);                                   //send the match to the parser<br>                        ...<br>                        ...<br><br>and:<br>        private void SerialRX2EventHandler(object sender, SerialRXEvent e)<br>        {<br>            ...<br>            ...<br>            CommBuffer.Append(e.buffer);                                 // put the data in the string<br>            if (parser != null) // is the parser instantiated<br>            {<br>                //bufferLen = CommBuffer.Length;<br>                try<br>                {<br>                    Regex rex = new Regex(".*?;"); //accept any string ending in ;<br>                    string answer;<br>// pa0tbr start<br>                    string value;<br>                    bool atob = false;<br>// pa0tbr end<br>                    uint result;<br><br>                    for (Match m = rex.Match(CommBuffer.ToString()); m.Success; m = m.NextMatch()) //loop thru the buffer and find matches<br>                    {<br>                        //testTimer1.Start();<br>// pa0tbr start<br>                        value = m.Value;<br>                        if (value.Equals("TX;")) answer = parser.Get("ZZSW1;");             // Select VFO B for Transmit<br><br>                        if (value.StartsWith("FA"))                                         // If frequency change, change frequency of VFO B<br>                        {<br>                            atob = true;<br>                            value = value.Replace("FA", "FB");                              // Translate request<br>                        }<br><br>                        //answer = parser.Get(m.Value);                                     //send the match to the parser<br>                        answer = parser.Get(value);                                         //send the match to the parser<br><br>                        if (atob)<br>                        {<br>                            answer = answer.Replace("FB", "FA");                            // Translate reply<br>                        }<br>                        atob = false;<br>// pa0tbr end<br>                        //testTimer1.Stop();<br>                        ...<br>                        ...<br><br>Please do let me know if more info is needed.<br><br>73,<br>Ton PA0TBR</div>