示例#1
0
        unsafe private void KeyThread() // changes yt7pwr
        {
            try
            {
                int[] tmp     = new int[1];
                bool  tune_CW = false;

                //do
                {
                    DttSP.KeyerStartedWait();

                    while (runKeyer)
                    {
                        timer.Start();
                        DttSP.PollTimerWait();
                        CWMonitorState = DttSP.KeyerPlaying();

                        if (tuneCW && !tune_CW)
                        {
                            tune_CW = true;
                            secondary_keyer_dash = false;
                            secondary_keyer_dot  = true;
                        }
                        else if (!tuneCW && tune_CW)
                        {
                            tune_CW = false;
                            secondary_keyer_dash = false;
                            secondary_keyer_dot  = false;
                        }
                        else if (memoryptt)
                        {
                            //console ptt on
                            keyprog             = true;
                            secondary_keyer_dot = secondary_keyer_dash = memorykey;

                            if (console.CWMonitorEnabled)
                            {
                                if (console.CurrentModel == Model.GENESIS_G6)
                                {
                                    if (memorykey)
                                    {
                                        if (!CW_monitor_on && cw_monitor_enabled)
                                        {
                                            console.g6.WriteToDevice(24, 1); // CW monitor on
                                            CW_monitor_off = false;
                                            CW_monitor_on  = true;
                                        }
                                    }
                                    else
                                    {
                                        if (!CW_monitor_off && cw_monitor_enabled)
                                        {
                                            console.g6.WriteToDevice(24, 0);  // CW monitor off
                                            CW_monitor_on  = false;
                                            CW_monitor_off = true;
                                        }
                                    }
                                }
                                else if (console.CurrentModel == Model.GENESIS_G59USB)
                                {
                                    if (memorykey)
                                    {
                                        if (!CW_monitor_on && cw_monitor_enabled)
                                        {
                                            console.g59.WriteToDevice(24, 1); // CW monitor on
                                            CW_monitor_off = false;
                                            CW_monitor_on  = true;
                                        }
                                    }
                                    else
                                    {
                                        if (!CW_monitor_off && cw_monitor_enabled)
                                        {
                                            console.g59.WriteToDevice(24, 0);  // CW monitor off
                                            CW_monitor_on  = false;
                                            CW_monitor_off = true;
                                        }
                                    }
                                }
                                else if (console.CurrentModel == Model.GENESIS_G59NET)
                                {
                                    if (memorykey)
                                    {
                                        if (!CW_monitor_on && cw_monitor_enabled)
                                        {
                                            console.net_device.WriteToDevice(24, 1); // CW monitor on
                                            CW_monitor_off = false;
                                            CW_monitor_on  = true;
                                        }
                                    }
                                    else
                                    {
                                        if (!CW_monitor_off && cw_monitor_enabled)
                                        {
                                            console.net_device.WriteToDevice(24, 0);  // CW monitor off
                                            CW_monitor_on  = false;
                                            CW_monitor_off = true;
                                        }
                                    }
                                }
                                else if (console.CurrentModel == Model.GENESIS_G11)
                                {
                                    if (memorykey)
                                    {
                                        if (!CW_monitor_on && cw_monitor_enabled)
                                        {
                                            console.g11.WriteToDevice(24, 1); // CW monitor on
                                            CW_monitor_off = false;
                                            CW_monitor_on  = true;
                                        }
                                    }
                                    else
                                    {
                                        if (!CW_monitor_off && cw_monitor_enabled)
                                        {
                                            console.g11.WriteToDevice(24, 0);  // CW monitor off
                                            CW_monitor_on  = false;
                                            CW_monitor_off = true;
                                        }
                                    }
                                }
                                else if (console.CurrentModel == Model.GENESIS_G160 ||
                                         console.CurrentModel == Model.GENESIS_G3020 ||
                                         console.CurrentModel == Model.GENESIS_G40 ||
                                         console.CurrentModel == Model.GENESIS_G80)
                                {
                                    if (memorykey)
                                    {
                                        if (!CW_monitor_on && cw_monitor_enabled)
                                        {
                                            CW_monitor(true);
                                            CW_monitor_off = false;
                                            CW_monitor_on  = true;
                                        }
                                    }
                                    else
                                    {
                                        if (!CW_monitor_off && cw_monitor_enabled)
                                        {
                                            CW_monitor(false);
                                            CW_monitor_on  = false;
                                            CW_monitor_off = true;
                                        }
                                    }
                                }
                            }
                        }
                        else if (!tune_CW)
                        {
                            secondary_keyer_dash = false;
                            secondary_keyer_dot  = false;
                            keyprog = false;
                        }

                        if (enabled_secondary_keyer && (secondary_keyer_mox || ptt_bit_bang_enabled))
                        {
                            keyprog = false;

                            switch (secondary_conn_port)
                            {
                            case "None":
                                break;

                            default:     // comm port
                                if (sp2.IsOpen)
                                {
                                    switch (secondary_dot_line)
                                    {
                                    case KeyerLine.DSR:
                                        secondary_keyer_dot = sp2.DsrHolding;
                                        break;

                                    case KeyerLine.CTS:
                                        secondary_keyer_dot = sp2.CtsHolding;
                                        break;

                                    case KeyerLine.DCD:
                                        secondary_keyer_dot = sp2.CDHolding;
                                        break;

                                    case KeyerLine.NONE:
                                        secondary_keyer_dot = false;
                                        break;
                                    }
                                    switch (secondary_dash_line)
                                    {
                                    case KeyerLine.DSR:
                                        secondary_keyer_dash = sp2.DsrHolding;
                                        break;

                                    case KeyerLine.CTS:
                                        secondary_keyer_dash = sp2.CtsHolding;
                                        break;

                                    case KeyerLine.DCD:
                                        secondary_keyer_dash = sp2.CDHolding;
                                        break;

                                    case KeyerLine.NONE:
                                        secondary_keyer_dash = false;
                                        break;
                                    }

                                    if (console.CWMonitorEnabled)
                                    {
                                        if (console.CurrentModel == Model.GENESIS_G59USB)
                                        {
                                            if (CWMonitorState)
                                            {
                                                if (!CW_monitor_on && cw_monitor_enabled)
                                                {
                                                    console.g59.WriteToDevice(24, 1);     // CW monitor on
                                                    CW_monitor_off = false;
                                                    CW_monitor_on  = true;
                                                }
                                            }
                                            else
                                            {
                                                if (!CW_monitor_off && cw_monitor_enabled)
                                                {
                                                    console.g59.WriteToDevice(24, 0);      // CW monitor off
                                                    CW_monitor_on  = false;
                                                    CW_monitor_off = true;
                                                }
                                            }
                                        }
                                        else if (console.CurrentModel == Model.GENESIS_G59NET)
                                        {
                                            if (CWMonitorState)
                                            {
                                                if (!CW_monitor_on && cw_monitor_enabled)
                                                {
                                                    console.net_device.WriteToDevice(24, 1);     // CW monitor on
                                                    CW_monitor_off = false;
                                                    CW_monitor_on  = true;
                                                }
                                            }
                                            else
                                            {
                                                if (!CW_monitor_off && cw_monitor_enabled)
                                                {
                                                    console.net_device.WriteToDevice(24, 0);      // CW monitor off
                                                    CW_monitor_on  = false;
                                                    CW_monitor_off = true;
                                                }
                                            }
                                        }
                                        else if (console.CurrentModel == Model.GENESIS_G11)
                                        {
                                            if (CWMonitorState)
                                            {
                                                if (!CW_monitor_on && cw_monitor_enabled)
                                                {
                                                    console.g11.WriteToDevice(24, 1);     // CW monitor on
                                                    CW_monitor_off = false;
                                                    CW_monitor_on  = true;
                                                }
                                            }
                                            else
                                            {
                                                if (!CW_monitor_off && cw_monitor_enabled)
                                                {
                                                    console.g11.WriteToDevice(24, 0);      // CW monitor off
                                                    CW_monitor_on  = false;
                                                    CW_monitor_off = true;
                                                }
                                            }
                                        }
                                        else if (console.CurrentModel == Model.GENESIS_G160 ||
                                                 console.CurrentModel == Model.GENESIS_G3020 ||
                                                 console.CurrentModel == Model.GENESIS_G40 ||
                                                 console.CurrentModel == Model.GENESIS_G80)
                                        {
                                            if (dtr_cw_monitor && cw_monitor_enabled)
                                            {
                                                if (CWMonitorState)
                                                {
                                                    CW_monitor(true);
                                                }
                                                else
                                                {
                                                    CW_monitor(false);
                                                }
                                            }
                                        }
                                    }
                                }
                                break;
                            }
                        }

                        if (enabled_primary_keyer && !secondary_keyer_mox && !memoryptt)
                        {
                            switch (primary_conn_port)
                            {
                            case "USB":
                            {
                                switch (console.CurrentModel)
                                {
                                case Model.GENESIS_G6:
                                {
                                    if (console.g6.Connected && console.g6.KeyerNewData)
                                    {
                                        keyprog           = false;
                                        primary_keyer_mox = true;

                                        switch (console.g6.KEYER)
                                        {
                                        case 0:                                                                // DASH ON command from USB
                                            primary_keyer_dash = true;
                                            break;

                                        case 1:                                                                // DOT ON command from USB
                                            primary_keyer_dot = true;
                                            break;

                                        case 2:                                                                // DASH OFF command from USB
                                            primary_keyer_dash = false;
                                            break;

                                        case 3:                                                                // DOT OFF command from USB
                                            primary_keyer_dot = false;
                                            break;

                                        case 0xaa:
                                            console.g6.KEYER   = 0xff;
                                            primary_keyer_dot  = false;
                                            primary_keyer_dash = false;
                                            break;

                                        case 0xcc:                                                              // TUN off
                                            console.g11.KEYER  = 0xff;
                                            primary_keyer_dot  = false;
                                            primary_keyer_dash = false;
                                            tuneCW             = false;
                                            break;

                                        default:
                                            primary_keyer_dash = false;
                                            primary_keyer_dot  = false;
                                            break;
                                        }
                                    }
                                }
                                break;

                                case Model.GENESIS_G59USB:
                                {
                                    if (console.g59.Connected && console.g59.KeyerNewData)
                                    {
                                        keyprog           = false;
                                        primary_keyer_mox = true;

                                        switch (console.g59.KEYER)
                                        {
                                        case 0:                                                                // DASH ON command from USB
                                            primary_keyer_dash = true;
                                            break;

                                        case 1:                                                                // DOT ON command from USB
                                            primary_keyer_dot = true;
                                            break;

                                        case 2:                                                                // DASH OFF command from USB
                                            primary_keyer_dash = false;
                                            break;

                                        case 3:                                                                // DOT OFF command from USB
                                            primary_keyer_dot = false;
                                            break;

                                        case 0xaa:
                                            console.g59.KEYER  = 0xff;
                                            primary_keyer_dot  = false;
                                            primary_keyer_dash = false;
                                            break;

                                        case 0xcc:                                                              // TUN off
                                            console.g11.KEYER  = 0xff;
                                            primary_keyer_dot  = false;
                                            primary_keyer_dash = false;
                                            tuneCW             = false;
                                            break;

                                        default:
                                            primary_keyer_dash = false;
                                            primary_keyer_dot  = false;
                                            break;
                                        }
                                    }
                                }
                                break;

                                case Model.GENESIS_G11:
                                {
                                    if (console.g11.Connected && console.g11.KeyerNewData)
                                    {
                                        keyprog           = false;
                                        primary_keyer_mox = true;

                                        switch (console.g11.KEYER)
                                        {
                                        case 0:                                                                // DASH ON command from USB
                                            primary_keyer_dash = true;
                                            break;

                                        case 1:                                                                // DOT ON command from USB
                                            primary_keyer_dot = true;
                                            break;

                                        case 2:                                                                // DASH OFF command from USB
                                            primary_keyer_dash = false;
                                            break;

                                        case 3:                                                                // DOT OFF command from USB
                                            primary_keyer_dot = false;
                                            break;

                                        case 0xaa:
                                            console.g11.KEYER  = 0xff;
                                            primary_keyer_dot  = false;
                                            primary_keyer_dash = false;
                                            break;

                                        case 0xcc:                                                              // TUN off
                                            console.g11.KEYER  = 0xff;
                                            primary_keyer_dot  = false;
                                            primary_keyer_dash = false;
                                            tuneCW             = false;
                                            break;

                                        default:
                                            primary_keyer_dash = false;
                                            primary_keyer_dot  = false;
                                            break;
                                        }
                                    }
                                }
                                break;
                                }
                            }
                            break;

                            case "NET":
                            {
                                if (console.net_device.Connected && console.net_device.KeyerNewData)
                                {
                                    keyprog           = false;
                                    primary_keyer_mox = true;

                                    switch (console.net_device.KEYER)
                                    {
                                    case 0:                                                        // DASH ON command from Network
                                        primary_keyer_dash = true;
                                        primary_keyer_dot  = false;
                                        break;

                                    case 1:                                                        // DOT ON command from Network
                                        primary_keyer_dot  = true;
                                        primary_keyer_dash = false;
                                        break;

                                    case 2:                                                        // DASH OFF command from Network
                                        primary_keyer_dash = false;
                                        break;

                                    case 3:                                                        // DOT OFF command from Network
                                        primary_keyer_dot = false;
                                        break;

                                    case 0xaa:
                                        console.net_device.KEYER = 0xff;
                                        primary_keyer_dot        = false;
                                        primary_keyer_dash       = false;
                                        break;

                                    default:
                                        primary_keyer_dash = false;
                                        primary_keyer_dot  = false;
                                        break;
                                    }
                                }
                            }
                            break;

                            case "QRP2000":
                            {
                                if (console.qrp2000.QRP2000Status())
                                {
                                    keyprog = false;

                                    if (console.MOX)
                                    {
                                        console.qrp2000.SetPTTGetCWInput(1, tmp);
                                    }
                                    else
                                    {
                                        console.qrp2000.SetPTTGetCWInput(0, tmp);
                                    }

                                    if (QRP2000CW1)
                                    {
                                        tmp[0] &= 0x20;
                                    }
                                    else if (QRP2000CW2)
                                    {
                                        tmp[0] &= 0x02;
                                    }

                                    if (tmp[0] == 0x00)
                                    {
                                        primary_keyer_dash = primary_keyer_dot = true;
                                    }
                                    else
                                    {
                                        primary_keyer_dash = primary_keyer_dot = false;
                                    }
                                }
                            }
                            break;

                            default:
                                if (sp.IsOpen)
                                {
                                    keyprog = false;

                                    keyprog            = false;
                                    primary_keyer_dash = sp.CtsHolding;
                                    primary_keyer_dot  = sp.DsrHolding;

                                    if (dtr_cw_monitor && console.CWMonitorEnabled)
                                    {
                                        if (CWMonitorState)
                                        {
                                            CW_monitor(true);
                                        }
                                        else
                                        {
                                            CW_monitor(false);
                                        }
                                    }
                                }
                                break;
                            }
                        }

                        timer.Stop();
                        msdel = (float)timer.DurationMsec;
                        //msdel = (float)DttSP.TimerRead();
                        //Debug.Write(msdel.ToString() + "\n");

                        if (keyprog || secondary_keyer_mox || tune_CW || ptt_bit_bang_enabled)
                        {
                            //keyprog = false;
                            DttSP.KeyValue(msdel, secondary_keyer_dash, secondary_keyer_dot, keyprog);
                            keyprog = false;
                        }
                        else if (primary_keyer_mox)
                        {
                            DttSP.KeyValue(msdel, primary_keyer_dash, primary_keyer_dot, keyprog);
                        }
                        else if (enabled_primary_keyer && !secondary_keyer_mox && !memoryptt)
                        {
                            DttSP.KeyValue(msdel, primary_keyer_dash, primary_keyer_dot, keyprog);
                        }
                        else
                        {
                            DttSP.KeyValue(msdel, false, false, false);
                            primary_keyer_mox   = false;
                            secondary_keyer_mox = false;
                            keyprog             = false;
                        }
                    }
                }// while (true);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error in KeyThread!\n" + ex.ToString());
            }
        }
