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()); } }
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()); } }