mirror of
https://github.com/dj0abr/SSB_HighSpeed_Modem.git
synced 2026-06-16 20:58:41 -04:00
update
This commit is contained in:
Generated
+124
-122
@@ -39,12 +39,12 @@
|
||||
this.panel_constel = new System.Windows.Forms.Panel();
|
||||
this.timer_qpsk = new System.Windows.Forms.Timer(this.components);
|
||||
this.panel_txspectrum = new System.Windows.Forms.Panel();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage_ber = new System.Windows.Forms.TabPage();
|
||||
this.button_stopBERtest = new System.Windows.Forms.Button();
|
||||
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
|
||||
this.button_startBERtest = new System.Windows.Forms.Button();
|
||||
this.rtb = new System.Windows.Forms.RichTextBox();
|
||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage_image = new System.Windows.Forms.TabPage();
|
||||
this.groupBox1 = new System.Windows.Forms.Panel();
|
||||
this.label_nextimage = new System.Windows.Forms.Label();
|
||||
this.cb_loop = new System.Windows.Forms.CheckBox();
|
||||
@@ -60,7 +60,7 @@
|
||||
this.pictureBox_rximage = new System.Windows.Forms.PictureBox();
|
||||
this.pictureBox_tximage = new System.Windows.Forms.PictureBox();
|
||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||
this.tabPage3 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage_file = new System.Windows.Forms.TabPage();
|
||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.bt_openrxfile = new System.Windows.Forms.Button();
|
||||
@@ -95,13 +95,13 @@
|
||||
this.label10 = new System.Windows.Forms.Label();
|
||||
this.cb_mic = new System.Windows.Forms.ComboBox();
|
||||
this.label11 = new System.Windows.Forms.Label();
|
||||
this.tabPage5 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage_setup = new System.Windows.Forms.TabPage();
|
||||
this.groupBox4 = new System.Windows.Forms.GroupBox();
|
||||
this.cb_language = new System.Windows.Forms.ComboBox();
|
||||
this.cb_autostart = new System.Windows.Forms.CheckBox();
|
||||
this.bt_shutdown = new System.Windows.Forms.Button();
|
||||
this.tb_shutdown = new System.Windows.Forms.TextBox();
|
||||
this.bt_resetmodem = new System.Windows.Forms.Button();
|
||||
this.textBox2 = new System.Windows.Forms.TextBox();
|
||||
this.textBox3 = new System.Windows.Forms.TextBox();
|
||||
this.groupBox3 = new System.Windows.Forms.GroupBox();
|
||||
this.pb_audioCAPstatus = new System.Windows.Forms.PictureBox();
|
||||
@@ -125,7 +125,7 @@
|
||||
this.tb_callsign = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.cb_stampcall = new System.Windows.Forms.CheckBox();
|
||||
this.tabPage4 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage_about = new System.Windows.Forms.TabPage();
|
||||
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
|
||||
this.cb_speed = new System.Windows.Forms.ComboBox();
|
||||
this.label_speed = new System.Windows.Forms.Label();
|
||||
@@ -140,13 +140,13 @@
|
||||
this.pb_rxsync = new System.Windows.Forms.PictureBox();
|
||||
this.pb_rxsignal = new System.Windows.Forms.PictureBox();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
this.tabPage1.SuspendLayout();
|
||||
this.tabPage2.SuspendLayout();
|
||||
this.tabPage_ber.SuspendLayout();
|
||||
this.tabPage_image.SuspendLayout();
|
||||
this.groupBox1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox_rximage)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox_tximage)).BeginInit();
|
||||
this.tabControl1.SuspendLayout();
|
||||
this.tabPage3.SuspendLayout();
|
||||
this.tabPage_file.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.tabPage_audio.SuspendLayout();
|
||||
this.groupBox7.SuspendLayout();
|
||||
@@ -158,7 +158,7 @@
|
||||
((System.ComponentModel.ISupportInitialize)(this.pb_voicePBstatus)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.tb_mic)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.tb_loadspeaker)).BeginInit();
|
||||
this.tabPage5.SuspendLayout();
|
||||
this.tabPage_setup.SuspendLayout();
|
||||
this.groupBox4.SuspendLayout();
|
||||
this.groupBox3.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pb_audioCAPstatus)).BeginInit();
|
||||
@@ -166,7 +166,7 @@
|
||||
((System.ComponentModel.ISupportInitialize)(this.tb_CAPvol)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.tb_PBvol)).BeginInit();
|
||||
this.groupBox2.SuspendLayout();
|
||||
this.tabPage4.SuspendLayout();
|
||||
this.tabPage_about.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pb_rxsync)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pb_rxsignal)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
@@ -235,19 +235,19 @@
|
||||
this.panel_txspectrum.TabIndex = 6;
|
||||
this.panel_txspectrum.Paint += new System.Windows.Forms.PaintEventHandler(this.panel_txspectrum_Paint);
|
||||
//
|
||||
// tabPage1
|
||||
// tabPage_ber
|
||||
//
|
||||
this.tabPage1.Controls.Add(this.button_stopBERtest);
|
||||
this.tabPage1.Controls.Add(this.button_startBERtest);
|
||||
this.tabPage1.Controls.Add(this.rtb);
|
||||
this.tabPage1.ImageIndex = 4;
|
||||
this.tabPage1.Location = new System.Drawing.Point(4, 23);
|
||||
this.tabPage1.Name = "tabPage1";
|
||||
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage1.Size = new System.Drawing.Size(1291, 552);
|
||||
this.tabPage1.TabIndex = 0;
|
||||
this.tabPage1.Text = "BER Test";
|
||||
this.tabPage1.UseVisualStyleBackColor = true;
|
||||
this.tabPage_ber.Controls.Add(this.button_stopBERtest);
|
||||
this.tabPage_ber.Controls.Add(this.button_startBERtest);
|
||||
this.tabPage_ber.Controls.Add(this.rtb);
|
||||
this.tabPage_ber.ImageIndex = 4;
|
||||
this.tabPage_ber.Location = new System.Drawing.Point(4, 23);
|
||||
this.tabPage_ber.Name = "tabPage_ber";
|
||||
this.tabPage_ber.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage_ber.Size = new System.Drawing.Size(1291, 552);
|
||||
this.tabPage_ber.TabIndex = 0;
|
||||
this.tabPage_ber.Text = "BER Test";
|
||||
this.tabPage_ber.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// button_stopBERtest
|
||||
//
|
||||
@@ -304,21 +304,21 @@
|
||||
this.rtb.TabIndex = 0;
|
||||
this.rtb.Text = "";
|
||||
//
|
||||
// tabPage2
|
||||
// tabPage_image
|
||||
//
|
||||
this.tabPage2.Controls.Add(this.groupBox1);
|
||||
this.tabPage2.Controls.Add(this.label_rximage);
|
||||
this.tabPage2.Controls.Add(this.label_tximage);
|
||||
this.tabPage2.Controls.Add(this.pictureBox_rximage);
|
||||
this.tabPage2.Controls.Add(this.pictureBox_tximage);
|
||||
this.tabPage2.ImageIndex = 3;
|
||||
this.tabPage2.Location = new System.Drawing.Point(4, 23);
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage2.Size = new System.Drawing.Size(1291, 552);
|
||||
this.tabPage2.TabIndex = 1;
|
||||
this.tabPage2.Text = "Image";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
this.tabPage_image.Controls.Add(this.groupBox1);
|
||||
this.tabPage_image.Controls.Add(this.label_rximage);
|
||||
this.tabPage_image.Controls.Add(this.label_tximage);
|
||||
this.tabPage_image.Controls.Add(this.pictureBox_rximage);
|
||||
this.tabPage_image.Controls.Add(this.pictureBox_tximage);
|
||||
this.tabPage_image.ImageIndex = 3;
|
||||
this.tabPage_image.Location = new System.Drawing.Point(4, 23);
|
||||
this.tabPage_image.Name = "tabPage_image";
|
||||
this.tabPage_image.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage_image.Size = new System.Drawing.Size(1291, 552);
|
||||
this.tabPage_image.TabIndex = 1;
|
||||
this.tabPage_image.Text = "Image";
|
||||
this.tabPage_image.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
@@ -375,6 +375,7 @@
|
||||
this.button_loadimage.ImageList = this.imageList1;
|
||||
this.button_loadimage.Location = new System.Drawing.Point(265, 5);
|
||||
this.button_loadimage.Name = "button_loadimage";
|
||||
this.button_loadimage.RightToLeft = System.Windows.Forms.RightToLeft.No;
|
||||
this.button_loadimage.Size = new System.Drawing.Size(88, 23);
|
||||
this.button_loadimage.TabIndex = 0;
|
||||
this.button_loadimage.Text = " Load Image";
|
||||
@@ -411,9 +412,9 @@
|
||||
this.checkBox_big.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkBox_big.Location = new System.Drawing.Point(187, 9);
|
||||
this.checkBox_big.Name = "checkBox_big";
|
||||
this.checkBox_big.Size = new System.Drawing.Size(75, 17);
|
||||
this.checkBox_big.Size = new System.Drawing.Size(79, 17);
|
||||
this.checkBox_big.TabIndex = 8;
|
||||
this.checkBox_big.Text = "big picture";
|
||||
this.checkBox_big.Text = "640(320)px";
|
||||
this.checkBox_big.UseVisualStyleBackColor = true;
|
||||
this.checkBox_big.CheckedChanged += new System.EventHandler(this.checkBox_small_CheckedChanged);
|
||||
//
|
||||
@@ -427,7 +428,7 @@
|
||||
this.button_cancelimg.Name = "button_cancelimg";
|
||||
this.button_cancelimg.Size = new System.Drawing.Size(75, 23);
|
||||
this.button_cancelimg.TabIndex = 9;
|
||||
this.button_cancelimg.Text = " Cancel";
|
||||
this.button_cancelimg.Text = " Cancel";
|
||||
this.button_cancelimg.UseVisualStyleBackColor = true;
|
||||
this.button_cancelimg.Click += new System.EventHandler(this.button_cancelimg_Click);
|
||||
//
|
||||
@@ -468,7 +469,7 @@
|
||||
//
|
||||
// pictureBox_rximage
|
||||
//
|
||||
this.pictureBox_rximage.BackgroundImage = global::oscardata.Properties.Resources.image1;
|
||||
this.pictureBox_rximage.BackgroundImage = global::oscardata.Properties.Resources.hintergrundxcf;
|
||||
this.pictureBox_rximage.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||
this.pictureBox_rximage.Location = new System.Drawing.Point(642, 27);
|
||||
this.pictureBox_rximage.Name = "pictureBox_rximage";
|
||||
@@ -479,7 +480,7 @@
|
||||
//
|
||||
// pictureBox_tximage
|
||||
//
|
||||
this.pictureBox_tximage.BackgroundImage = global::oscardata.Properties.Resources.image;
|
||||
this.pictureBox_tximage.BackgroundImage = global::oscardata.Properties.Resources.hintergrundxcf;
|
||||
this.pictureBox_tximage.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||
this.pictureBox_tximage.Location = new System.Drawing.Point(1, 27);
|
||||
this.pictureBox_tximage.Name = "pictureBox_tximage";
|
||||
@@ -489,12 +490,12 @@
|
||||
//
|
||||
// tabControl1
|
||||
//
|
||||
this.tabControl1.Controls.Add(this.tabPage2);
|
||||
this.tabControl1.Controls.Add(this.tabPage3);
|
||||
this.tabControl1.Controls.Add(this.tabPage_image);
|
||||
this.tabControl1.Controls.Add(this.tabPage_file);
|
||||
this.tabControl1.Controls.Add(this.tabPage_audio);
|
||||
this.tabControl1.Controls.Add(this.tabPage1);
|
||||
this.tabControl1.Controls.Add(this.tabPage5);
|
||||
this.tabControl1.Controls.Add(this.tabPage4);
|
||||
this.tabControl1.Controls.Add(this.tabPage_ber);
|
||||
this.tabControl1.Controls.Add(this.tabPage_setup);
|
||||
this.tabControl1.Controls.Add(this.tabPage_about);
|
||||
this.tabControl1.ImageList = this.imageList1;
|
||||
this.tabControl1.Location = new System.Drawing.Point(5, 3);
|
||||
this.tabControl1.Name = "tabControl1";
|
||||
@@ -502,26 +503,26 @@
|
||||
this.tabControl1.Size = new System.Drawing.Size(1299, 579);
|
||||
this.tabControl1.TabIndex = 3;
|
||||
//
|
||||
// tabPage3
|
||||
// tabPage_file
|
||||
//
|
||||
this.tabPage3.Controls.Add(this.pictureBox1);
|
||||
this.tabPage3.Controls.Add(this.button2);
|
||||
this.tabPage3.Controls.Add(this.bt_openrxfile);
|
||||
this.tabPage3.Controls.Add(this.label_rxfile);
|
||||
this.tabPage3.Controls.Add(this.label_txfile);
|
||||
this.tabPage3.Controls.Add(this.rtb_RXfile);
|
||||
this.tabPage3.Controls.Add(this.rtb_TXfile);
|
||||
this.tabPage3.Controls.Add(this.bt_file_send);
|
||||
this.tabPage3.Controls.Add(this.bt_sendBinaryFile);
|
||||
this.tabPage3.Controls.Add(this.bt_file_html);
|
||||
this.tabPage3.Controls.Add(this.bt_file_ascii);
|
||||
this.tabPage3.ImageIndex = 9;
|
||||
this.tabPage3.Location = new System.Drawing.Point(4, 23);
|
||||
this.tabPage3.Name = "tabPage3";
|
||||
this.tabPage3.Size = new System.Drawing.Size(1291, 552);
|
||||
this.tabPage3.TabIndex = 2;
|
||||
this.tabPage3.Text = "File";
|
||||
this.tabPage3.UseVisualStyleBackColor = true;
|
||||
this.tabPage_file.Controls.Add(this.pictureBox1);
|
||||
this.tabPage_file.Controls.Add(this.button2);
|
||||
this.tabPage_file.Controls.Add(this.bt_openrxfile);
|
||||
this.tabPage_file.Controls.Add(this.label_rxfile);
|
||||
this.tabPage_file.Controls.Add(this.label_txfile);
|
||||
this.tabPage_file.Controls.Add(this.rtb_RXfile);
|
||||
this.tabPage_file.Controls.Add(this.rtb_TXfile);
|
||||
this.tabPage_file.Controls.Add(this.bt_file_send);
|
||||
this.tabPage_file.Controls.Add(this.bt_sendBinaryFile);
|
||||
this.tabPage_file.Controls.Add(this.bt_file_html);
|
||||
this.tabPage_file.Controls.Add(this.bt_file_ascii);
|
||||
this.tabPage_file.ImageIndex = 9;
|
||||
this.tabPage_file.Location = new System.Drawing.Point(4, 23);
|
||||
this.tabPage_file.Name = "tabPage_file";
|
||||
this.tabPage_file.Size = new System.Drawing.Size(1291, 552);
|
||||
this.tabPage_file.TabIndex = 2;
|
||||
this.tabPage_file.Text = "File";
|
||||
this.tabPage_file.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
@@ -682,9 +683,9 @@
|
||||
this.rb_codec2.AutoSize = true;
|
||||
this.rb_codec2.Location = new System.Drawing.Point(92, 50);
|
||||
this.rb_codec2.Name = "rb_codec2";
|
||||
this.rb_codec2.Size = new System.Drawing.Size(289, 17);
|
||||
this.rb_codec2.Size = new System.Drawing.Size(342, 17);
|
||||
this.rb_codec2.TabIndex = 23;
|
||||
this.rb_codec2.Text = "CODEC-2 parametric audio codec. Audio rate: 3200 bps";
|
||||
this.rb_codec2.Text = "CODEC-2 parametric audio codec. For QPSK. Audio rate: 3200 bps";
|
||||
this.rb_codec2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// pictureBox2
|
||||
@@ -703,10 +704,10 @@
|
||||
this.rb_opus.Checked = true;
|
||||
this.rb_opus.Location = new System.Drawing.Point(92, 27);
|
||||
this.rb_opus.Name = "rb_opus";
|
||||
this.rb_opus.Size = new System.Drawing.Size(290, 17);
|
||||
this.rb_opus.Size = new System.Drawing.Size(348, 17);
|
||||
this.rb_opus.TabIndex = 0;
|
||||
this.rb_opus.TabStop = true;
|
||||
this.rb_opus.Text = "OPUS rate adaptive codec. Audio rate: 84% of data rate";
|
||||
this.rb_opus.Text = "OPUS rate adaptive codec. For 8APSK. Audio rate: 84% of data rate";
|
||||
this.rb_opus.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBox6
|
||||
@@ -910,34 +911,47 @@
|
||||
this.label11.TabIndex = 10;
|
||||
this.label11.Text = "Microphone:";
|
||||
//
|
||||
// tabPage5
|
||||
// tabPage_setup
|
||||
//
|
||||
this.tabPage5.Controls.Add(this.groupBox4);
|
||||
this.tabPage5.Controls.Add(this.groupBox3);
|
||||
this.tabPage5.Controls.Add(this.groupBox2);
|
||||
this.tabPage5.ImageIndex = 6;
|
||||
this.tabPage5.Location = new System.Drawing.Point(4, 23);
|
||||
this.tabPage5.Name = "tabPage5";
|
||||
this.tabPage5.Size = new System.Drawing.Size(1291, 552);
|
||||
this.tabPage5.TabIndex = 4;
|
||||
this.tabPage5.Text = "Setup";
|
||||
this.tabPage5.UseVisualStyleBackColor = true;
|
||||
this.tabPage_setup.Controls.Add(this.groupBox4);
|
||||
this.tabPage_setup.Controls.Add(this.groupBox3);
|
||||
this.tabPage_setup.Controls.Add(this.groupBox2);
|
||||
this.tabPage_setup.ImageIndex = 6;
|
||||
this.tabPage_setup.Location = new System.Drawing.Point(4, 23);
|
||||
this.tabPage_setup.Name = "tabPage_setup";
|
||||
this.tabPage_setup.Size = new System.Drawing.Size(1291, 552);
|
||||
this.tabPage_setup.TabIndex = 4;
|
||||
this.tabPage_setup.Text = "Setup";
|
||||
this.tabPage_setup.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBox4
|
||||
//
|
||||
this.groupBox4.Controls.Add(this.cb_language);
|
||||
this.groupBox4.Controls.Add(this.cb_autostart);
|
||||
this.groupBox4.Controls.Add(this.bt_shutdown);
|
||||
this.groupBox4.Controls.Add(this.tb_shutdown);
|
||||
this.groupBox4.Controls.Add(this.bt_resetmodem);
|
||||
this.groupBox4.Controls.Add(this.textBox2);
|
||||
this.groupBox4.Controls.Add(this.textBox3);
|
||||
this.groupBox4.Location = new System.Drawing.Point(12, 259);
|
||||
this.groupBox4.Name = "groupBox4";
|
||||
this.groupBox4.Size = new System.Drawing.Size(674, 105);
|
||||
this.groupBox4.Size = new System.Drawing.Size(674, 121);
|
||||
this.groupBox4.TabIndex = 15;
|
||||
this.groupBox4.TabStop = false;
|
||||
this.groupBox4.Text = "Maintenance";
|
||||
//
|
||||
// cb_language
|
||||
//
|
||||
this.cb_language.FormattingEnabled = true;
|
||||
this.cb_language.Items.AddRange(new object[] {
|
||||
"English",
|
||||
"German/Deutsch"});
|
||||
this.cb_language.Location = new System.Drawing.Point(207, 19);
|
||||
this.cb_language.Name = "cb_language";
|
||||
this.cb_language.Size = new System.Drawing.Size(110, 21);
|
||||
this.cb_language.TabIndex = 24;
|
||||
this.cb_language.Text = "English";
|
||||
this.cb_language.SelectedIndexChanged += new System.EventHandler(this.cb_language_SelectedIndexChanged);
|
||||
//
|
||||
// cb_autostart
|
||||
//
|
||||
this.cb_autostart.AutoSize = true;
|
||||
@@ -949,6 +963,7 @@
|
||||
this.cb_autostart.TabIndex = 4;
|
||||
this.cb_autostart.Text = "AUTO start/stop HSmodem";
|
||||
this.cb_autostart.UseVisualStyleBackColor = true;
|
||||
this.cb_autostart.CheckedChanged += new System.EventHandler(this.cb_autostart_CheckedChanged);
|
||||
//
|
||||
// bt_shutdown
|
||||
//
|
||||
@@ -974,7 +989,7 @@
|
||||
//
|
||||
// bt_resetmodem
|
||||
//
|
||||
this.bt_resetmodem.Location = new System.Drawing.Point(183, 17);
|
||||
this.bt_resetmodem.Location = new System.Drawing.Point(356, 82);
|
||||
this.bt_resetmodem.Name = "bt_resetmodem";
|
||||
this.bt_resetmodem.Size = new System.Drawing.Size(117, 23);
|
||||
this.bt_resetmodem.TabIndex = 6;
|
||||
@@ -983,19 +998,6 @@
|
||||
this.bt_resetmodem.Visible = false;
|
||||
this.bt_resetmodem.Click += new System.EventHandler(this.bt_resetmodem_Click);
|
||||
//
|
||||
// textBox2
|
||||
//
|
||||
this.textBox2.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.textBox2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.textBox2.ForeColor = System.Drawing.Color.Black;
|
||||
this.textBox2.Location = new System.Drawing.Point(183, 46);
|
||||
this.textBox2.Multiline = true;
|
||||
this.textBox2.Name = "textBox2";
|
||||
this.textBox2.Size = new System.Drawing.Size(126, 50);
|
||||
this.textBox2.TabIndex = 11;
|
||||
this.textBox2.Text = "in case the RX has sync\r\nproblems, it can be\r\nre-initialized here.";
|
||||
this.textBox2.Visible = false;
|
||||
//
|
||||
// textBox3
|
||||
//
|
||||
this.textBox3.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
@@ -1075,7 +1077,7 @@
|
||||
this.tb_CAPvol.Name = "tb_CAPvol";
|
||||
this.tb_CAPvol.Size = new System.Drawing.Size(100, 24);
|
||||
this.tb_CAPvol.TabIndex = 14;
|
||||
this.tb_CAPvol.TickStyle = System.Windows.Forms.TickStyle.None;
|
||||
this.tb_CAPvol.TickFrequency = 10;
|
||||
this.tb_CAPvol.Value = 50;
|
||||
this.tb_CAPvol.Scroll += new System.EventHandler(this.tb_CAPvol_Scroll);
|
||||
//
|
||||
@@ -1089,7 +1091,7 @@
|
||||
this.tb_PBvol.Name = "tb_PBvol";
|
||||
this.tb_PBvol.Size = new System.Drawing.Size(100, 24);
|
||||
this.tb_PBvol.TabIndex = 13;
|
||||
this.tb_PBvol.TickStyle = System.Windows.Forms.TickStyle.None;
|
||||
this.tb_PBvol.TickFrequency = 10;
|
||||
this.tb_PBvol.Value = 50;
|
||||
this.tb_PBvol.Scroll += new System.EventHandler(this.tb_PBvol_Scroll);
|
||||
//
|
||||
@@ -1263,16 +1265,16 @@
|
||||
this.cb_stampcall.Text = "Insert Callsign into picture";
|
||||
this.cb_stampcall.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage4
|
||||
// tabPage_about
|
||||
//
|
||||
this.tabPage4.Controls.Add(this.richTextBox1);
|
||||
this.tabPage4.ImageIndex = 12;
|
||||
this.tabPage4.Location = new System.Drawing.Point(4, 23);
|
||||
this.tabPage4.Name = "tabPage4";
|
||||
this.tabPage4.Size = new System.Drawing.Size(1291, 552);
|
||||
this.tabPage4.TabIndex = 6;
|
||||
this.tabPage4.Text = "About";
|
||||
this.tabPage4.UseVisualStyleBackColor = true;
|
||||
this.tabPage_about.Controls.Add(this.richTextBox1);
|
||||
this.tabPage_about.ImageIndex = 12;
|
||||
this.tabPage_about.Location = new System.Drawing.Point(4, 23);
|
||||
this.tabPage_about.Name = "tabPage_about";
|
||||
this.tabPage_about.Size = new System.Drawing.Size(1291, 552);
|
||||
this.tabPage_about.TabIndex = 6;
|
||||
this.tabPage_about.Text = "About";
|
||||
this.tabPage_about.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// richTextBox1
|
||||
//
|
||||
@@ -1426,20 +1428,20 @@
|
||||
this.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "Form1";
|
||||
this.Text = "QO-100 NB Transponder HS Multimedia Modem AMSAT-DL V0.4 by DJ0ABR";
|
||||
this.Text = "QO-100 NB Transponder HS Multimedia Modem AMSAT-DL V0.44 by DJ0ABR";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);
|
||||
this.statusStrip1.ResumeLayout(false);
|
||||
this.statusStrip1.PerformLayout();
|
||||
this.tabPage1.ResumeLayout(false);
|
||||
this.tabPage2.ResumeLayout(false);
|
||||
this.tabPage2.PerformLayout();
|
||||
this.tabPage_ber.ResumeLayout(false);
|
||||
this.tabPage_image.ResumeLayout(false);
|
||||
this.tabPage_image.PerformLayout();
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox_rximage)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox_tximage)).EndInit();
|
||||
this.tabControl1.ResumeLayout(false);
|
||||
this.tabPage3.ResumeLayout(false);
|
||||
this.tabPage3.PerformLayout();
|
||||
this.tabPage_file.ResumeLayout(false);
|
||||
this.tabPage_file.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||
this.tabPage_audio.ResumeLayout(false);
|
||||
this.groupBox7.ResumeLayout(false);
|
||||
@@ -1454,7 +1456,7 @@
|
||||
((System.ComponentModel.ISupportInitialize)(this.pb_voicePBstatus)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.tb_mic)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.tb_loadspeaker)).EndInit();
|
||||
this.tabPage5.ResumeLayout(false);
|
||||
this.tabPage_setup.ResumeLayout(false);
|
||||
this.groupBox4.ResumeLayout(false);
|
||||
this.groupBox4.PerformLayout();
|
||||
this.groupBox3.ResumeLayout(false);
|
||||
@@ -1465,7 +1467,7 @@
|
||||
((System.ComponentModel.ISupportInitialize)(this.tb_PBvol)).EndInit();
|
||||
this.groupBox2.ResumeLayout(false);
|
||||
this.groupBox2.PerformLayout();
|
||||
this.tabPage4.ResumeLayout(false);
|
||||
this.tabPage_about.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pb_rxsync)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pb_rxsignal)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
@@ -1482,11 +1484,11 @@
|
||||
private System.Windows.Forms.Panel panel_constel;
|
||||
private System.Windows.Forms.Timer timer_qpsk;
|
||||
private System.Windows.Forms.Panel panel_txspectrum;
|
||||
private System.Windows.Forms.TabPage tabPage1;
|
||||
private System.Windows.Forms.TabPage tabPage_ber;
|
||||
private System.Windows.Forms.Button button_stopBERtest;
|
||||
private System.Windows.Forms.Button button_startBERtest;
|
||||
private System.Windows.Forms.RichTextBox rtb;
|
||||
private System.Windows.Forms.TabPage tabPage2;
|
||||
private System.Windows.Forms.TabPage tabPage_image;
|
||||
private System.Windows.Forms.ComboBox comboBox_quality;
|
||||
private System.Windows.Forms.Button button_loadimage;
|
||||
private System.Windows.Forms.Button button_cancelimg;
|
||||
@@ -1500,7 +1502,7 @@
|
||||
private System.Windows.Forms.TabControl tabControl1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel ts_ip;
|
||||
private System.Windows.Forms.Panel groupBox1;
|
||||
private System.Windows.Forms.TabPage tabPage3;
|
||||
private System.Windows.Forms.TabPage tabPage_file;
|
||||
private System.Windows.Forms.RichTextBox rtb_TXfile;
|
||||
private System.Windows.Forms.Button bt_file_send;
|
||||
private System.Windows.Forms.Button bt_sendBinaryFile;
|
||||
@@ -1518,7 +1520,7 @@
|
||||
private System.Windows.Forms.CheckBox cb_loop;
|
||||
private System.Windows.Forms.Label label_nextimage;
|
||||
private System.Windows.Forms.Button button2;
|
||||
private System.Windows.Forms.TabPage tabPage5;
|
||||
private System.Windows.Forms.TabPage tabPage_setup;
|
||||
private System.Windows.Forms.TextBox tb_callsign;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.CheckBox cb_stampcall;
|
||||
@@ -1529,7 +1531,6 @@
|
||||
private System.Windows.Forms.ComboBox cb_audioCAP;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.ComboBox cb_audioPB;
|
||||
private System.Windows.Forms.TextBox textBox2;
|
||||
private System.Windows.Forms.GroupBox groupBox4;
|
||||
private System.Windows.Forms.GroupBox groupBox3;
|
||||
private System.Windows.Forms.GroupBox groupBox2;
|
||||
@@ -1569,7 +1570,7 @@
|
||||
private System.Windows.Forms.ImageList imageList1;
|
||||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
private System.Windows.Forms.PictureBox pictureBox2;
|
||||
private System.Windows.Forms.TabPage tabPage4;
|
||||
private System.Windows.Forms.TabPage tabPage_about;
|
||||
private System.Windows.Forms.RichTextBox richTextBox1;
|
||||
private System.Windows.Forms.PictureBox pb_voiceCAPstatus;
|
||||
private System.Windows.Forms.PictureBox pb_voicePBstatus;
|
||||
@@ -1584,6 +1585,7 @@
|
||||
private System.Windows.Forms.Label lb_rxsignal;
|
||||
private System.Windows.Forms.Label lb_rxsync;
|
||||
private System.Windows.Forms.PictureBox pb_rxsync;
|
||||
private System.Windows.Forms.ComboBox cb_language;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+427
-112
@@ -54,10 +54,10 @@ namespace oscardata
|
||||
InitializeComponent();
|
||||
|
||||
// needed for ARM mono, which cannot load a picbox directly from file
|
||||
var bmp = new Bitmap(Resources.image);
|
||||
var bmp = new Bitmap(Resources.hintergrundxcf);
|
||||
pictureBox_rximage.BackgroundImage = bmp;
|
||||
|
||||
bmp = new Bitmap(Resources.image1);
|
||||
bmp = new Bitmap(Resources.hintergrundxcf);
|
||||
pictureBox_tximage.BackgroundImage = bmp;
|
||||
|
||||
// if this program was started from another loacation
|
||||
@@ -79,7 +79,7 @@ namespace oscardata
|
||||
OperatingSystem osversion = System.Environment.OSVersion;
|
||||
statics.OSversion = osversion.Platform.ToString();
|
||||
if (osversion.VersionString.Contains("indow"))
|
||||
statics.ostype = 0;
|
||||
statics.ostype = 0; // Win$
|
||||
else
|
||||
statics.ostype = 1; // Linux
|
||||
|
||||
@@ -91,6 +91,7 @@ namespace oscardata
|
||||
statics.jpg_tempfilename = statics.addTmpPath(statics.jpg_tempfilename);
|
||||
|
||||
load_Setup();
|
||||
cb_language_SelectedIndexChanged(null, null);
|
||||
|
||||
if (cb_autostart.Checked)
|
||||
{
|
||||
@@ -101,11 +102,10 @@ namespace oscardata
|
||||
checkBox_small_CheckedChanged(null, null);
|
||||
|
||||
// init speed
|
||||
comboBox1_SelectedIndexChanged(null,null);
|
||||
comboBox1_SelectedIndexChanged(null, null);
|
||||
|
||||
// create Udp Communication ports and init UDP system
|
||||
Udp.InitUdp();
|
||||
search_modem();
|
||||
ArraySend.ArraySendInit();
|
||||
|
||||
// enable processing
|
||||
@@ -176,7 +176,7 @@ namespace oscardata
|
||||
// after an image was finished, wait before starting the new one
|
||||
// this helps cleaning any buffer
|
||||
int spacetime = 20000; // ms
|
||||
label_nextimage.Text = "next image in " + ((spacetime / timer_udpTX.Interval - loopdelay) / 10).ToString() + " s";
|
||||
label_nextimage.Text = langstr[0] + ((spacetime / timer_udpTX.Interval - loopdelay) / 10).ToString() + " s";
|
||||
if (++loopdelay > (spacetime / timer_udpTX.Interval))
|
||||
{
|
||||
// start sending a new picture
|
||||
@@ -186,7 +186,7 @@ namespace oscardata
|
||||
else
|
||||
{
|
||||
loopdelay = 0;
|
||||
label_nextimage.Text = "transmitting";
|
||||
label_nextimage.Text = langstr[1];
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -289,15 +289,15 @@ namespace oscardata
|
||||
|
||||
if (last_initAudioStatus != statics.initAudioStatus)
|
||||
{
|
||||
if ((statics.initAudioStatus & 1) == 1)
|
||||
pb_audioPBstatus.BackgroundImage = Properties.Resources.fail;
|
||||
else
|
||||
if ((statics.initAudioStatus & 1) == 1)
|
||||
pb_audioPBstatus.BackgroundImage = Properties.Resources.ok;
|
||||
else
|
||||
pb_audioPBstatus.BackgroundImage = Properties.Resources.fail;
|
||||
|
||||
if ((statics.initAudioStatus & 2) == 2)
|
||||
pb_audioCAPstatus.BackgroundImage = Properties.Resources.fail;
|
||||
else
|
||||
if ((statics.initAudioStatus & 2) == 2)
|
||||
pb_audioCAPstatus.BackgroundImage = Properties.Resources.ok;
|
||||
else
|
||||
pb_audioCAPstatus.BackgroundImage = Properties.Resources.fail;
|
||||
|
||||
last_initAudioStatus = statics.initAudioStatus;
|
||||
}
|
||||
@@ -305,14 +305,14 @@ namespace oscardata
|
||||
if (last_initVoiceStatus != statics.initVoiceStatus)
|
||||
{
|
||||
if ((statics.initVoiceStatus & 1) == 1)
|
||||
pb_voicePBstatus.BackgroundImage = Properties.Resources.fail;
|
||||
else
|
||||
pb_voicePBstatus.BackgroundImage = Properties.Resources.ok;
|
||||
else
|
||||
pb_voicePBstatus.BackgroundImage = Properties.Resources.fail;
|
||||
|
||||
if ((statics.initVoiceStatus & 2) == 2)
|
||||
pb_voiceCAPstatus.BackgroundImage = Properties.Resources.fail;
|
||||
else
|
||||
pb_voiceCAPstatus.BackgroundImage = Properties.Resources.ok;
|
||||
else
|
||||
pb_voiceCAPstatus.BackgroundImage = Properties.Resources.fail;
|
||||
|
||||
last_initVoiceStatus = statics.initVoiceStatus;
|
||||
}
|
||||
@@ -359,39 +359,44 @@ namespace oscardata
|
||||
|
||||
if (cb_autostart.Checked)
|
||||
{
|
||||
// tell hsmodem to terminate itself
|
||||
Byte[] txdata = new byte[1];
|
||||
txdata[0] = (Byte)statics.terminate;
|
||||
Udp.UdpSendCtrl(txdata);
|
||||
|
||||
Thread.Sleep(250);
|
||||
|
||||
if (statics.ostype == 0)
|
||||
{
|
||||
int to = 0;
|
||||
while(statics.isProcRunning("hsmodem.exe"))
|
||||
{
|
||||
Thread.Sleep(250);
|
||||
// tell hsmodem to terminate itself
|
||||
Udp.UdpSendCtrl(txdata);
|
||||
if (++to >= 10) break; // give up after 2,5s
|
||||
}
|
||||
|
||||
if (to >= 10)
|
||||
statics.killall("hsmodem.exe");
|
||||
}
|
||||
else
|
||||
{
|
||||
Thread.Sleep(250);
|
||||
statics.killall("hsmodem");
|
||||
}
|
||||
|
||||
killLocalModem();
|
||||
}
|
||||
// exit the threads
|
||||
statics.running = false;
|
||||
Udp.Close();
|
||||
}
|
||||
|
||||
void killLocalModem()
|
||||
{
|
||||
// tell hsmodem to terminate itself
|
||||
Byte[] txdata = new byte[1];
|
||||
txdata[0] = (Byte)statics.terminate;
|
||||
Udp.UdpSendCtrl(txdata);
|
||||
|
||||
Thread.Sleep(250);
|
||||
|
||||
// if that did not work, kill it directly
|
||||
if (statics.ostype == 0)
|
||||
{
|
||||
int to = 0;
|
||||
while (statics.isProcRunning("hsmodem.exe"))
|
||||
{
|
||||
Thread.Sleep(250);
|
||||
// tell hsmodem to terminate itself
|
||||
Udp.UdpSendCtrl(txdata);
|
||||
if (++to >= 10) break; // give up after 2,5s
|
||||
}
|
||||
|
||||
if (to >= 10)
|
||||
statics.killall("hsmodem.exe");
|
||||
}
|
||||
else
|
||||
{
|
||||
Thread.Sleep(250);
|
||||
statics.killall("hsmodem");
|
||||
}
|
||||
}
|
||||
|
||||
// RX timer
|
||||
int rxstat = 0;
|
||||
int speed;
|
||||
@@ -428,7 +433,7 @@ namespace oscardata
|
||||
// handle file receive
|
||||
if (rxtype == statics.Image)
|
||||
{
|
||||
if (recfile.receive(rxd))
|
||||
if (recfile.receive(rxd) == 1)
|
||||
{
|
||||
if (recfile.filename != null && recfile.filename.Length > 0 && minfo != statics.FirstFrame)
|
||||
{
|
||||
@@ -451,17 +456,21 @@ namespace oscardata
|
||||
|
||||
if (rxtype == statics.AsciiFile)
|
||||
{
|
||||
if(recfile.receive(rxd))
|
||||
int fret = recfile.receive(rxd);
|
||||
if (fret == 1)
|
||||
{
|
||||
// ASCII file received, show in window
|
||||
String serg = File.ReadAllText(recfile.filename);
|
||||
printText(rtb_RXfile, serg);
|
||||
}
|
||||
if (fret == -5)
|
||||
printBadBlocks();
|
||||
}
|
||||
|
||||
if (rxtype == statics.HTMLFile)
|
||||
{
|
||||
if (recfile.receive(rxd))
|
||||
int fret = recfile.receive(rxd);
|
||||
if (fret == 1)
|
||||
{
|
||||
// HTML file received, show in window
|
||||
String serg = File.ReadAllText(recfile.filename);
|
||||
@@ -469,24 +478,36 @@ namespace oscardata
|
||||
// and show in browser
|
||||
OpenUrl(recfile.filename);
|
||||
}
|
||||
if (fret == -5)
|
||||
printBadBlocks();
|
||||
}
|
||||
|
||||
if (rxtype == statics.BinaryFile)
|
||||
{
|
||||
if (recfile.receive(rxd))
|
||||
int fret = recfile.receive(rxd);
|
||||
if (fret == 1)
|
||||
{
|
||||
// Binary file received, show statistics in window
|
||||
printText(rtb_RXfile, "binary file received\r\n");
|
||||
printText(rtb_RXfile, "--------------------\r\n\r\n");
|
||||
printText(rtb_RXfile, "transmission time : " + ((int)recfile.runtime.TotalSeconds).ToString() + " seconds" + "\r\n\r\n");
|
||||
printText(rtb_RXfile, "transmission speed: " + ((int)(recfile.filesize * 8 / recfile.runtime.TotalSeconds)).ToString() + " bit/s" + "\r\n\r\n");
|
||||
printText(rtb_RXfile, "file size : " + recfile.filesize + " byte\r\n\r\n");
|
||||
printText(rtb_RXfile, "file name : " + recfile.filename + "\r\n\r\n");
|
||||
if(recfile.filename.Length <= 1)
|
||||
try
|
||||
{
|
||||
printText(rtb_RXfile, "file status : not complete, retransmit\r\n\r\n");
|
||||
printText(rtb_RXfile, langstr[2]);
|
||||
printText(rtb_RXfile, "--------------------\r\n\r\n");
|
||||
printText(rtb_RXfile, langstr[3] + ((int)recfile.runtime.TotalSeconds).ToString() + " seconds" + "\r\n\r\n");
|
||||
printText(rtb_RXfile, langstr[4] + ((int)(recfile.filesize * 8 / recfile.runtime.TotalSeconds)).ToString() + " bit/s" + "\r\n\r\n");
|
||||
printText(rtb_RXfile, langstr[5] + recfile.filesize + " byte\r\n\r\n");
|
||||
printText(rtb_RXfile, langstr[6] + recfile.filename + "\r\n\r\n");
|
||||
if (recfile.filename.Length <= 1)
|
||||
{
|
||||
printText(rtb_RXfile, langstr[7]);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
printText(rtb_RXfile, "RX error\r\n");
|
||||
}
|
||||
}
|
||||
if (fret == -5)
|
||||
printBadBlocks();
|
||||
}
|
||||
|
||||
// ===== BER Test ================================================
|
||||
@@ -499,6 +520,26 @@ namespace oscardata
|
||||
}
|
||||
}
|
||||
|
||||
void printBadBlocks()
|
||||
{
|
||||
rtb_RXfile.Text = "";
|
||||
printText(rtb_RXfile, langstr[2]);
|
||||
printText(rtb_RXfile, "--------------------\r\n\r\n");
|
||||
printText(rtb_RXfile, langstr[31] + "\r\n\r\n");
|
||||
|
||||
int[] d = new int[2];
|
||||
recfile.oldblockinfo(d);
|
||||
int failed = d[0] - d[1];
|
||||
|
||||
String s = "\n" + langstr[25] +
|
||||
"-------------------\n" +
|
||||
"total : " + (d[0]+1) + "\n" +
|
||||
langstr[26] + (d[1]+1) + "\n" +
|
||||
langstr[27] + failed + "\n";
|
||||
printText(rtb_RXfile, s + "\r\n\r\n");
|
||||
printText(rtb_RXfile, langstr[32] + ": " + recfile.missingBlockString());
|
||||
}
|
||||
|
||||
private void OpenUrl(string url)
|
||||
{
|
||||
try
|
||||
@@ -595,12 +636,12 @@ namespace oscardata
|
||||
}
|
||||
|
||||
// Title
|
||||
e.Graphics.DrawString("Tuning Window", fnt, Brushes.Black, GetFFTPos(110, 3000));
|
||||
e.Graphics.DrawString(langstr[8], fnt, Brushes.Black, GetFFTPos(110, 3000));
|
||||
e.Graphics.DrawString(miny.ToString() + " Hz", smallfnt, Brushes.Black, GetFFTPos(5, 2800));
|
||||
e.Graphics.DrawString("1500 Hz", smallfnt, Brushes.Black, GetFFTPos(138, 680));
|
||||
e.Graphics.DrawString(maxy.ToString() + " Hz", smallfnt, Brushes.Black, GetFFTPos(270, 2800));
|
||||
|
||||
e.Graphics.DrawString("min Level", smallfnt, Brushes.Black, GetFFTPos(290, 1000));
|
||||
e.Graphics.DrawString(langstr[9], smallfnt, Brushes.Black, GetFFTPos(290, 1000));
|
||||
e.Graphics.DrawString("max", smallfnt, Brushes.Black, GetFFTPos(290, 2450));
|
||||
|
||||
while (true)
|
||||
@@ -788,9 +829,9 @@ namespace oscardata
|
||||
void ShowTXstatus()
|
||||
{
|
||||
if(txcommand == statics.Image)
|
||||
label_tximage.Text = "TX image: " + TXRealFilename + ". Sent: " + (ArraySend.txpos / 1000).ToString() + " of " + (TXRealFileSize / 1000).ToString() + " kB";
|
||||
label_tximage.Text = langstr[10] + TXRealFilename + langstr[11] + (ArraySend.txpos / 1000).ToString() + langstr[30] + (TXRealFileSize / 1000).ToString() + " kB";
|
||||
else
|
||||
label_txfile.Text = "TX file: " + TXRealFilename + ". Sent: " + (ArraySend.txpos / 1000).ToString() + " of " + (TXRealFileSize / 1000).ToString() + " kB";
|
||||
label_txfile.Text = langstr[12] + TXRealFilename + langstr[11] + (ArraySend.txpos / 1000).ToString() + langstr[30] + (TXRealFileSize / 1000).ToString() + " kB";
|
||||
}
|
||||
|
||||
// in loop mode only: send the next picture in current image folder
|
||||
@@ -832,7 +873,7 @@ namespace oscardata
|
||||
private void button_loadimage_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog open = new OpenFileDialog();
|
||||
open.Filter = "Image Files(*.jpg; *.jpeg; *.png; *.gif; *.bmp)|*.jpg; *.jpeg; *.png; *.gif; *.bmp";
|
||||
open.Filter = langstr[13];
|
||||
if (open.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
prepareImage(open.FileName);
|
||||
@@ -884,9 +925,9 @@ namespace oscardata
|
||||
|
||||
// show RX status for this frame
|
||||
if (rxstat == 4)
|
||||
line += " frame lost";
|
||||
line += langstr[14];
|
||||
else
|
||||
line += " sequence OK";
|
||||
line += langstr[29];
|
||||
|
||||
int bits = rxframecounter * 258 * 8;
|
||||
int bytes = rxframecounter * 258;
|
||||
@@ -896,23 +937,23 @@ namespace oscardata
|
||||
if (bits > 1000)
|
||||
{
|
||||
bits /= 1000;
|
||||
sbit = "kb";
|
||||
sbit = "kbit";
|
||||
}
|
||||
if (bits > 1000)
|
||||
{
|
||||
bits /= 1000;
|
||||
sbit = "Mb";
|
||||
sbit = "Mbit";
|
||||
}
|
||||
|
||||
if (bytes > 1000)
|
||||
{
|
||||
bytes /= 1000;
|
||||
sbyt = "kB";
|
||||
sbyt = "kByte";
|
||||
}
|
||||
if (bytes > 1000)
|
||||
{
|
||||
bytes /= 1000;
|
||||
sbyt = "MB";
|
||||
sbyt = "MByte";
|
||||
}
|
||||
|
||||
line += " " + bits.ToString() + " " + sbit + " " + bytes.ToString() + " " + sbyt;
|
||||
@@ -951,12 +992,12 @@ namespace oscardata
|
||||
if (ArraySend.rxFilename != null && ArraySend.rxFilename.Length > 0)
|
||||
{
|
||||
s += ArraySend.rxFilename + " ";
|
||||
s += recfile.rxbytes / 1000 + " of " + ArraySend.FileSize / 1000 + " kB ";
|
||||
s += recfile.rxbytes / 1000 + langstr[30] + ArraySend.FileSize / 1000 + " kB ";
|
||||
s += Math.Truncate(recfile.runtime.TotalSeconds) + " s, ";
|
||||
s += blockres[1] + " of " + blockres[0] + " blocks OK";
|
||||
s += blockres[1] + langstr[30] + blockres[0] + langstr[15];
|
||||
}
|
||||
else
|
||||
s += "wait for RX";
|
||||
s += langstr[16];
|
||||
|
||||
if (rxtype == statics.Image)
|
||||
label_rximage.Text = s;
|
||||
@@ -965,24 +1006,24 @@ namespace oscardata
|
||||
label_rxfile.Text = s;
|
||||
|
||||
// show speed in status line at the left side
|
||||
toolStripStatusLabel.Text = "Line Speed: " + speed.ToString() + " bps";
|
||||
toolStripStatusLabel.Text = langstr[17] + speed.ToString() + " bps";
|
||||
|
||||
if (missBlocks < 0) missBlocks = 0;
|
||||
if (missingBlocks < 0) missingBlocks = 0;
|
||||
|
||||
// show RX status in the status line
|
||||
if (rxtype == statics.BERtest)
|
||||
RXstatus.Text = "RXed: " + rxbytecounter + " Byte. Missing blocks: " + missBlocks;
|
||||
RXstatus.Text = "RX: " + rxbytecounter + langstr[18] + missBlocks;
|
||||
else
|
||||
{
|
||||
if(fsz > 0)
|
||||
RXstatus.Text = "RXed: " + fsz + " Byte. Missing blocks: " + missingBlocks;
|
||||
RXstatus.Text = "RX: " + fsz + langstr[18] + missingBlocks;
|
||||
else
|
||||
RXstatus.Text = "RXed: " + rxbytecounter + " Byte. Missing blocks: " + missingBlocks;
|
||||
RXstatus.Text = "RX: " + rxbytecounter + langstr[18] + missingBlocks;
|
||||
}
|
||||
|
||||
if(speed_bps > 0)
|
||||
RXstatus.Text += " Net Speed:" + speed_bps + " bps";
|
||||
RXstatus.Text += langstr[19] + speed_bps + " bps";
|
||||
}
|
||||
|
||||
private void button_cancelimg_Click(object sender, EventArgs e)
|
||||
@@ -1079,23 +1120,7 @@ namespace oscardata
|
||||
}
|
||||
return ip;
|
||||
}
|
||||
|
||||
Byte getPBaudioDevice()
|
||||
{
|
||||
String s = cb_audioPB.Text;
|
||||
Byte x = (Byte)cb_audioPB.Items.IndexOf(s);
|
||||
//if (s.ToUpper() == "DEFAULT") x = 255;
|
||||
return x;
|
||||
}
|
||||
|
||||
Byte getCAPaudioDevice()
|
||||
{
|
||||
String s = cb_audioCAP.Text;
|
||||
Byte x = (Byte)cb_audioCAP.Items.IndexOf(s);
|
||||
//if (s.ToUpper() == "DEFAULT") x = 255;
|
||||
return x;
|
||||
}
|
||||
|
||||
|
||||
Byte getLSaudioDevice()
|
||||
{
|
||||
String s = cb_loudspeaker.Text;
|
||||
@@ -1120,19 +1145,52 @@ namespace oscardata
|
||||
* if a modem receives this message, it returns with an
|
||||
* UDP message to UdpBCport containing a String with it's IP address
|
||||
* this message also contains the selected Audio Devices
|
||||
*
|
||||
* Format:
|
||||
* Byte:
|
||||
* 0 ... 0x3c
|
||||
* 1 ... PB volume
|
||||
* 2 ... CAP volume
|
||||
* 3 ... announcement on/off, duration
|
||||
* 4 ... DV loudspeaker volume
|
||||
* 5 ... DV mic volume
|
||||
* 6..9 ... unused
|
||||
* 10 .. 109 ... PB device name
|
||||
* 110 .. 209 ... CAP device name
|
||||
*
|
||||
*/
|
||||
|
||||
private void search_modem()
|
||||
{
|
||||
Byte[] txb = new byte[8];
|
||||
Byte[] txb = new byte[210];
|
||||
txb[0] = 0x3c; // ID of this message
|
||||
txb[1] = getPBaudioDevice();
|
||||
txb[2] = getCAPaudioDevice();
|
||||
txb[3] = (Byte)tb_PBvol.Value;
|
||||
txb[4] = (Byte)tb_CAPvol.Value;
|
||||
txb[5] = (Byte)cb_announcement.Items.IndexOf(cb_announcement.Text);
|
||||
txb[6] = (Byte)tb_loadspeaker.Value;
|
||||
txb[7] = (Byte)tb_mic.Value;
|
||||
txb[1] = (Byte)tb_PBvol.Value;
|
||||
txb[2] = (Byte)tb_CAPvol.Value;
|
||||
txb[3] = (Byte)cb_announcement.Items.IndexOf(cb_announcement.Text);
|
||||
txb[4] = (Byte)tb_loadspeaker.Value;
|
||||
txb[5] = (Byte)tb_mic.Value;
|
||||
txb[6] = (Byte)0; // unused
|
||||
txb[7] = (Byte)0; // unused
|
||||
txb[8] = (Byte)0; // unused
|
||||
txb[9] = (Byte)0; // unused
|
||||
|
||||
Byte[] bpb = statics.StringToByteArrayUtf8(cb_audioPB.Text);
|
||||
Byte[] bcap = statics.StringToByteArrayUtf8(cb_audioCAP.Text);
|
||||
//Byte[] bpb = statics.StringToByteArray(cb_audioPB.Text);
|
||||
//Byte[] bcap = statics.StringToByteArray(cb_audioCAP.Text);
|
||||
|
||||
for (int i=0; i<100; i++)
|
||||
{
|
||||
if (i >= bpb.Length)
|
||||
txb[i + 10] = 0;
|
||||
else
|
||||
txb[i+10] = bpb[i];
|
||||
|
||||
if (i >= bcap.Length)
|
||||
txb[i + 110] = 0;
|
||||
else
|
||||
txb[i + 110] = bcap[i];
|
||||
}
|
||||
|
||||
Udp.UdpBCsend(txb, GetMyBroadcastIP(), statics.UdpBCport_AppToModem);
|
||||
|
||||
@@ -1175,7 +1233,7 @@ namespace oscardata
|
||||
TXfilename = open.FileName;
|
||||
TXRealFilename = open.SafeFileName;
|
||||
if (txcommand == statics.BinaryFile)
|
||||
rtb_TXfile.Text = "Binary file " + TXfilename + " loaded";
|
||||
rtb_TXfile.Text = langstr[20] + TXfilename + langstr[21];
|
||||
else
|
||||
rtb_TXfile.Text = File.ReadAllText(TXfilename);
|
||||
|
||||
@@ -1336,6 +1394,7 @@ namespace oscardata
|
||||
rb_codec2.Checked = (s != "1");
|
||||
}
|
||||
catch { }
|
||||
try { cb_language.Text = ReadString(sr); } catch { }
|
||||
}
|
||||
}
|
||||
catch
|
||||
@@ -1371,6 +1430,7 @@ namespace oscardata
|
||||
sw.WriteLine(tb_loadspeaker.Value.ToString());
|
||||
sw.WriteLine(tb_mic.Value.ToString());
|
||||
sw.WriteLine(rb_opus.Checked ? "1" : "0");
|
||||
sw.WriteLine(cb_language.Text);
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
@@ -1378,14 +1438,14 @@ namespace oscardata
|
||||
|
||||
private void bt_shutdown_Click(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult dr = MessageBox.Show("Do you want to shut down the Modem-Computer ?", "Shut Down Modem", MessageBoxButtons.YesNo);
|
||||
DialogResult dr = MessageBox.Show(langstr[23], langstr[22], MessageBoxButtons.YesNo);
|
||||
if (dr == DialogResult.Yes)
|
||||
{
|
||||
Byte[] txdata = new byte[1];
|
||||
txdata[0] = (Byte)statics.Modem_shutdown;
|
||||
Udp.UdpSendCtrl(txdata);
|
||||
|
||||
MessageBox.Show("Please wait abt. 1 minute before powering OFF the modem", "Shut Down Modem", MessageBoxButtons.OK);
|
||||
MessageBox.Show(langstr[24], langstr[22], MessageBoxButtons.OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1429,14 +1489,14 @@ namespace oscardata
|
||||
recfile.oldblockinfo(d);
|
||||
int failed = d[0] - d[1];
|
||||
|
||||
s = "Received Blocks\n" +
|
||||
s = langstr[25] +
|
||||
"---------------\n" +
|
||||
"total : " + d[0] + "\n" +
|
||||
"good : " + d[1] + "\n" +
|
||||
"failed: " + failed + "\n";
|
||||
langstr[26] + d[1] + "\n" +
|
||||
langstr[27] + failed + "\n";
|
||||
if(failed > 1)
|
||||
{
|
||||
s += "\nfile incomplete, ask for retransmission";
|
||||
s += langstr[28];
|
||||
}
|
||||
|
||||
Form2_showtext sf = new Form2_showtext("Block Info",s);
|
||||
@@ -1445,10 +1505,16 @@ namespace oscardata
|
||||
|
||||
void setVoiceAudio()
|
||||
{
|
||||
Byte[] txdata = new byte[5];
|
||||
/*
|
||||
* Format:
|
||||
* 0 ... statics.SetVoiceMode (25)
|
||||
* 1 ... voicemode
|
||||
* 2 ... codec
|
||||
* 3-102 ... LS device name
|
||||
* 103-202 ... MIC device name
|
||||
*/
|
||||
Byte[] txdata = new byte[203];
|
||||
txdata[0] = (Byte)statics.SetVoiceMode;
|
||||
txdata[1] = (Byte)getLSaudioDevice();
|
||||
txdata[2] = (Byte)getMICaudioDevice();
|
||||
Byte opmode = 0;
|
||||
// values see: hsmodem.h _VOICEMODES_
|
||||
if (cb_switchtoLS.Checked) opmode = 1;
|
||||
@@ -1457,11 +1523,30 @@ namespace oscardata
|
||||
if (cb_digitalVoice.Checked) opmode = 4;
|
||||
if (cb_digitalVoiceRXonly.Checked) opmode = 5;
|
||||
if(opmode == 0) pb_voice.BackgroundImage = null;
|
||||
txdata[3] = opmode;
|
||||
txdata[1] = opmode;
|
||||
Byte codec;
|
||||
if (rb_opus.Checked) codec = 0;
|
||||
else codec = 1;
|
||||
txdata[4] = codec;
|
||||
txdata[2] = codec;
|
||||
|
||||
Byte[] bpb = statics.StringToByteArrayUtf8(cb_loudspeaker.Text);
|
||||
Byte[] bcap = statics.StringToByteArrayUtf8(cb_mic.Text);
|
||||
//Byte[] bpb = statics.StringToByteArray(cb_loudspeaker.Text);
|
||||
//Byte[] bcap = statics.StringToByteArray(cb_mic.Text);
|
||||
|
||||
for (int i = 0; i < 100; i++)
|
||||
{
|
||||
if (i >= bpb.Length)
|
||||
txdata[i + 3] = 0;
|
||||
else
|
||||
txdata[i + 3] = bpb[i];
|
||||
|
||||
if (i >= bcap.Length)
|
||||
txdata[i + 103] = 0;
|
||||
else
|
||||
txdata[i + 103] = bcap[i];
|
||||
}
|
||||
|
||||
Udp.UdpSendCtrl(txdata);
|
||||
|
||||
if(opmode > 0)
|
||||
@@ -1553,5 +1638,235 @@ namespace oscardata
|
||||
{
|
||||
setMICvolume = tb_mic.Value;
|
||||
}
|
||||
|
||||
int language = 0;
|
||||
void set_language(int lang)
|
||||
{
|
||||
language = lang;
|
||||
|
||||
if (language == 0)
|
||||
{
|
||||
langstr = langstr_en;
|
||||
|
||||
tabPage_image.Text = "Image";
|
||||
label_nextimage.Text = "next image in ...";
|
||||
cb_loop.Text = "loop (send all images in folder)";
|
||||
bt_rximages.Text = " RX Images";
|
||||
button_loadimage.Text = " Load Image";
|
||||
label2.Text = "Quality:";
|
||||
button_cancelimg.Text = " Cancel";
|
||||
button_sendimage.Text = "Send";
|
||||
label_rximage.Text = "RX image";
|
||||
label_tximage.Text = "TX image";
|
||||
tabPage_file.Text = "File";
|
||||
button2.Text = "Cancel";
|
||||
bt_openrxfile.Text = "Open RX file folder";
|
||||
label_rxfile.Text = "RX File";
|
||||
label_txfile.Text = "TX File";
|
||||
bt_file_send.Text = "SEND";
|
||||
bt_sendBinaryFile.Text = "Load Binary File";
|
||||
bt_file_html.Text = "Load HTML File";
|
||||
bt_file_ascii.Text = " Load ASCII Text File";
|
||||
tabPage_audio.Text = "Voice Audio";
|
||||
groupBox7.Text = "Codec Selection";
|
||||
rb_codec2.Text = "CODEC-2 parametric audio codec. For QPSK. Audio rate: 3200 bps";
|
||||
rb_opus.Text = "OPUS rate adaptive codec. For 8APSK. Audio rate: 84% of data rate";
|
||||
groupBox6.Text = "Voice Audio Operating Mode";
|
||||
cb_digitalVoiceRXonly.Text = "Digital Voice RX: Receiver ---> Codec ---> Loudspeaker";
|
||||
cb_digitalVoice.Text = "Digital Voice RX+TX: Microphone ---> Codec ---> Transmitter | Receiver ---> Codec ---> Loudspeaker";
|
||||
cb_codecloop.Text = "Codec Loop: Microphone ---> Codec ---> Loudspeaker";
|
||||
cb_switchtoLS.Text = "Digital Monitor: Receiver ---> Loudspeaker";
|
||||
groupBox5.Text = "Loadspeaker / Microphone / Headset";
|
||||
label8.Text = "Volume:";
|
||||
label10.Text = "Loadspeaker/Headphone:";
|
||||
label11.Text = "Microphone:";
|
||||
groupBox4.Text = "Maintenance";
|
||||
cb_autostart.Text = "AUTO start/stop HSmodem";
|
||||
bt_shutdown.Text = "Shutdown Modem-SBC";
|
||||
tb_shutdown.Text = "before switching off the \r\nmodem SBC click here to \r\navoid defective SD-cards.\r\n";
|
||||
bt_resetmodem.Text = "Reset RX Modem";
|
||||
textBox3.Text = "only uncheck if modem runs on a separate PC";
|
||||
groupBox3.Text = "Transceiver Audio";
|
||||
label6.Text = "Volume:";
|
||||
label5.Text = "Volume:";
|
||||
label3.Text = "Audio Playback Device:";
|
||||
label4.Text = "Audio Record Device:";
|
||||
groupBox2.Text = "Personal Settings";
|
||||
cb_stampinfo.Text = "Insert Info into picture";
|
||||
textBox5.Text = "every";
|
||||
textBox4.Text = "transmissions";
|
||||
textBox1.Text = "send announcement before pic/file transfer";
|
||||
label1.Text = "Callsign:";
|
||||
cb_stampcall.Text = "Insert Callsign into picture";
|
||||
tabPage_about.Text = "About";
|
||||
label_speed.Text = "Speed [bit/s]:";
|
||||
label_fifo.Text = "TX Buffer:";
|
||||
bt_blockinfo.Text = "Block Info";
|
||||
label_capfifo.Text = "RX Buffer:";
|
||||
lb_rxsignal.Text = "RX Signal:";
|
||||
lb_rxsync.Text = "RX Sync:";
|
||||
|
||||
}
|
||||
|
||||
if (language == 1)
|
||||
{
|
||||
langstr = langstr_de;
|
||||
|
||||
tabPage_image.Text = "Bilder";
|
||||
tabPage_file.Text = "Datei";
|
||||
tabPage_audio.Text = "Sprache";
|
||||
tabPage_about.Text = "Info";
|
||||
label2.Text = "Qualität";
|
||||
button_loadimage.Text = "Lade Bild";
|
||||
button_sendimage.Text = "Senden";
|
||||
button_cancelimg.Text = " Abbruch";
|
||||
bt_rximages.Text = "RX Bilder";
|
||||
cb_loop.Text = "Endlosschleife: Alle Bilder im Verzeichnis senden";
|
||||
label_nextimage.Text = "nächstes Bild in ...";
|
||||
label_tximage.Text = "TX Bild";
|
||||
label_rximage.Text = "RX Bild";
|
||||
label_speed.Text = "Bitrate [bit/s]";
|
||||
label_fifo.Text = "TX Puffer";
|
||||
label_capfifo.Text = "RX Puffer";
|
||||
bt_file_ascii.Text = " Lade ASCII Textdatei";
|
||||
bt_file_html.Text = "Lade HTML Datei";
|
||||
bt_sendBinaryFile.Text = "Lade Binärdatei";
|
||||
bt_file_send.Text = "SENDEN";
|
||||
button2.Text = "Abbrechen";
|
||||
bt_openrxfile.Text = "Öffne RX Dateien";
|
||||
groupBox5.Text = "Lautsprecher / Mikrofon / Kopfhörer";
|
||||
label10.Text = "Lautsprecher/Kopfhörer";
|
||||
label11.Text = "Mikrofon";
|
||||
label9.Text = "Lautst.:";
|
||||
label8.Text = "Lautst.:";
|
||||
groupBox6.Text = "Sprache / Audio Betriebsart";
|
||||
cb_switchtoLS.Text = "Digital Monitor: Empfänger -> Lautsprecher";
|
||||
cb_voiceloop.Text = "intere Schleife: Mikrofon -> Lautsprecher";
|
||||
cb_codecloop.Text = "Codec Schleife: Mikrofon -> Codec -> Lautsprecher";
|
||||
cb_digitalVoiceRXonly.Text = "DV Empfang: Empfänger -> Codec -> Lautsprecher";
|
||||
cb_digitalVoice.Text = "DV Transceiver: Mikrofon -> Codec -> Sender | Empfänger -> Codec -> Lautsprecher";
|
||||
groupBox7.Text = "Codec Auswahl";
|
||||
rb_opus.Text = "OPUS adaptiver Codec. Für 8APSK. Audio-Datenrate 84% der Bitrate";
|
||||
rb_codec2.Text = "CODEC-2 parametrischer Audiocodec. Für QPSK. Audiorate: 3200 bit/s";
|
||||
groupBox2.Text = "Persönliche Einstellungen";
|
||||
label1.Text = "Rufzeichen";
|
||||
cb_stampcall.Text = "Füge Rufzeichen ins Bild ein";
|
||||
cb_stampinfo.Text = "Füge Infotext ins Bild ein";
|
||||
textBox1.Text = "sende Ansagetext vor Daten- oder Bildsendung";
|
||||
textBox5.Text = "alle";
|
||||
textBox4.Text = "Aussendungen";
|
||||
label3.Text = "Audio Wiedergabe";
|
||||
label4.Text = "Audio Eingang";
|
||||
label5.Text = "Lautst.:";
|
||||
label6.Text = "Lautst.:";
|
||||
groupBox4.Text = "Wartung";
|
||||
textBox3.Text = "Ausschalten wenn hsmodem auf separatem PC läuft";
|
||||
tb_shutdown.Text = "Vor dem Ausschalten eines SBC diesen hier herunterfahren";
|
||||
}
|
||||
}
|
||||
|
||||
private void cb_language_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if(cb_language.Text.Contains("Deutsch"))
|
||||
set_language(1);
|
||||
else
|
||||
set_language(0);
|
||||
}
|
||||
|
||||
String[] langstr;
|
||||
|
||||
String[] langstr_en = new String[]{
|
||||
"next image in ", //0
|
||||
"transmitting",
|
||||
"binary file received\r\n", //2
|
||||
"transmission time : ",
|
||||
"transmission speed: ", //4
|
||||
"file size : ",
|
||||
"file name : ", //6
|
||||
"file status : not complete, retransmit\r\n\r\n",
|
||||
"Tuning Window", //8
|
||||
"min Level",
|
||||
"TX image: ", // 10
|
||||
". Sent: ",
|
||||
"TX file: ", //12
|
||||
"Image Files(*.jpg; *.jpeg; *.png; *.gif; *.bmp)|*.jpg; *.jpeg; *.png; *.gif; *.bmp",
|
||||
" frame lost", //14
|
||||
" blocks OK",
|
||||
"wait for RX", //16
|
||||
"Line Speed: ",
|
||||
" Byte. Missing blocks: ", //18
|
||||
" Net Speed:",
|
||||
"Binary file ", //20
|
||||
" loaded",
|
||||
"Shut Down Modem", //22
|
||||
"Do you want to shut down the Modem-Computer ?",
|
||||
"Please wait abt. 1 minute before powering OFF the modem", //24
|
||||
"Received Blocks\n",
|
||||
"good : ", //26
|
||||
"failed: ",
|
||||
"\nfile incomplete, ask for retransmission", //28
|
||||
" sequence OK",
|
||||
" of ", //30
|
||||
"Bad blocks, retransmission required",
|
||||
"Bad blocks", //32
|
||||
};
|
||||
|
||||
String[] langstr_de = new String[]{
|
||||
"nächstes Bild in", //0
|
||||
"sende",
|
||||
"Binärdatei empfangen\r\n", //2
|
||||
"Sendezeit : ",
|
||||
"Übertragungsgeschw: ", //4
|
||||
"Dateigröße : ",
|
||||
"Dateiname : ", //6
|
||||
"Dateistatus : nicht komplett \r\n\r\n",
|
||||
"Tuning Fenster", //8
|
||||
"min Pegel",
|
||||
"TX Bild: ", // 10
|
||||
".Gesendet: ",
|
||||
"TX Datei: ", //12
|
||||
"Bilddateien(*.jpg; *.jpeg; *.png; *.gif; *.bmp)|*.jpg; *.jpeg; *.png; *.gif; *.bmp",
|
||||
" Frame verloren", //14
|
||||
" Blöcken OK",
|
||||
"warte auf RX", //16
|
||||
"Datenrate: ",
|
||||
" Byte. Fehlende Blöcke: ", //18
|
||||
" Netto-Rate:",
|
||||
"Binärdatei ", //20
|
||||
" geladen",
|
||||
"Modem herunterfahren", //22
|
||||
"Wollen sie den Modem Computer herunterfahren?",
|
||||
"Bitte warten sie 1 Minuten vor dem Ausschalten des Modem Computers", //24
|
||||
"empfangene Blöcke\n",
|
||||
"gut : ", //26
|
||||
"defekt: ",
|
||||
"\nDatei nicht komplett, bitte neu Senden ", //28
|
||||
" Sequenz OK",
|
||||
" von ", //30
|
||||
"defekte Blöcke, Datei muss nochmal empfangen werden",
|
||||
"defekte Blöcke", //32
|
||||
};
|
||||
|
||||
private void cb_autostart_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (cb_autostart.Checked == false)
|
||||
{
|
||||
if (modemrunning)
|
||||
{
|
||||
statics.StartHSmodem(false);
|
||||
Console.WriteLine("Kill Modem");
|
||||
modemrunning = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (modemrunning == false)
|
||||
{
|
||||
modemrunning = statics.StartHSmodem(true);
|
||||
Console.WriteLine("Start Modem");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABw
|
||||
FwAAAk1TRnQBSQFMAgEBDQEAAdgBAAHYAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
FwAAAk1TRnQBSQFMAgEBDQEAATgBAQE4AQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
AwABQAMAAUADAAEBAQABCAYAARAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
|
||||
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
|
||||
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
|
||||
@@ -241,17 +241,14 @@
|
||||
</value>
|
||||
</data>
|
||||
<data name="richTextBox1.Text" xml:space="preserve">
|
||||
<value>QO-100 Multimedia High Speed Modem for Linux and Windows
|
||||
<value>QO-100 Multimedia High Speed Modem (Linux & Windows)
|
||||
|
||||
(c) by DJ0ABR, Kurt Moraw, Germany https://dj0abr.de/
|
||||
for Amsat-DL: https://amsat-dl.org/
|
||||
(c) DJ0ABR, Kurt Moraw, Germany https://dj0abr.de/
|
||||
Amsat-DL: https://amsat-dl.org/
|
||||
Open Source: https://github.com/dj0abr/SSB_HighSpeed_Modem
|
||||
|
||||
3rd Party, Credits and Licensing:
|
||||
|
||||
BASS audio library:
|
||||
www.un4seen.com: BASS is free for non-commercial use
|
||||
|
||||
DSP Library liquid-DSP:
|
||||
https://liquidsdr.org/
|
||||
MIT License
|
||||
@@ -266,6 +263,14 @@ GNU General Public License
|
||||
FreeDV: https://github.com/drowe67/codec2
|
||||
GNU Lesser General Public License v2.1
|
||||
|
||||
Sound Library: libsoundio
|
||||
https://github.com/andrewrk/libsoundio
|
||||
MIT License
|
||||
|
||||
Reed Solomon error correction:
|
||||
https://www.schifra.com/
|
||||
License: Schifra User Group 1, GPL V2
|
||||
|
||||
Image from ICON Archive: https://www.iconarchive.com/
|
||||
Artist: Oxygen Team
|
||||
Iconset: Oxygen Icons (883 icons)
|
||||
@@ -273,7 +278,7 @@ License: GNU Lesser General Public License
|
||||
|
||||
Artist: Sallee Design (Available for custom work)
|
||||
Iconset: Music Icons (29 icons)
|
||||
License: CC Attribution 4.0
|
||||
License: CC Attribution 4.0 (unchanged, https://creativecommons.org/licenses/by/4.0/)
|
||||
|
||||
Testing & Manual:
|
||||
DD1US: https://www.dd1us.de/
|
||||
|
||||
+10
-20
@@ -160,6 +160,16 @@ namespace oscardata.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap hintergrundxcf {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("hintergrundxcf", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
@@ -170,26 +180,6 @@ namespace oscardata.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap image {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("image", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap image1 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("image1", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
|
||||
@@ -121,12 +121,6 @@
|
||||
<data name="Satellite_icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>Satellite-icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="image" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>image.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="image1" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>image1.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="binary" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>binary.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
@@ -208,4 +202,7 @@
|
||||
<data name="redmarker" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>redmarker.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="hintergrundxcf" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>hintergrundxcf.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 120 KiB |
Binary file not shown.
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
|
||||
</configuration>
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
|
||||
</configuration>
|
||||
Binary file not shown.
@@ -149,6 +149,12 @@ namespace oscardata
|
||||
return enc.GetBytes(str);
|
||||
}
|
||||
|
||||
public static byte[] StringToByteArrayUtf8(string str)
|
||||
{
|
||||
System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
|
||||
return enc.GetBytes(str);
|
||||
}
|
||||
|
||||
public static string ByteArrayToString(byte[] arr, int offset = 0)
|
||||
{
|
||||
Byte[] ba = new byte[arr.Length];
|
||||
@@ -161,6 +167,23 @@ namespace oscardata
|
||||
Array.Copy(ba, ban, dst);
|
||||
|
||||
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
|
||||
|
||||
return enc.GetString(ban);
|
||||
}
|
||||
|
||||
public static string ByteArrayToStringUtf8(byte[] arr, int offset = 0)
|
||||
{
|
||||
Byte[] ba = new byte[arr.Length];
|
||||
int dst = 0;
|
||||
for (int i = offset; i < arr.Length; i++)
|
||||
{
|
||||
if (arr[i] != 0) ba[dst++] = arr[i];
|
||||
}
|
||||
Byte[] ban = new byte[dst];
|
||||
Array.Copy(ba, ban, dst);
|
||||
|
||||
System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
|
||||
|
||||
return enc.GetString(ban);
|
||||
}
|
||||
|
||||
@@ -315,36 +338,40 @@ namespace oscardata
|
||||
}
|
||||
|
||||
static Process cmd = null;
|
||||
public static bool StartHSmodem()
|
||||
public static bool StartHSmodem(bool start = true)
|
||||
{
|
||||
// kill old processes already running
|
||||
killall("hsmodem");
|
||||
killall("hsmodem.exe");
|
||||
// starte Prozesse
|
||||
try
|
||||
{
|
||||
if (ostype == 0)
|
||||
{
|
||||
if (!File.Exists("hsmodem.exe")) return false;
|
||||
cmd = new Process();
|
||||
cmd.StartInfo.FileName = "hsmodem.exe";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!File.Exists("hsmodem")) return false;
|
||||
cmd = new Process();
|
||||
cmd.StartInfo.FileName = "hsmodem";
|
||||
}
|
||||
|
||||
if (cmd != null)
|
||||
if (start == true)
|
||||
{
|
||||
// starte Prozesse
|
||||
try
|
||||
{
|
||||
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Normal;// .Hidden;
|
||||
cmd.StartInfo.Arguments = "";
|
||||
cmd.Start();
|
||||
Console.WriteLine("hsmodem started");
|
||||
if (ostype == 0)
|
||||
{
|
||||
if (!File.Exists("hsmodem.exe")) return false;
|
||||
cmd = new Process();
|
||||
cmd.StartInfo.FileName = "hsmodem.exe";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!File.Exists("hsmodem")) return false;
|
||||
cmd = new Process();
|
||||
cmd.StartInfo.FileName = "hsmodem";
|
||||
}
|
||||
|
||||
if (cmd != null)
|
||||
{
|
||||
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Normal;// .Hidden;
|
||||
cmd.StartInfo.Arguments = "";
|
||||
cmd.Start();
|
||||
Console.WriteLine("hsmodem started");
|
||||
}
|
||||
}
|
||||
catch { return false; }
|
||||
}
|
||||
catch { return false; }
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -139,6 +139,7 @@
|
||||
<None Include="Properties\texttx.png" />
|
||||
<None Include="Properties\greenmarker.png" />
|
||||
<None Include="Properties\redmarker.png" />
|
||||
<None Include="Properties\hintergrundxcf.png" />
|
||||
<Content Include="Satellite-icon.ico" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
|
||||
@@ -81,7 +81,15 @@ namespace oscardata
|
||||
bool autoRXnum = false;
|
||||
String blockFilename = "";
|
||||
|
||||
public bool receive(Byte []rxdp)
|
||||
// 1 ... file OK
|
||||
// 0 ... continue receiving
|
||||
// -1 ... invalid header
|
||||
// -2 ... first frame invalid
|
||||
// -3 ... invalid data in cont frame
|
||||
// -4 ... invalid data in last frame
|
||||
// -5 ... file ends, but bad blocks
|
||||
|
||||
public int receive(Byte []rxdp)
|
||||
{
|
||||
// read frame header
|
||||
if(!getFrameHeader(rxdp))
|
||||
@@ -89,17 +97,18 @@ namespace oscardata
|
||||
// invalid situation
|
||||
blockidx = 0;
|
||||
receiving = false;
|
||||
return false;
|
||||
return -1;
|
||||
}
|
||||
|
||||
// receive first frame of a transmission
|
||||
if (minfo == statics.FirstFrame || minfo == statics.SingleFrame)
|
||||
{
|
||||
receiving = false;
|
||||
starttime = DateTime.UtcNow;
|
||||
rxbytes = 0;
|
||||
filesize = 0;
|
||||
filename = "";
|
||||
if (!StartFileRX()) return false; // invalid file
|
||||
if (!StartFileRX()) return -2; // invalid file
|
||||
}
|
||||
|
||||
if (receiving && minfo != statics.FirstFrame)
|
||||
@@ -114,7 +123,7 @@ namespace oscardata
|
||||
// invalid situation
|
||||
blockidx = 0;
|
||||
receiving = false;
|
||||
return false;
|
||||
return -3;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,12 +137,17 @@ namespace oscardata
|
||||
// invalid situation
|
||||
blockidx = 0;
|
||||
receiving = false;
|
||||
return false;
|
||||
return -4;
|
||||
}
|
||||
|
||||
// the last block was received ok
|
||||
// save file if all blocks valid
|
||||
SaveFile();
|
||||
bool fileisok = SaveFile();
|
||||
if(fileisok == false)
|
||||
{
|
||||
// file not complete, do not to unzip
|
||||
return -5;
|
||||
}
|
||||
blockidx = 0;
|
||||
receiving = false;
|
||||
|
||||
@@ -142,7 +156,7 @@ namespace oscardata
|
||||
// these file type must be unzipped
|
||||
handleZIPfiles();
|
||||
receiving = false;
|
||||
return true;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,10 +164,10 @@ namespace oscardata
|
||||
{
|
||||
// build bitmap from received data
|
||||
pbmp = buildBitmap();
|
||||
return true;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool getFrameHeader(Byte[] rxd)
|
||||
@@ -279,6 +293,26 @@ namespace oscardata
|
||||
result[1] = ok;
|
||||
}
|
||||
|
||||
public String missingBlockString()
|
||||
{
|
||||
String s = "";
|
||||
bool f = true;
|
||||
for (int i = 0; i <= lastblockidx; i++)
|
||||
{
|
||||
if (!lastblockvalid[i])
|
||||
{
|
||||
if (!f)
|
||||
s += ", ";
|
||||
else
|
||||
f = false;
|
||||
|
||||
s += i.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
void saveBlocks()
|
||||
{
|
||||
try
|
||||
@@ -336,7 +370,7 @@ namespace oscardata
|
||||
{
|
||||
if (!receiving)
|
||||
{
|
||||
Console.WriteLine("next/last block: not receiving, first block missing?");
|
||||
//Console.WriteLine("next/last block: not receiving, first block missing?");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -101,7 +101,8 @@ namespace oscardata
|
||||
statics.initAudioStatus = b[0];
|
||||
statics.initVoiceStatus = b[1];
|
||||
|
||||
String s = statics.ByteArrayToString(b,2);
|
||||
//String s = statics.ByteArrayToString(b,2);
|
||||
String s = statics.ByteArrayToStringUtf8(b, 2);
|
||||
String[] sa1 = s.Split(new char[] { '^' });
|
||||
statics.AudioPBdevs = sa1[0].Split(new char[] { '~' });
|
||||
statics.AudioCAPdevs = sa1[1].Split(new char[] { '~' });
|
||||
|
||||
Reference in New Issue
Block a user