示例#2
0
        unsafe private void KeyThread() // changes yt7pwr
        {
            try
            {
                int[] tmp     = new int[1];
                bool  tune_CW = false;

                //do
                {
                    DttSP.KeyerStartedWait();

                    while (runKeyer)
                    {
                        timer.Start();
                        DttSP.PollTimerWait();
                        CWMonitorState = DttSP.KeyerPlaying();

                        if (tuneCW && !tune_CW)
                        {
                            tune_CW = true;
                            secondary_keyer_dash = false;
                            secondary_keyer_dot  = true;
                        }
                        else if (!tuneCW && tune_CW)
                        {
                            tune_CW = false;
                            secondary_keyer_dash = false;
                            secondary_keyer_dot  = false;
                        }
                        else if (memoryptt)
                        {
                            //console ptt on
                            keyprog             = true;
                            secondary_keyer_dot = secondary_keyer_dash = memorykey;

                            if (console.CWMonitorEnabled)
                            {
                                if (console.CurrentModel == Model.LimeSDR)
                                {
                                }
                            }
                        }
                        else if (!tune_CW)
                        {
                            secondary_keyer_dash = false;
                            secondary_keyer_dot  = false;
                            keyprog = false;
                        }

                        if (enabled_secondary_keyer && (secondary_keyer_mox || ptt_bit_bang_enabled))
                        {
                            keyprog = false;

                            switch (secondary_conn_port)
                            {
                            case "None":
                                break;

                            default:     // comm port
                                if (sp2.IsOpen)
                                {
                                    switch (secondary_dot_line)
                                    {
                                    case KeyerLine.DSR:
                                        secondary_keyer_dot = sp2.DsrHolding;
                                        break;

                                    case KeyerLine.CTS:
                                        secondary_keyer_dot = sp2.CtsHolding;
                                        break;

                                    case KeyerLine.DCD:
                                        secondary_keyer_dot = sp2.CDHolding;
                                        break;

                                    case KeyerLine.NONE:
                                        secondary_keyer_dot = false;
                                        break;
                                    }
                                    switch (secondary_dash_line)
                                    {
                                    case KeyerLine.DSR:
                                        secondary_keyer_dash = sp2.DsrHolding;
                                        break;

                                    case KeyerLine.CTS:
                                        secondary_keyer_dash = sp2.CtsHolding;
                                        break;

                                    case KeyerLine.DCD:
                                        secondary_keyer_dash = sp2.CDHolding;
                                        break;

                                    case KeyerLine.NONE:
                                        secondary_keyer_dash = false;
                                        break;
                                    }
                                }
                                break;
                            }
                        }

                        if (enabled_primary_keyer && !secondary_keyer_mox && !memoryptt)
                        {
                            switch (primary_conn_port)
                            {
                            case "USB":
                            {
                                switch (console.CurrentModel)
                                {
                                case Model.LimeSDR:
                                {
                                    if (console.limeSDR.device != null && console.limeSDR.connected)
                                    {
                                        uint key = console.limeSDR.device.ReadKeyer();
                                        key = key & 0xc0;
                                        //Debug.Write("Keyer: " + key.ToString() + " \n");

                                        if (key == 0x40)
                                        {
                                            primary_keyer_dash = true;
                                            primary_keyer_dot  = false;
                                        }
                                        else if (key == 0x80)
                                        {
                                            primary_keyer_dot  = true;
                                            primary_keyer_dash = false;
                                        }
                                        else
                                        {
                                            primary_keyer_dot  = false;
                                            primary_keyer_dash = false;
                                        }
                                    }
                                    else
                                    {
                                        primary_keyer_dot  = false;
                                        primary_keyer_dash = false;
                                    }
                                }
                                break;
                                }
                            }
                            break;

                            default:
                                if (sp.IsOpen)
                                {
                                    keyprog = false;

                                    keyprog            = false;
                                    primary_keyer_dash = sp.CtsHolding;
                                    primary_keyer_dot  = sp.DsrHolding;

                                    if (dtr_cw_monitor && console.CWMonitorEnabled)
                                    {
                                        if (CWMonitorState)
                                        {
                                            CW_monitor(true);
                                        }
                                        else
                                        {
                                            CW_monitor(false);
                                        }
                                    }
                                }
                                break;
                            }
                        }

                        timer.Stop();
                        msdel = (float)timer.DurationMsec;
                        //msdel = (float)DttSP.TimerRead();
                        //Debug.Write(msdel.ToString() + "\n");

                        if (keyprog || secondary_keyer_mox || tune_CW || ptt_bit_bang_enabled)
                        {
                            //keyprog = false;
                            DttSP.KeyValue(msdel, secondary_keyer_dash, secondary_keyer_dot, keyprog);
                            keyprog = false;
                        }
                        else if (primary_keyer_mox)
                        {
                            DttSP.KeyValue(msdel, primary_keyer_dash, primary_keyer_dot, keyprog);
                        }
                        else if (enabled_primary_keyer && !secondary_keyer_mox && !memoryptt)
                        {
                            DttSP.KeyValue(msdel, primary_keyer_dash, primary_keyer_dot, keyprog);
                        }
                        else
                        {
                            DttSP.KeyValue(msdel, false, false, false);
                            primary_keyer_mox   = false;
                            secondary_keyer_mox = false;
                            keyprog             = false;
                        }
                    }
                }// while (true);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error in KeyThread!\n" + ex.ToString());
            }
        }