update
@@ -176,8 +176,9 @@ namespace oscardata
|
||||
{
|
||||
// send as the last frame
|
||||
Array.Copy(txdata, txpos, txarr, 0, restlen); // unused byte will be 0
|
||||
txudp(txarr, txtype, statics.LastFrame);
|
||||
txudp(txarr, txtype, statics.LastFrame);
|
||||
// send the last frame a couple of times
|
||||
for(int i=0; i<10; i++)
|
||||
txudp(txarr, txtype, statics.LastFrame);
|
||||
setSending(false); // transmission complete
|
||||
}
|
||||
else
|
||||
|
||||
@@ -29,6 +29,7 @@ using System.Text;
|
||||
using System.IO;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
|
||||
namespace oscardata
|
||||
{
|
||||
@@ -42,6 +43,8 @@ namespace oscardata
|
||||
String old_tsip = "";
|
||||
bool modemrunning = false;
|
||||
receivefile recfile = new receivefile();
|
||||
int last_initAudioStatus;
|
||||
int last_initVoiceStatus;
|
||||
|
||||
public Form1()
|
||||
{
|
||||
@@ -60,6 +63,8 @@ namespace oscardata
|
||||
else
|
||||
statics.ostype = 1; // Linux
|
||||
|
||||
statics.CreateAllDirs();
|
||||
|
||||
// set temp paths
|
||||
statics.zip_TXtempfilename = statics.addTmpPath(statics.zip_TXtempfilename);
|
||||
statics.zip_RXtempfilename = statics.addTmpPath(statics.zip_RXtempfilename);
|
||||
@@ -192,19 +197,42 @@ namespace oscardata
|
||||
{
|
||||
statics.GotAudioDevices = 2;
|
||||
// populate combo boxes
|
||||
cb_audioPB.BeginUpdate();
|
||||
cb_audioPB.Items.Clear();
|
||||
cb_loudspeaker.BeginUpdate();
|
||||
cb_loudspeaker.Items.Clear();
|
||||
foreach (String s in statics.AudioPBdevs)
|
||||
{
|
||||
if(s.Length > 1)
|
||||
if (s.Length > 1)
|
||||
{
|
||||
cb_audioPB.Items.Add(s);
|
||||
cb_loudspeaker.Items.Add(s);
|
||||
}
|
||||
}
|
||||
cb_loudspeaker.EndUpdate();
|
||||
cb_audioPB.EndUpdate();
|
||||
// check if displayed text is available in the item list
|
||||
findDevice(cb_loudspeaker);
|
||||
findDevice(cb_audioPB);
|
||||
|
||||
cb_audioCAP.BeginUpdate();
|
||||
cb_audioCAP.Items.Clear();
|
||||
cb_mic.BeginUpdate();
|
||||
cb_mic.Items.Clear();
|
||||
foreach (String s in statics.AudioCAPdevs)
|
||||
{
|
||||
if (s.Length > 1)
|
||||
{
|
||||
cb_audioCAP.Items.Add(s);
|
||||
cb_mic.Items.Add(s);
|
||||
}
|
||||
}
|
||||
cb_mic.EndUpdate();
|
||||
cb_audioCAP.EndUpdate();
|
||||
findDevice(cb_mic);
|
||||
findDevice(cb_audioCAP);
|
||||
}
|
||||
|
||||
|
||||
if (setPBvolume >= 0)
|
||||
{
|
||||
Byte[] txdata = new byte[2];
|
||||
@@ -222,15 +250,124 @@ namespace oscardata
|
||||
Udp.UdpSendCtrl(txdata);
|
||||
setCAPvolume = -1;
|
||||
}
|
||||
|
||||
if (setLSvolume >= 0)
|
||||
{
|
||||
Byte[] txdata = new byte[2];
|
||||
txdata[0] = (Byte)statics.SetLSvolume;
|
||||
txdata[1] = (Byte)setLSvolume;
|
||||
Udp.UdpSendCtrl(txdata);
|
||||
setLSvolume = -1;
|
||||
}
|
||||
|
||||
if (setMICvolume != -1)
|
||||
{
|
||||
Byte[] txdata = new byte[2];
|
||||
txdata[0] = (Byte)statics.SetMICvolume;
|
||||
txdata[1] = (Byte)setMICvolume;
|
||||
Udp.UdpSendCtrl(txdata);
|
||||
setMICvolume = -1;
|
||||
}
|
||||
|
||||
if (last_initAudioStatus != statics.initAudioStatus)
|
||||
{
|
||||
if ((statics.initAudioStatus & 1) == 1)
|
||||
pb_audioPBstatus.BackgroundImage = Properties.Resources.fail;
|
||||
else
|
||||
pb_audioPBstatus.BackgroundImage = Properties.Resources.ok;
|
||||
|
||||
if ((statics.initAudioStatus & 2) == 2)
|
||||
pb_audioCAPstatus.BackgroundImage = Properties.Resources.fail;
|
||||
else
|
||||
pb_audioCAPstatus.BackgroundImage = Properties.Resources.ok;
|
||||
|
||||
last_initAudioStatus = statics.initAudioStatus;
|
||||
}
|
||||
|
||||
if (last_initVoiceStatus != statics.initVoiceStatus)
|
||||
{
|
||||
if ((statics.initVoiceStatus & 1) == 1)
|
||||
pb_voicePBstatus.BackgroundImage = Properties.Resources.fail;
|
||||
else
|
||||
pb_voicePBstatus.BackgroundImage = Properties.Resources.ok;
|
||||
|
||||
if ((statics.initVoiceStatus & 2) == 2)
|
||||
pb_voiceCAPstatus.BackgroundImage = Properties.Resources.fail;
|
||||
else
|
||||
pb_voiceCAPstatus.BackgroundImage = Properties.Resources.ok;
|
||||
|
||||
last_initVoiceStatus = statics.initVoiceStatus;
|
||||
}
|
||||
}
|
||||
|
||||
// correct entries in the Audio Device Comboboxes if Devices have changed
|
||||
void findDevice(ComboBox cb)
|
||||
{
|
||||
int pos = -1;
|
||||
|
||||
if (cb.Text.Length >= 4)
|
||||
{
|
||||
// Device Name starts at Index 3 in the string
|
||||
String dn = cb.Text.Substring(3);
|
||||
int anz = cb.Items.Count;
|
||||
for (int i = 0; i < anz; i++)
|
||||
{
|
||||
String name = cb.Items[i].ToString();
|
||||
name = name.Substring(3);
|
||||
if (dn == name)
|
||||
{
|
||||
pos = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (pos == -1)
|
||||
{
|
||||
// not available, reset to first item which usually is Default
|
||||
if (cb.Items.Count == 0)
|
||||
cb.Text = "no sound devices available";
|
||||
else
|
||||
cb.Text = cb.Items[0].ToString();
|
||||
}
|
||||
else
|
||||
cb.Text = cb.Items[pos].ToString();
|
||||
}
|
||||
|
||||
|
||||
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
save_Setup();
|
||||
|
||||
if (cb_autostart.Checked)
|
||||
{
|
||||
statics.killall("hsmodem");
|
||||
statics.killall("hsmodem.exe");
|
||||
// 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");
|
||||
}
|
||||
|
||||
}
|
||||
// exit the threads
|
||||
statics.running = false;
|
||||
@@ -264,13 +401,6 @@ namespace oscardata
|
||||
|
||||
rxbytecounter += statics.UdpBlocklen;
|
||||
|
||||
trackBar_maxlevel.Value = maxlevel;
|
||||
int v1 = 255;
|
||||
int v2 = 220;
|
||||
if (maxlevel < 20 || maxlevel > 70) trackBar_maxlevel.BackColor = Color.FromArgb(v1,v2,v2);
|
||||
else if (maxlevel < 30 || maxlevel > 60) trackBar_maxlevel.BackColor = Color.FromArgb(v1, v1, v2);
|
||||
else trackBar_maxlevel.BackColor = Color.FromArgb(v2, v1, v2);
|
||||
|
||||
Byte[] rxdata = new byte[rxd.Length - 10];
|
||||
Array.Copy(rxd, 10, rxdata, 0, rxd.Length - 10);
|
||||
|
||||
@@ -334,6 +464,10 @@ namespace oscardata
|
||||
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)
|
||||
{
|
||||
printText(rtb_RXfile, "file status : not complete, retransmit\r\n\r\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -378,6 +512,11 @@ namespace oscardata
|
||||
if (statics.PBfifousage < progressBar_fifo.Minimum) progressBar_fifo.Value = progressBar_fifo.Minimum;
|
||||
else if (statics.PBfifousage >= progressBar_fifo.Maximum) progressBar_fifo.Value = progressBar_fifo.Maximum-1;
|
||||
else progressBar_fifo.Value = statics.PBfifousage;
|
||||
|
||||
progressBar_capfifo.Invalidate();
|
||||
if (statics.CAPfifousage < progressBar_capfifo.Minimum) progressBar_capfifo.Value = progressBar_capfifo.Minimum;
|
||||
else if (statics.CAPfifousage >= progressBar_capfifo.Maximum) progressBar_capfifo.Value = progressBar_capfifo.Maximum - 1;
|
||||
else progressBar_capfifo.Value = statics.CAPfifousage;
|
||||
}
|
||||
|
||||
private void panel_constel_Paint(object sender, PaintEventArgs e)
|
||||
@@ -877,14 +1016,18 @@ namespace oscardata
|
||||
label_txfile.Location = new Point(rtb_TXfile.Location.X, ly);
|
||||
label_rxfile.Location = new Point(rtb_RXfile.Location.X, ly);
|
||||
|
||||
trackBar_maxlevel.Location = new Point(panel_txspectrum.Location.X + panel_txspectrum.Size.Width + 5, panel_txspectrum.Location.Y);
|
||||
trackBar_maxlevel.Size = new Size(20, panel_txspectrum.Size.Height);
|
||||
|
||||
label_speed.Location = new Point(trackBar_maxlevel.Location.X + trackBar_maxlevel.Size.Width + 15,panel_txspectrum.Location.Y+10);
|
||||
label_speed.Location = new Point(panel_txspectrum.Location.X + panel_txspectrum.Size.Width + 15,panel_txspectrum.Location.Y+10);
|
||||
cb_speed.Location = new Point(label_speed.Location.X + label_speed.Size.Width + 10, label_speed.Location.Y-5);
|
||||
|
||||
label_fifo.Location = new Point(label_speed.Location.X, label_speed.Location.Y + 35);
|
||||
progressBar_fifo.Location = new Point(cb_speed.Location.X, cb_speed.Location.Y + 35);
|
||||
int y = 26;
|
||||
label_fifo.Location = new Point(label_speed.Location.X, label_speed.Location.Y + y);
|
||||
progressBar_fifo.Location = new Point(cb_speed.Location.X, cb_speed.Location.Y + y+5);
|
||||
progressBar_fifo.Size = new Size(progressBar_fifo.Width, 18);
|
||||
|
||||
y = 20;
|
||||
label_capfifo.Location = new Point(label_fifo.Location.X, label_fifo.Location.Y + y);
|
||||
progressBar_capfifo.Location = new Point(progressBar_fifo.Location.X, progressBar_fifo.Location.Y + y);
|
||||
progressBar_capfifo.Size = new Size(progressBar_capfifo.Width, 18);
|
||||
}
|
||||
|
||||
public String GetMyBroadcastIP()
|
||||
@@ -923,6 +1066,24 @@ namespace oscardata
|
||||
return x;
|
||||
}
|
||||
|
||||
Byte getLSaudioDevice()
|
||||
{
|
||||
String s = cb_loudspeaker.Text;
|
||||
Byte x = (Byte)cb_loudspeaker.Items.IndexOf(s);
|
||||
Console.WriteLine("LS:" + s + " " + x);
|
||||
//if (s.ToUpper() == "DEFAULT") x = 255;
|
||||
return x;
|
||||
}
|
||||
|
||||
Byte getMICaudioDevice()
|
||||
{
|
||||
String s = cb_mic.Text;
|
||||
Byte x = (Byte)cb_mic.Items.IndexOf(s);
|
||||
Console.WriteLine("MIC:" + s + " " + x);
|
||||
//if (s.ToUpper() == "DEFAULT") x = 255;
|
||||
return x;
|
||||
}
|
||||
|
||||
/*
|
||||
* search for the modem IP:
|
||||
* send a search message via UDP to port UdpBCport
|
||||
@@ -933,13 +1094,15 @@ namespace oscardata
|
||||
|
||||
private void search_modem()
|
||||
{
|
||||
Byte[] txb = new byte[6];
|
||||
Byte[] txb = new byte[8];
|
||||
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;
|
||||
|
||||
Udp.UdpBCsend(txb, GetMyBroadcastIP(), statics.UdpBCport_AppToModem);
|
||||
|
||||
@@ -1128,6 +1291,17 @@ namespace oscardata
|
||||
s = ReadString(sr);
|
||||
try { cb_stampinfo.Checked = (s == "1"); } catch { }
|
||||
try { tb_info.Text = ReadString(sr); } catch { }
|
||||
try { cb_loudspeaker.Text = ReadString(sr); } catch { }
|
||||
try { cb_mic.Text = ReadString(sr); } catch { }
|
||||
try { tb_loadspeaker.Value = ReadInt(sr); } catch { }
|
||||
try { tb_mic.Value = ReadInt(sr); } catch { }
|
||||
try
|
||||
{
|
||||
s = ReadString(sr);
|
||||
rb_opus.Checked = (s == "1");
|
||||
rb_codec2.Checked = (s != "1");
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
catch
|
||||
@@ -1158,6 +1332,11 @@ namespace oscardata
|
||||
sw.WriteLine(cb_announcement.Text);
|
||||
sw.WriteLine(cb_stampinfo.Checked ? "1" : "0");
|
||||
sw.WriteLine(tb_info.Text);
|
||||
sw.WriteLine(cb_loudspeaker.Text);
|
||||
sw.WriteLine(cb_mic.Text);
|
||||
sw.WriteLine(tb_loadspeaker.Value.ToString());
|
||||
sw.WriteLine(tb_mic.Value.ToString());
|
||||
sw.WriteLine(rb_opus.Checked ? "1" : "0");
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
@@ -1208,5 +1387,137 @@ namespace oscardata
|
||||
{
|
||||
setCAPvolume = tb_CAPvol.Value;
|
||||
}
|
||||
|
||||
private void bt_blockinfo_Click(object sender, EventArgs e)
|
||||
{
|
||||
String s;
|
||||
int[] d = new int[2];
|
||||
recfile.oldblockinfo(d);
|
||||
int failed = d[0] - d[1];
|
||||
|
||||
s = "Received Blocks\n" +
|
||||
"---------------\n" +
|
||||
"total : " + d[0] + "\n" +
|
||||
"good : " + d[1] + "\n" +
|
||||
"failed: " + failed + "\n";
|
||||
if(failed > 1)
|
||||
{
|
||||
s += "\nfile incomplete, ask for retransmission";
|
||||
}
|
||||
|
||||
Form2_showtext sf = new Form2_showtext("Block Info",s);
|
||||
sf.ShowDialog();
|
||||
}
|
||||
|
||||
void setVoiceAudio()
|
||||
{
|
||||
Byte[] txdata = new byte[5];
|
||||
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;
|
||||
if (cb_voiceloop.Checked) opmode = 2;
|
||||
if (cb_codecloop.Checked) opmode = 3;
|
||||
if (cb_digitalVoice.Checked) opmode = 4;
|
||||
if (cb_digitalVoiceRXonly.Checked) opmode = 5;
|
||||
if(opmode == 0) pb_voice.BackgroundImage = null;
|
||||
txdata[3] = opmode;
|
||||
Byte codec;
|
||||
if (rb_opus.Checked) codec = 0;
|
||||
else codec = 1;
|
||||
txdata[4] = codec;
|
||||
Udp.UdpSendCtrl(txdata);
|
||||
|
||||
if(opmode > 0)
|
||||
{
|
||||
rb_opus.Enabled = false;
|
||||
rb_codec2.Enabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
rb_opus.Enabled = true;
|
||||
rb_codec2.Enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void cb_switchtoLS_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if(cb_switchtoLS.Checked)
|
||||
{
|
||||
cb_voiceloop.Checked = false;
|
||||
cb_codecloop.Checked = false;
|
||||
cb_digitalVoice.Checked = false;
|
||||
cb_digitalVoiceRXonly.Checked = false;
|
||||
pb_voice.BackgroundImage = Properties.Resources.cdc_digital;
|
||||
}
|
||||
setVoiceAudio();
|
||||
}
|
||||
|
||||
private void cb_voiceloop_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (cb_voiceloop.Checked)
|
||||
{
|
||||
cb_switchtoLS.Checked = false;
|
||||
cb_codecloop.Checked = false;
|
||||
cb_digitalVoice.Checked = false;
|
||||
cb_digitalVoiceRXonly.Checked = false;
|
||||
pb_voice.BackgroundImage = Properties.Resources.cdc_intloop;
|
||||
}
|
||||
setVoiceAudio();
|
||||
}
|
||||
|
||||
private void cb_codecloop_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (cb_codecloop.Checked)
|
||||
{
|
||||
cb_switchtoLS.Checked = false;
|
||||
cb_voiceloop.Checked = false;
|
||||
cb_digitalVoice.Checked = false;
|
||||
cb_digitalVoiceRXonly.Checked = false;
|
||||
pb_voice.BackgroundImage = Properties.Resources.cdc_codecloop;
|
||||
}
|
||||
setVoiceAudio();
|
||||
}
|
||||
|
||||
private void cb_digitalVoice_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (cb_digitalVoice.Checked)
|
||||
{
|
||||
cb_switchtoLS.Checked = false;
|
||||
cb_voiceloop.Checked = false;
|
||||
cb_codecloop.Checked = false;
|
||||
cb_digitalVoiceRXonly.Checked = false;
|
||||
pb_voice.BackgroundImage = Properties.Resources.cdc_dv;
|
||||
}
|
||||
setVoiceAudio();
|
||||
}
|
||||
|
||||
private void cb_digitalVoiceRXonly_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (cb_digitalVoiceRXonly.Checked)
|
||||
{
|
||||
cb_switchtoLS.Checked = false;
|
||||
cb_voiceloop.Checked = false;
|
||||
cb_codecloop.Checked = false;
|
||||
cb_digitalVoice.Checked = false;
|
||||
pb_voice.BackgroundImage = Properties.Resources.cdc_dvrx;
|
||||
}
|
||||
setVoiceAudio();
|
||||
}
|
||||
|
||||
int setLSvolume = -1;
|
||||
int setMICvolume = -1;
|
||||
|
||||
private void tb_loadspeaker_Scroll(object sender, EventArgs e)
|
||||
{
|
||||
setLSvolume = tb_loadspeaker.Value;
|
||||
}
|
||||
|
||||
private void tb_mic_Scroll(object sender, EventArgs e)
|
||||
{
|
||||
setMICvolume = tb_mic.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,6 +129,158 @@
|
||||
<metadata name="timer_qpsk.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>371, 17</value>
|
||||
</metadata>
|
||||
<metadata name="imageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>644, 17</value>
|
||||
</metadata>
|
||||
<data name="imageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABw
|
||||
FwAAAk1TRnQBSQFMAgEBDQEAAbABAAGwAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
AwABQAMAAUADAAEBAQABCAYAARAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
|
||||
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
|
||||
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
|
||||
AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
|
||||
AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
|
||||
AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
|
||||
ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
|
||||
AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
|
||||
AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
|
||||
AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
|
||||
AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
|
||||
AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
|
||||
AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
|
||||
AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
|
||||
AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
|
||||
ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
|
||||
Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
|
||||
AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
|
||||
AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
|
||||
AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
|
||||
ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
|
||||
Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
|
||||
AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
|
||||
AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
|
||||
AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
|
||||
AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
|
||||
AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
|
||||
AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/wQAARoBmQEbAf8CAAH/
|
||||
AfQBGgGZAf81AAF0ATIBNwFLAfEB9AF0ATEBOAEyAfM1AAF5AzgCNwM4ATEB8zUAAZkEOAH7AzgBMQH0
|
||||
NQABmQg4ATEB9jUAAZkEegJZAjgBMQH0MwAB/wGZAVgIegFZAXkB/zIAARoBWQt6AVIB/zAAAfQBeQ16
|
||||
ARowAAHzAVIMegF5AZkxAAH2ARsBGgGZBnoBmQEaARsB9AH/NQABGwF6ApoBegF5Af85AAH/AXkCoAF6
|
||||
AfY7AAH2AXoBoAEaPQABGwGaAf93AAH/DPIB9AH/BwABBwHsAeoBbQHqAewBvBMABP8B9AHzAQcB7wHw
|
||||
AfQF/wEAAZMDRQZGBEUB9AkAAW0BEwHsBgAC/wn2Af8FAAH0AfAB9wEUARECEAYAAf8BbwIfAUYGJQFG
|
||||
ASQBHwFFAfIDAAH0BfMBbQFDAZIFAAH/AZkBUwkyAXUB/wEAAf8BBwHwAfEB9AH/AfMCBwHyAwAB/wIA
|
||||
Af8BbwEfAW8B9AF0ASUCJgIlARsBkwEfAUUB8gMAAe0BEQFEAQEBRAIRAQ8BkgUAAf8CUwGaAVMBwwFZ
|
||||
AcMBWQQyAfYBAAH/AfIB8AERAfQHAAHxAUMB8wEAAf8BbwEfAZMC8wF1AiwBTQHxAfMB8AFFASQB8gQA
|
||||
Af8BRQEfAW4B/wHrAQ4B7QUAAf8BMgFTARoBWQH/AVkB/wFZBDIB9gEAAfQB7AETAQ8B8gcAAe8BEQEV
|
||||
AfEB/wFvAR8BJAGTAfIB8QF1ASwBvAHxAbwBJAEfASQB8gUAAW8BIAGTAQABbQEAAe0FAAH/AzIBmgHD
|
||||
AVkB/wE4BDIB9gEAAfQBDgHqARAB8gcAAe8BQwEVAZIB/wFvAh8BJAGTAfEB8AK8AQcBRgMfAfIFAAFv
|
||||
ASABkwEAAW0BAAHtBQAB/wEyAVMBGgGaAVMBmgF6BTIB9gEAAfQB6gHrAUMB8gcAAe8BEwHqAQcB/wFv
|
||||
AQEBHwEkAUYBHAHxAfABBwElAh8BAQEfAfIFAAFvASABkwEAAesBEAHtBQAB/wEsAjIBWQH2ARoBUwUy
|
||||
AfYCAAEHAe0BFAHyBwAB7wFtAewB8AH/AW8BRQFGAUwBbwPxAfABkwFvAUYCRQHyBAAB/wFuASABkwEA
|
||||
AesBDwGSAwAB8wEAAf8BUwF6AcMBGgGaAXoBWQJ6A1MB/wIAAfIBvAESAfMHAAEHAesB8AHzAf8EbwHx
|
||||
AfIBvAEHAfEB8gGTA28B8gQAAfMBCwEfAZMBAAHrAREBkgMAARMBAAH/AVMDdQR6BHUB/wIAAfQBvAH/
|
||||
CQAB/wHvAf8BAAJvAZMC8wG8AZMBbwEHAfIB8wGTAm8B8wQAAfQBDwEBAZMBAAHrAUMBkgEAAf8BvAER
|
||||
AQAB/wFTCnoBdQH/AgAB/wGSAfQJAAHyAe8B/wEAAm8BvAHzAfAEbwHvAvMBkwFvAfMEAAH/AREBEAFD
|
||||
AW0BQwIVAW0BFAERARQBAAH/AVMKegF1Af8DAAH/AfIJAAHyAwADkwEHBpMB7wOTAfMB9AFvAgAB/wIS
|
||||
AW0D7QFEAu0B7AGSAQAB/wF1CpoBegH/BAABvAHvAf8FAAH0AewB8QMADpMB8wH/AUUB/wIAARwB7QHv
|
||||
AgAB8QFFBQAB/wEbAXoJdQEaAf8EAAH/AkMBvAL/AfQBBwEQAW0B/wMAAfMMkwEaAv8CbgLvAW4B9wHs
|
||||
Ae8BkwJuBgAM/wYAAf8B7wETAw4BFAEHAf8TAAH/C28bAAH/AfMB/wYABP8C9AHvAewBkgHyAfQF/wMA
|
||||
C/8CAAH/AfAB7wHyAf8HAAH/AfMBGgH/EwAB9AESAewE7wHsAfAFAAH/AfQK8gHzAf8BAAH/AQcB/wHv
|
||||
AfIB/wUAAf8B8gFSATgBGgQAAfQBCAwAAfAC7ALwAv8B9AGSAfAB7QQAAf8B8gHxAQgCvAHwAQgEGwLz
|
||||
Av8BBwG8AewB7QHyAf8DAAH/AfABUgI4AZkEAAHyAU8BlwH0CQAB/wHsAW0D/wL0Av8BBwHzAQcDAAH0
|
||||
AfMBcgEoAS4BLwF4AS8ENQEbAfIB/wEAAfQBBwEUAQ8B7QH0Af8BAAH/AfIBMQE4AVkBdAH/BAAB8gIt
|
||||
AU8B/wgAAeoBbQH0AbwD9AHzAfQBBwH0AZIBBwMAAfQB8wFyAigCmAIvAzUBGwHyAf8BAAH/AfQB7wET
|
||||
ARQB9wH0Af8B8wFSAlkBmQH/BQAB8gIzAS0BTwG8Af8FAAH/Ae0BvAT0AfMB8gT0AfEBBwIAAfQB8wFy
|
||||
AigB/wEIBS8BCAHyAf8DAAH/AQcBEgFDAe8BvAExATgBWQGZAf8GAAHyAjMCLQECAZgB/wQAAfAB7AH0
|
||||
AfMC9AEHAfQBGgP0AfAB7QHsAgAB9AHzAXICKAH/AfQBUAEuAXgBUAEvAbwB8gH/BAAB/wEHAhIB7QFZ
|
||||
ATIB8wH/BwAB8gIzAS0CAgEnAXIB9AMAAQcB7AL0AvMB9AEfAbwE9AHtAe8BDgEAAfQB8wFyAigB9AL/
|
||||
AbwB/wFQASgBvAHyAf8FAAH/Ae8B7AHwAfcBvAH/CAAB8gMtAgIBJwEhAUkB9AIAAbwBkgLzAfAC8wEH
|
||||
Ae0E8wHtAe8B/wEAAfQB8wFyAigBUAH0A/8BUAEoAbwB8gH/BQAB/wIHAewB6wEHAfMC/wYAAfEGTwFJ
|
||||
AZgB/wIAAf8BBwHxAfMB8gHzAZMC8wEHAvMB8QHwAQcCAAH0AfMBcgMoAZgD/wFQASgBvAHyAf8EAAH/
|
||||
AQcB8QHyAQcB7wHsAesB7AHvAfQB/wQAAfEGTwEIBQABBwHrAfMB7wHzARoD8wHwAfEB7AHzAf8CAAH0
|
||||
AfMBcgIoAVAECAFKASgBvAHyAf8DAAH0AQcBvAHyAv8B8AHsAe0B7wLtAfQEAAHxAU8EcgHxAf8FAAHz
|
||||
AfEB7AHyAfAD8wHyAbwB7AHxAe8DAAH0AfMBcgkoAbwB8gH/AgAB/wEHAfIB8wMAAfIBvAEHAbwC7wHx
|
||||
BAAB8QFyAZcBcgFJAfQIAAEHAfMB6wHvAfcBBwHvAe0BbQHwAe0B9wHtAf8BAAH0AfMBHAlyAfEB8gL/
|
||||
AfMB7wG8AfMB/wMAAfQBBwHyAQcB9AH/AfQEAAHxAnIB7wH/CgAC8wG8Ae0C7AEHAfMBBwHyAbwB9AEH
|
||||
AQAB/wHwCvMB8gH0AQAB/wIHAfMFAAH/Ae8B9AHvAfMB/wUAAfEBTwEIAf8NAAHzAbwBBwG8AfICAAHy
|
||||
AfQBAAG8AQAC/wr0Av8BAAH/AfEB8gH/BQAB/wHyAfAB8wEHAfQFAAH/AfMXAALxHAAB/wHzAf8cAAH/
|
||||
AfADmAH0IAAF/wH0Cv8B9A3yAZEB7xAAEP8QAAHxAvQC/wHvA/8B8gHxAfQBCAG7AfABkQQAAQEBHgQA
|
||||
Af8BRQEBAwAB8wHwBfIC8QbyAfABAAG8ArQLtQH/AfIC9AL/Ae8D/wHyAfEBcgFxAZEBSQFyAwABAQH5
|
||||
AUcBCwIAAf8BHgH5ARcBAQIAAfIB8wP/AfMBuwK0AQkB9AT/AfABAAH3AUMBFQJKAUQBQwERA0MBFQFD
|
||||
ARMB9AHyAvQC/wHvA/8B8gHxAUkC/wEHAXECAAGTAW8C+QFHAQsB/wELA/kBRQIAAfIB8wL/AfQBtAGz
|
||||
AgkCtAHxA/8B8AEAAfcBEQFDAkoBFQMQAhEBQwERAWYB9AHyBAcB7AG8AvACvAFJAfMB9AHxAXIDAAJv
|
||||
AiABRgEOAyABAQH/AgAB8gHzAv8CiwG0AgkBtAGLAa4D/wHwAQAB9wEQAUMCSgFEAREDEAMRARUB9AHy
|
||||
BLwBkgHwAvEB8AG8AUkB7wHwAewB7wQAAW8BTAUgAQEB/wMAAfIB8wH/AQcBhgGtAbQBCQG6AbMBrQGG
|
||||
AQcC/wHwAQAB9wIUAkoBFAERARABDwQOARUB9AHyAfQBBwEIAf8BBwH/AfIB/wHzAfEB8AFJAQ0B7QH/
|
||||
BQABbwFMAyABHwH/BAAB8gHzAf8BtQGGArQCswGtAosBrgL/AfEBAAHvAusBbQHqARIBFAEVAREBEAIP
|
||||
ARABFQH0AfIC8wEHAfQBBwH/AbwB/wHzAfED/wHyAf8EAAH/AR8DRgFvAUYBHwQAAfIB8wH/AbUBhgG7
|
||||
AQkBtAGtAosBzwGuAv8B8QEAAQcBkwF0AXkCegJTAkwDKwFLAfQB8gHzAQcBvAH0AQcB/wHwAf8B8wHy
|
||||
A/8B8wQAAf8BHwNGAXQCRgFvAR8DAAHyAfMB/wK1AgkBtAKLAYYBiwG1Av8B8QEAAQcBlAGaAqABegF1
|
||||
AlMETQFvAfQB8gG8AwcB9wG8BPAB8wH0Af8B8wMAAf8BHwNvAQEBbgF0Am8BFgEfAgAB8gHzAf8B8wG1
|
||||
AQcBCQG0Ac8CiwGuAfQC/wHxAQABBwKUA5oDdQLjAhcBbwH0BfMBBwP0AfMB8gP/AfMDAAEaAUwCFgEf
|
||||
Af8BAAFvAxYBHwIAAfIB8wL/AfABtQEJAa4BtAGuAc8BvAP/AfEBAAEHBrcDlAOxAY4B9ALzAggB8wG8
|
||||
A/QB8wHyA/8B8wQAARoBTAEfAf8DAAFvARYBHwMAAvID8wG8ArUBrgG1AbwE8wHxAQABBwHPDLUB9ALz
|
||||
AfIBBwHzAfAE8wHyA/QB8wUAARoB/wUAAZMEAAHyCfAC7wO1AfABAAG7A60DswK0BdUB9ALzAvAB8wHw
|
||||
BfMD9AHzEQAB9Am8AQcBvAMHAfIBAAHyBQkE3QQZAv8G8gfzAf8xAAFCAU0BPgcAAT4DAAEoAwABQAMA
|
||||
AUADAAEBAQABAQYAAQIWAAP/AQAB4QGDBgAB4AEDBgAB4AEDBgAB4AEDBgAB4AEDBgAB4AEDBgABgAEB
|
||||
BgABgBcAAYAHAAH4AQ8GAAH4AR8GAAH8AT8GAAH+AT8GAAL/BgABgAEAAf4BAwL/AYABAAGAAQAB/wGP
|
||||
AcABAwHgAT8CAAHgAQ8BgAEBAQABOwIAAeABDwGAAQEBBwHxAgAB8AEPAYABAQEHAfACAAH4AY8BgAEB
|
||||
AQcB8AIAAfgBjwGAAQEBBwHwAgAB+AGPAYABAQGHAfACAAHwAY4BgAEBAYcB8AIAAfABjgGAAQEBjwH4
|
||||
AYABAAHwAYgBgAEBAY8B+AGAAQAB8AEAAYABAQHPAfsBgAEAATABAAGAAQEC4wGAAQABGAHPAYABAQHg
|
||||
AQMBgAIAAQ8BwAEDAfABBwL/AQABDwL/Af4BPwIAAeABAwEHAfAC/wHgAQ8BgAEBAQMB4AHzAf8BwAEH
|
||||
AYABAAEBAcAB8AH/AYABAwGAAQACgAHwAX8BgAEDAYABAAGAAQEB8AEfAQABAQGAAQAB4AEDAfABDwEA
|
||||
AQEBgAEAAfABBwHwAQcCAAGAAQAB+AEPAfABAwIAAYABAAH4AQMB8AEDAQABAQGAAQAB8AEAAfABDwGA
|
||||
AQEBgAEAAeABAAHwAQ8BgAEDAYABAAHDAYAB8AE/AcABAAGAAQABAwGAAfABfwHgAQABgAEBAQ8BgQHw
|
||||
Af8B+AEyAYABAQEPAYEB8wL/AfkD/wHjA/8BwAT/BAAC/wIAAv8CAAHzAccCAAGAAwAB4QGDAgABgAMA
|
||||
AcABAwIAAYADAAHgAQMCAAGAAwAB8AEHAgABgAMAAfgBDwIAAYADAAHwAQ8CAAGAAgABAQHgAQcCAAGA
|
||||
AgABAQHAAQMCAAGAAgABAQHAAYMCAAGAAgABAQHhAccCAAGAAgABAQHzAe8CAAGAAgABAQL/AgABgAIA
|
||||
AQEG/ws=
|
||||
</value>
|
||||
</data>
|
||||
<data name="richTextBox1.Text" xml:space="preserve">
|
||||
<value>QO-100 Multimedia High Speed Modem for Linux and Windows
|
||||
|
||||
(c) by DJ0ABR, Kurt Moraw, Germany https://dj0abr.de/
|
||||
for 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
|
||||
|
||||
OPUS Codec:
|
||||
https://opus-codec.org/
|
||||
BSD-licensed
|
||||
|
||||
FFTW: http://www.fftw.org/
|
||||
GNU General Public License
|
||||
|
||||
FreeDV: https://github.com/drowe67/codec2
|
||||
GNU Lesser General Public License v2.1
|
||||
|
||||
Image from ICON Archive: https://www.iconarchive.com/
|
||||
Artist: Oxygen Team
|
||||
Iconset: Oxygen Icons (883 icons)
|
||||
License: GNU Lesser General Public License
|
||||
|
||||
Artist: Sallee Design (Available for custom work)
|
||||
Iconset: Music Icons (29 icons)
|
||||
License: CC Attribution 4.0
|
||||
|
||||
Testing & Manual:
|
||||
DD1US: https://www.dd1us.de/
|
||||
|
||||
VIP user: DP0GVN: https://www.awi.de/expedition/stationen/neumayer-station-iii.html
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="timer_searchmodem.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>482, 17</value>
|
||||
</metadata>
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
namespace oscardata
|
||||
{
|
||||
partial class Form2_showtext
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.rtb = new System.Windows.Forms.RichTextBox();
|
||||
this.bt_OK = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// rtb
|
||||
//
|
||||
this.rtb.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.rtb.Location = new System.Drawing.Point(13, 13);
|
||||
this.rtb.Name = "rtb";
|
||||
this.rtb.Size = new System.Drawing.Size(310, 315);
|
||||
this.rtb.TabIndex = 0;
|
||||
this.rtb.Text = "";
|
||||
//
|
||||
// bt_OK
|
||||
//
|
||||
this.bt_OK.Location = new System.Drawing.Point(247, 335);
|
||||
this.bt_OK.Name = "bt_OK";
|
||||
this.bt_OK.Size = new System.Drawing.Size(75, 23);
|
||||
this.bt_OK.TabIndex = 1;
|
||||
this.bt_OK.Text = "OK";
|
||||
this.bt_OK.UseVisualStyleBackColor = true;
|
||||
this.bt_OK.Click += new System.EventHandler(this.bt_OK_Click);
|
||||
//
|
||||
// Form2_showtext
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(335, 367);
|
||||
this.Controls.Add(this.bt_OK);
|
||||
this.Controls.Add(this.rtb);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "Form2_showtext";
|
||||
this.ShowIcon = false;
|
||||
this.Text = "Form2_showtext";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.RichTextBox rtb;
|
||||
private System.Windows.Forms.Button bt_OK;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace oscardata
|
||||
{
|
||||
public partial class Form2_showtext : Form
|
||||
{
|
||||
public Form2_showtext(String title,String s)
|
||||
{
|
||||
InitializeComponent();
|
||||
this.Text = title;
|
||||
PrintText(rtb,s);
|
||||
}
|
||||
|
||||
void PrintText(RichTextBox rtb, String s)
|
||||
{
|
||||
AppendTextOnce(rtb, new Font("Courier New", (float)8), Color.Blue, Color.White, s);
|
||||
}
|
||||
|
||||
void AppendTextOnce(RichTextBox rtb, Font selfont, Color color, Color bcolor, string text)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (text.Contains("\n"))
|
||||
{
|
||||
char[] ca = new char[] { '\n', '\r' };
|
||||
|
||||
text = text.Trim(ca);
|
||||
text += "\n";
|
||||
}
|
||||
|
||||
// max. xxx Zeilen, wenn mehr dann lösche älteste
|
||||
if (rtb.Lines.Length > 200)
|
||||
{
|
||||
rtb.SelectionStart = 0;
|
||||
rtb.SelectionLength = rtb.Text.IndexOf("\n", 0) + 1;
|
||||
rtb.SelectedText = "";
|
||||
}
|
||||
|
||||
int start = rtb.TextLength;
|
||||
rtb.AppendText(text);
|
||||
int end = rtb.TextLength;
|
||||
|
||||
// Textbox may transform chars, so (end-start) != text.Length
|
||||
rtb.Select(start, end - start);
|
||||
rtb.SelectionColor = color;
|
||||
rtb.SelectionFont = selfont;
|
||||
rtb.SelectionBackColor = bcolor;
|
||||
rtb.Select(end, 0);
|
||||
|
||||
rtb.ScrollToCaret();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine(e.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
private void bt_OK_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -63,9 +63,9 @@ namespace oscardata.Properties {
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap constelBG {
|
||||
internal static System.Drawing.Bitmap binary {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("constelBG", resourceCulture);
|
||||
object obj = ResourceManager.GetObject("binary", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
@@ -73,9 +73,159 @@ namespace oscardata.Properties {
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap defaultpic {
|
||||
internal static System.Drawing.Bitmap cancel {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("defaultpic", resourceCulture);
|
||||
object obj = ResourceManager.GetObject("cancel", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap cdc_codecloop {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("cdc_codecloop", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap cdc_dig {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("cdc_dig", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap cdc_digital {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("cdc_digital", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap cdc_dv {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("cdc_dv", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap cdc_dvrx {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("cdc_dvrx", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap cdc_intloop {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("cdc_intloop", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap fail {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("fail", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap html {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("html", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <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>
|
||||
internal static System.Drawing.Bitmap image3 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("image3", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap meter {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("meter", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap meter_big {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("meter_big", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap ok {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("ok", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap openfolder {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("openfolder", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
@@ -89,5 +239,105 @@ namespace oscardata.Properties {
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap Satellite_icon1 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Satellite_icon1", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap setup {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("setup", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap setup_big {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("setup_big", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap start {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("start", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap stop {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("stop", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap text {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("text", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap text_big {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("text_big", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap transmit {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("transmit", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap voice {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("voice", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap voice_big {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("voice_big", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,13 +118,88 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="defaultpic" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>defaultpic.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<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="constelBG" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>constelBG.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<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>
|
||||
<data name="cancel" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>cancel.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="html" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>html.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="image3" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>image.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="meter" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>meter.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="meter_big" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>meter_big.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="openfolder" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>openfolder.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Satellite_icon1" 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="setup" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>setup.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="setup_big" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>setup_big.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="start" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>start.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="stop" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>stop.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="text" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>text.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="text_big" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>text_big.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="transmit" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>transmit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="voice" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>voice.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="voice_big" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>voice_big.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="fail" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>fail.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="ok" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>ok.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="cdc_codecloop" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>cdc_codecloop.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="cdc_dig" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>cdc_dig.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="cdc_digital" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>cdc_digital.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="cdc_dv" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>cdc_dv.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="cdc_dvrx" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>cdc_dvrx.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="cdc_intloop" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>cdc_intloop.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 861 B |
|
After Width: | Height: | Size: 915 B |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 784 B |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 9.7 KiB |
|
After Width: | Height: | Size: 92 KiB |
|
After Width: | Height: | Size: 87 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 10 KiB |
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
|
||||
</configuration>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
|
||||
</configuration>
|
||||
@@ -22,6 +22,8 @@ namespace oscardata
|
||||
public static Byte AsciiFile = 3;
|
||||
public static Byte HTMLFile = 4;
|
||||
public static Byte BinaryFile = 5;
|
||||
public static Byte Audio = 6;
|
||||
|
||||
// the upper values are for internal use
|
||||
public static Byte ResamplingRate = 16;
|
||||
public static Byte AutosendFile = 17;
|
||||
@@ -30,6 +32,10 @@ namespace oscardata
|
||||
public static Byte ResetModem = 20;
|
||||
public static Byte SetPBvolume = 21;
|
||||
public static Byte SetCAPvolume = 22;
|
||||
public static Byte SetLSvolume = 23;
|
||||
public static Byte SetMICvolume = 24;
|
||||
public static Byte SetVoiceMode = 25;
|
||||
public static Byte terminate = 26;
|
||||
|
||||
// frame sequence, modem needs that for i.e. sending a preamble
|
||||
public static Byte FirstFrame = 0;
|
||||
@@ -65,6 +71,9 @@ namespace oscardata
|
||||
public static String[] AudioPBdevs;
|
||||
public static String[] AudioCAPdevs;
|
||||
public static int PBfifousage = 0;
|
||||
public static int CAPfifousage = 0;
|
||||
public static int initAudioStatus;
|
||||
public static int initVoiceStatus;
|
||||
|
||||
|
||||
public static String[] getOwnIPs()
|
||||
@@ -198,6 +207,38 @@ namespace oscardata
|
||||
return home + filename;
|
||||
}
|
||||
|
||||
public static void CreateAllDirs()
|
||||
{
|
||||
String home = Application.UserAppDataPath;
|
||||
String deli = "/";
|
||||
|
||||
if (statics.ostype == 0)
|
||||
deli = "\\";
|
||||
|
||||
// create home directory
|
||||
try
|
||||
{
|
||||
Directory.CreateDirectory(home);
|
||||
}
|
||||
catch { }
|
||||
|
||||
// create application path
|
||||
home += deli + DataStorage;
|
||||
try
|
||||
{
|
||||
Directory.CreateDirectory(home);
|
||||
}
|
||||
catch { }
|
||||
|
||||
// create image path
|
||||
home += deli + RXimageStorage;
|
||||
try
|
||||
{
|
||||
Directory.CreateDirectory(home);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
// Returns the file's size.
|
||||
public static long GetFileSize(string file_name)
|
||||
{
|
||||
@@ -305,6 +346,23 @@ namespace oscardata
|
||||
return true;
|
||||
}
|
||||
|
||||
// checks if a process is running
|
||||
static public bool isProcRunning(String s)
|
||||
{
|
||||
bool running = false;
|
||||
|
||||
if (ostype == 0)
|
||||
{
|
||||
foreach (var process in Process.GetProcessesByName(s))
|
||||
{
|
||||
running = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return running;
|
||||
}
|
||||
|
||||
static public void killall(String s)
|
||||
{
|
||||
if (ostype == 0)
|
||||
|
||||
@@ -107,26 +107,5 @@ namespace oscardata
|
||||
|
||||
return destImage;
|
||||
}
|
||||
|
||||
// gets a receive payload, reconstruct the image
|
||||
// type: 2=start, 3=cont
|
||||
public void receive_image(Byte[] rxdata, int minfo)
|
||||
{
|
||||
BinaryWriter writer = null;
|
||||
|
||||
if (minfo == statics.FirstFrame)
|
||||
{
|
||||
// image starts, create destination file
|
||||
writer = new BinaryWriter(File.Open(statics.jpg_tempfilename, FileMode.Create));
|
||||
writer.Write(rxdata);
|
||||
}
|
||||
else
|
||||
{
|
||||
// continue with image
|
||||
writer = new BinaryWriter(File.Open(statics.jpg_tempfilename, FileMode.Append));
|
||||
writer.Write(rxdata);
|
||||
}
|
||||
writer.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")]
|
||||
@@ -0,0 +1 @@
|
||||
9e2591805e48c9de90be794d8c80dc9ff27fb5a3
|
||||
@@ -0,0 +1,11 @@
|
||||
E:\funk\hsmodem\oscardata\oscardata\bin\Debug\oscardata.exe.config
|
||||
E:\funk\hsmodem\oscardata\oscardata\bin\Debug\oscardata.exe
|
||||
E:\funk\hsmodem\oscardata\oscardata\bin\Debug\oscardata.pdb
|
||||
E:\funk\hsmodem\oscardata\oscardata\obj\Debug\oscardata.Form1.resources
|
||||
E:\funk\hsmodem\oscardata\oscardata\obj\Debug\oscardata.Properties.Resources.resources
|
||||
E:\funk\hsmodem\oscardata\oscardata\obj\Debug\oscardata.csproj.GenerateResource.cache
|
||||
E:\funk\hsmodem\oscardata\oscardata\obj\Debug\oscardata.csproj.CoreCompileInputs.cache
|
||||
E:\funk\hsmodem\oscardata\oscardata\obj\Debug\oscardata.exe
|
||||
E:\funk\hsmodem\oscardata\oscardata\obj\Debug\oscardata.pdb
|
||||
E:\funk\hsmodem\oscardata\oscardata\obj\Debug\oscardata.csprojAssemblyReference.cache
|
||||
E:\funk\hsmodem\oscardata\oscardata\obj\Debug\oscardata.Form2_showtext.resources
|
||||
@@ -0,0 +1,4 @@
|
||||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")]
|
||||
@@ -0,0 +1 @@
|
||||
f689faaaeada03b7ced4435f518c6a73110138e7
|
||||
@@ -0,0 +1,11 @@
|
||||
E:\funk\hsmodem\oscardata\oscardata\bin\Release\oscardata.exe.config
|
||||
E:\funk\hsmodem\oscardata\oscardata\bin\Release\oscardata.exe
|
||||
E:\funk\hsmodem\oscardata\oscardata\bin\Release\oscardata.pdb
|
||||
E:\funk\hsmodem\oscardata\oscardata\obj\Release\oscardata.Form1.resources
|
||||
E:\funk\hsmodem\oscardata\oscardata\obj\Release\oscardata.Properties.Resources.resources
|
||||
E:\funk\hsmodem\oscardata\oscardata\obj\Release\oscardata.csproj.GenerateResource.cache
|
||||
E:\funk\hsmodem\oscardata\oscardata\obj\Release\oscardata.csproj.CoreCompileInputs.cache
|
||||
E:\funk\hsmodem\oscardata\oscardata\obj\Release\oscardata.exe
|
||||
E:\funk\hsmodem\oscardata\oscardata\obj\Release\oscardata.pdb
|
||||
E:\funk\hsmodem\oscardata\oscardata\obj\Release\oscardata.csprojAssemblyReference.cache
|
||||
E:\funk\hsmodem\oscardata\oscardata\obj\Release\oscardata.Form2_showtext.resources
|
||||
@@ -64,6 +64,12 @@
|
||||
<Compile Include="Form1.Designer.cs">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Form2_showtext.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Form2_showtext.Designer.cs">
|
||||
<DependentUpon>Form2_showtext.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="imagehandler.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
@@ -73,6 +79,9 @@
|
||||
<EmbeddedResource Include="Form1.resx">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Form2_showtext.resx">
|
||||
<DependentUpon>Form2_showtext.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
@@ -96,16 +105,45 @@
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Properties\defaultpic.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Properties\Satellite-icon.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Properties\constelBG.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Properties\image.jpg" />
|
||||
<None Include="Properties\image1.jpg" />
|
||||
<None Include="Properties\image2.jpg" />
|
||||
<None Include="Properties\App-voice-support-headset-icon.png" />
|
||||
<None Include="Properties\Categories-preferences-system-icon.png" />
|
||||
<None Include="Properties\Downloads-1-icon.png" />
|
||||
<None Include="Properties\Mimetypes-text-csv-icon.png" />
|
||||
<None Include="Properties\Photography-icon.png" />
|
||||
<None Include="Properties\Mimetypes-text-html-icon.png" />
|
||||
<None Include="Properties\binary.png" />
|
||||
<None Include="Properties\cancel.png" />
|
||||
<None Include="Properties\html.png" />
|
||||
<None Include="Properties\image.png" />
|
||||
<None Include="Properties\meter.png" />
|
||||
<None Include="Properties\meter_big.png" />
|
||||
<None Include="Properties\openfolder.png" />
|
||||
<None Include="Properties\setup.png" />
|
||||
<None Include="Properties\setup_big.png" />
|
||||
<None Include="Properties\start.png" />
|
||||
<None Include="Properties\stop.png" />
|
||||
<None Include="Properties\text.png" />
|
||||
<None Include="Properties\text_big.png" />
|
||||
<None Include="Properties\transmit.png" />
|
||||
<None Include="Properties\voice.png" />
|
||||
<None Include="Properties\voice_big.png" />
|
||||
<None Include="Properties\fail.png" />
|
||||
<None Include="Properties\ok.png" />
|
||||
<None Include="Properties\cdc_codecloop.png" />
|
||||
<None Include="Properties\cdc_dig.png" />
|
||||
<None Include="Properties\cdc_digital.png" />
|
||||
<None Include="Properties\cdc_dv.png" />
|
||||
<None Include="Properties\cdc_dvrx.png" />
|
||||
<None Include="Properties\cdc_intloop.png" />
|
||||
<None Include="Properties\textrx.png" />
|
||||
<None Include="Properties\texttx.png" />
|
||||
<Content Include="Satellite-icon.ico" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
|
||||
@@ -67,6 +67,9 @@ namespace oscardata
|
||||
int blockidx;
|
||||
Byte[] firstblock;
|
||||
|
||||
bool[] lastblockvalid = new bool[1024];
|
||||
int lastblockidx;
|
||||
|
||||
bool receiving = false;
|
||||
public String filename = null;
|
||||
public String StatusText = "";
|
||||
@@ -97,26 +100,6 @@ namespace oscardata
|
||||
filesize = 0;
|
||||
filename = "";
|
||||
if (!StartFileRX()) return false; // invalid file
|
||||
|
||||
// check if file already exists
|
||||
if (fileExists())
|
||||
{
|
||||
// exists already, no need to receive
|
||||
filename = makeRXfilename();
|
||||
|
||||
if (rxtype == statics.Image)
|
||||
{
|
||||
try
|
||||
{
|
||||
// show existing image
|
||||
Image img = Image.FromFile(filename);
|
||||
pbmp = new Bitmap(img);
|
||||
}
|
||||
catch { pbmp = null; }
|
||||
}
|
||||
receiving = false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (minfo != statics.FirstFrame)
|
||||
@@ -281,9 +264,21 @@ namespace oscardata
|
||||
result[0] = blockidx+1; // +1 because we start with block 0
|
||||
result[1] = ok;
|
||||
|
||||
Array.Copy(blockvalid, lastblockvalid, blockvalid.Length);
|
||||
lastblockidx = blockidx;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void oldblockinfo(int[] result)
|
||||
{
|
||||
int ok = 0;
|
||||
for (int i = 0; i <= lastblockidx; i++)
|
||||
if (lastblockvalid[i]) ok++;
|
||||
result[0] = lastblockidx + 1; // +1 because we start with block 0
|
||||
result[1] = ok;
|
||||
}
|
||||
|
||||
void saveBlocks()
|
||||
{
|
||||
try
|
||||
@@ -390,20 +385,6 @@ namespace oscardata
|
||||
return fn;
|
||||
}
|
||||
|
||||
bool fileExists()
|
||||
{
|
||||
String fn = makeRXfilename();
|
||||
if (!File.Exists(fn)) return false;
|
||||
|
||||
// File exists, but is the ID the same ?
|
||||
Byte[] ba = File.ReadAllBytes(fn);
|
||||
if (ba == null) return false;
|
||||
Crc c = new Crc();
|
||||
int fncrc = c.crc16_messagecalc(ba, ba.Length);
|
||||
if (ArraySend.FileID != fncrc) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool SaveFile()
|
||||
{
|
||||
Console.WriteLine("save file");
|
||||
@@ -492,42 +473,49 @@ namespace oscardata
|
||||
return;
|
||||
}
|
||||
|
||||
// filename has the received data, but maybe too long (multiple of payload length)
|
||||
// reduce for the real file length
|
||||
Byte[] fc = File.ReadAllBytes(filename);
|
||||
Byte[] fdst = new byte[ArraySend.FileSize];
|
||||
if (fc.Length < ArraySend.FileSize)
|
||||
try
|
||||
{
|
||||
Console.WriteLine("file not complete: got len=" + fc.Length + " expected len=" + ArraySend.FileSize);
|
||||
return;
|
||||
}
|
||||
Array.Copy(fc, 0, fdst, 0, ArraySend.FileSize);
|
||||
File.WriteAllBytes(statics.zip_RXtempfilename, fdst); // the received file (still zipped) is here
|
||||
// filename has the received data, but maybe too long (multiple of payload length)
|
||||
// reduce for the real file length
|
||||
Byte[] fc = File.ReadAllBytes(filename);
|
||||
Byte[] fdst = new byte[ArraySend.FileSize];
|
||||
if (fc.Length < ArraySend.FileSize)
|
||||
{
|
||||
Console.WriteLine("file not complete: got len=" + fc.Length + " expected len=" + ArraySend.FileSize);
|
||||
return;
|
||||
}
|
||||
Array.Copy(fc, 0, fdst, 0, ArraySend.FileSize);
|
||||
File.WriteAllBytes(statics.zip_RXtempfilename, fdst); // the received file (still zipped) is here
|
||||
|
||||
// unzip received data and store result in file: unzipped_RXtempfilename
|
||||
ZipStorer zs = new ZipStorer();
|
||||
String fl = zs.unzipFile(statics.zip_RXtempfilename);
|
||||
if (fl != null)
|
||||
{
|
||||
// save file
|
||||
// fl is the filename of the file inside the zip file, so the originally zipped file
|
||||
// remove path to get just the filename
|
||||
int idx = fl.LastIndexOf('/');
|
||||
if (idx == -1) idx = fl.LastIndexOf('\\');
|
||||
String fdest = fl.Substring(idx + 1);
|
||||
fdest = statics.getHomePath("", fdest);
|
||||
// fdest is the file in the oscardata's user home directoty
|
||||
// remove old file with same name
|
||||
try { File.Delete(fdest); } catch { }
|
||||
// move the unzipped file to the final location
|
||||
File.Move(fl, fdest);
|
||||
filesize = statics.GetFileSize(fdest);
|
||||
StatusText = "unzip OK";
|
||||
// unzip received data and store result in file: unzipped_RXtempfilename
|
||||
ZipStorer zs = new ZipStorer();
|
||||
String fl = zs.unzipFile(statics.zip_RXtempfilename);
|
||||
if (fl != null)
|
||||
{
|
||||
// save file
|
||||
// fl is the filename of the file inside the zip file, so the originally zipped file
|
||||
// remove path to get just the filename
|
||||
int idx = fl.LastIndexOf('/');
|
||||
if (idx == -1) idx = fl.LastIndexOf('\\');
|
||||
String fdest = fl.Substring(idx + 1);
|
||||
fdest = statics.getHomePath("", fdest);
|
||||
// fdest is the file in the oscardata's user home directoty
|
||||
// remove old file with same name
|
||||
try { File.Delete(fdest); } catch { }
|
||||
// move the unzipped file to the final location
|
||||
File.Move(fl, fdest);
|
||||
filesize = statics.GetFileSize(fdest);
|
||||
StatusText = "unzip OK";
|
||||
}
|
||||
else
|
||||
StatusText = "unzip failed";
|
||||
|
||||
File.Delete(statics.zip_RXtempfilename);
|
||||
}
|
||||
else
|
||||
catch
|
||||
{
|
||||
StatusText = "unzip failed";
|
||||
|
||||
File.Delete(statics.zip_RXtempfilename);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ namespace oscardata
|
||||
static UdpQueue uq_iq = new UdpQueue();
|
||||
|
||||
public static int searchtimeout = 0;
|
||||
static String last_audiodevstring = "";
|
||||
|
||||
// Constructor
|
||||
// called when Udp is created by the main program
|
||||
@@ -96,11 +97,22 @@ namespace oscardata
|
||||
{
|
||||
statics.ModemIP = RemoteEndpoint.Address.ToString();
|
||||
searchtimeout = 0;
|
||||
// message b contains audio devices
|
||||
String s = statics.ByteArrayToString(b);
|
||||
// message b contains audio devices and init status
|
||||
statics.initAudioStatus = b[0];
|
||||
statics.initVoiceStatus = b[1];
|
||||
|
||||
String s = statics.ByteArrayToString(b,2);
|
||||
String[] sa1 = s.Split(new char[] { '^' });
|
||||
statics.AudioPBdevs = sa1[0].Split(new char[] { '~' });
|
||||
statics.AudioCAPdevs = sa1[1].Split(new char[] { '~' });
|
||||
|
||||
// has the device list changed ?
|
||||
if(s != last_audiodevstring)
|
||||
{
|
||||
statics.GotAudioDevices = 1;
|
||||
last_audiodevstring = s;
|
||||
}
|
||||
|
||||
if(statics.GotAudioDevices == 0)
|
||||
statics.GotAudioDevices = 1;
|
||||
}
|
||||
@@ -109,8 +121,9 @@ namespace oscardata
|
||||
if (rxtype == statics.udp_fft)
|
||||
{
|
||||
statics.PBfifousage = b[0];
|
||||
Byte[] b1 = new byte[b.Length - 1];
|
||||
Array.Copy(b, 1, b1, 0, b1.Length);
|
||||
statics.CAPfifousage = b[1];
|
||||
Byte[] b1 = new byte[b.Length - 2];
|
||||
Array.Copy(b, 2, b1, 0, b1.Length);
|
||||
uq_fft.Add(b1);
|
||||
}
|
||||
|
||||
|
||||