-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathForm1.cs
More file actions
130 lines (117 loc) · 4.18 KB
/
Form1.cs
File metadata and controls
130 lines (117 loc) · 4.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
using System;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.Windows.Forms;
namespace PuttyComSelect
{
public partial class Form1 : Form
{
readonly List<Port> ports = new List<Port>();
readonly Timer timer = new Timer();
public Form1()
{
InitializeComponent();
timer.Interval = 1000;
timer.Tick += AddComPort;
timer.Start();
// Load user settings
portSpeed.Text = Properties.Settings.Default.Speed.ToString();
}
private void AddComPort(object sender, EventArgs e)
{
var updated = false;
var currentPorts = new List<string>(System.IO.Ports.SerialPort.GetPortNames());
// Add new ports that are not already in the list
foreach (var portName in currentPorts)
{
if (!ports.Any(p => p.name == portName))
{
updated = true;
ports.Add(new Port(portName));
}
}
// Remove ports that are no longer available
var portsToRemvoe = ports.Where(p => !currentPorts.Contains(p.name)).ToList();
if (portsToRemvoe.Count > 0)
{
ports.RemoveAll(p => !currentPorts.Contains(p.name));
updated = true;
}
// Update the ComboBox with the current ports
if (updated)
{
RefreshList();
}
}
private void RefreshList()
{
portsList.Items.Clear();
foreach (var port in ports.OrderBy(p => p.since).Reverse())
{
portsList.Items.Add(port.PortView);
}
}
private void SetPuttyClick(object sender, EventArgs e)
{
var puttyPath = Properties.Settings.Default.PuttyPath;
var speed = Properties.Settings.Default.Speed;
if (portsList.SelectedItems.Count == 0)
{
MessageBox.Show("Please select a port from the list.", "No Port Selected");
return;
}
if (string.IsNullOrEmpty(puttyPath))
{
MessageBox.Show("Please set the path to PuTTY in the settings.", "PuTTY Path Not Set");
return;
}
if (speed <= 0)
{
MessageBox.Show("Please enter a valid port speed.", "Invalid Port Speed");
return;
}
var selectedPort = portsList.SelectedItems[0].Text;
ProcessStartInfo startInfo = new ProcessStartInfo
{
FileName = puttyPath,
Arguments = $"-serial {selectedPort} -sercfg {speed},8,n,1,N",
UseShellExecute = false
};
Process.Start(startInfo);
}
private void LaunchPuttyClick(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "c:\\program files";
openFileDialog1.Filter = "Executable files (*.exe)|*.exe|All files (*.*)|*.*";
openFileDialog1.FilterIndex = 0;
openFileDialog1.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
Properties.Settings.Default.PuttyPath = openFileDialog1.FileName;
Properties.Settings.Default.Save();
}
}
private void portSpeed_TextChanged(object sender, EventArgs e)
{
try
{
var speed = int.Parse(portSpeed.Text);
Properties.Settings.Default.Speed = speed;
Properties.Settings.Default.Save();
}
catch {
portSpeed.Text = Properties.Settings.Default.Speed.ToString();
MessageBox.Show("Please enter a valid port speed.", "Invalid Input");
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void info_Click(object sender, EventArgs e)
{
}
}
}