ソースを参照

Fix Bug on focus in middle area

develop
Flo Smilari 1年前
コミット
5b57735156

バイナリ
.vs/FSRemotePowerSwitch/v16/.suo ファイルの表示


+ 110
- 53
Form1.cs ファイルの表示

@@ -6,8 +6,10 @@ using System.Runtime.CompilerServices;
using System.Threading;
using System.Windows.Forms;
namespace FSRemotePowerSwitch {
public partial class MainForm : Form {
namespace FSRemotePowerSwitch
{
public partial class MainForm : Form
{
private static string SETTINGS_FILE = "Settings.txt";
@@ -15,7 +17,8 @@ namespace FSRemotePowerSwitch {
private static string EXP_FIRMWARE_VER = "ExpectedFirmwareVersion";
private static bool connected;
private static Boolean Connected {
private static Boolean Connected
{
[MethodImpl(MethodImplOptions.Synchronized)]
get { return connected; }
[MethodImpl(MethodImplOptions.Synchronized)]
@@ -23,7 +26,8 @@ namespace FSRemotePowerSwitch {
}
private static bool requestPending;
private static Boolean RequestPending {
private static Boolean RequestPending
{
[MethodImpl(MethodImplOptions.Synchronized)]
get { return requestPending; }
[MethodImpl(MethodImplOptions.Synchronized)]
@@ -33,7 +37,8 @@ namespace FSRemotePowerSwitch {
private Boolean initializing;
private string firmwareVersion;
public MainForm() {
public MainForm()
{
initializing = false;
Connected = false;
RequestPending = false;
@@ -42,15 +47,19 @@ namespace FSRemotePowerSwitch {
initializeSerialPortComboBox();
}
private void onFormShown(object sender, EventArgs e) {
private void onFormShown(object sender, EventArgs e)
{
connect();
}
private void connect() {
if (serialPort.IsOpen) {
private void connect()
{
if (serialPort.IsOpen)
{
serialPort.Close();
}
if (serialPortsCboBox.SelectedItem != null) {
if (serialPortsCboBox.SelectedItem != null)
{
Application.UseWaitCursor = true;
serialPort.PortName = serialPortsCboBox.SelectedItem.ToString();
serialPort.Open();
@@ -58,7 +67,9 @@ namespace FSRemotePowerSwitch {
Thread waitThread = new Thread(Wait);
waitThread.Start();
} else {
}
else
{
initStatusLbl.Text = "Kein Port verfügbar!";
connectedSerialPortLbl.Text = "Port: ";
initProgressBar.Style = ProgressBarStyle.Continuous;
@@ -66,17 +77,22 @@ namespace FSRemotePowerSwitch {
}
}
private void Wait() {
private void Wait()
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
while (stopwatch.ElapsedMilliseconds < 3000) {
while (stopwatch.ElapsedMilliseconds < 3000)
{
Thread.Sleep(50);
if (Connected) {
if (Connected)
{
break;
}
}
if (!Connected) {
BeginInvoke(new EventHandler(delegate {
if (!Connected)
{
BeginInvoke(new EventHandler(delegate
{
initStatusLbl.Text = "Zeitüberschreitung!";
connectedSerialPortLbl.Text = "Port: ";
initProgressBar.Style = ProgressBarStyle.Continuous;
@@ -88,10 +104,12 @@ namespace FSRemotePowerSwitch {
Cursor.Position = Cursor.Position;
}
private void initializeSerialPortComboBox() {
private void initializeSerialPortComboBox()
{
initializing = true;
string[] ports = SerialPort.GetPortNames();
foreach (string port in ports) {
foreach (string port in ports)
{
serialPortsCboBox.Items.Add(port);
}
PropertiesHandler serialPortCfg = new PropertiesHandler(SETTINGS_FILE);
@@ -101,24 +119,30 @@ namespace FSRemotePowerSwitch {
}
private void onSerialPortsCboBoxSelectedIndexChanged(object sender, EventArgs e) {
private void onSerialPortsCboBoxSelectedIndexChanged(object sender, EventArgs e)
{
PropertiesHandler serialPortCfg = new PropertiesHandler(SETTINGS_FILE);
serialPortCfg.set(SERIALPORT_KEY, serialPortsCboBox.SelectedItem);
serialPortCfg.Save();
if (!initializing) {
if (!initializing)
{
reconnectBtn.Visible = false;
connect();
}
}
private void onSerialPortDataReceived(object sender, SerialDataReceivedEventArgs e) {
private void onSerialPortDataReceived(object sender, SerialDataReceivedEventArgs e)
{
string s = readSerialPortData((SerialPort)sender);
try {
try
{
Message msg = JsonConvert.DeserializeObject<Message>(s);
if (msg.Sender.Equals(Message.CMD_SENDER_AN) && msg.Cmd.Equals(Message.CMD_VER) && msg.Val.Equals(firmwareVersion)) {
if (msg.Sender.Equals(Message.CMD_SENDER_AN) && msg.Cmd.Equals(Message.CMD_VER) && msg.Val.Equals(firmwareVersion))
{
RequestPending = false;
BeginInvoke(new EventHandler(delegate {
BeginInvoke(new EventHandler(delegate
{
sendRelayStatusCmd();
Connected = true;
initStatusLbl.Text = "Verbunden";
@@ -131,15 +155,21 @@ namespace FSRemotePowerSwitch {
powerSwitchButton.Enabled = true;
statusTimer.Enabled = true;
}));
} else if (msg.Sender.Equals(Message.CMD_SENDER_AN) && msg.Cmd.Equals(Message.CMD_STATUS_RELAY)) {
}
else if (msg.Sender.Equals(Message.CMD_SENDER_AN) && msg.Cmd.Equals(Message.CMD_STATUS_RELAY))
{
RequestPending = false;
BeginInvoke(new EventHandler(delegate {
if (msg.Val.Equals(Message.CMD_VAL_ON)) {
BeginInvoke(new EventHandler(delegate
{
if (msg.Val.Equals(Message.CMD_VAL_ON))
{
powerStateLed.BackgroundImage = FSRemotePowerSwitch.Properties.Resources.blue_led_on;
powerSwitchButton.CheckStateChanged -= onSwitchCheckStateChanged;
powerSwitchButton.Checked = true;
powerSwitchButton.CheckStateChanged += onSwitchCheckStateChanged;
} else if (msg.Val.Equals(Message.CMD_VAL_OFF)) {
}
else if (msg.Val.Equals(Message.CMD_VAL_OFF))
{
powerStateLed.BackgroundImage = FSRemotePowerSwitch.Properties.Resources.blue_led_off;
powerSwitchButton.CheckStateChanged -= onSwitchCheckStateChanged;
powerSwitchButton.Checked = false;
@@ -147,8 +177,10 @@ namespace FSRemotePowerSwitch {
}
}));
}
} catch (Exception ex) when (ex is Newtonsoft.Json.JsonReaderException ||
ex is Newtonsoft.Json.JsonSerializationException) {
}
catch (Exception ex) when (ex is Newtonsoft.Json.JsonReaderException ||
ex is Newtonsoft.Json.JsonSerializationException)
{
RequestPending = false;
initStatusLbl.Text = "Json Deserialize Exception!";
serialPort.DiscardInBuffer();
@@ -157,8 +189,10 @@ namespace FSRemotePowerSwitch {
}
}
private void onOpenBtnClick(object sender, EventArgs e) {
if (serialPort.PortName != "COM1" && !serialPort.IsOpen) {
private void onOpenBtnClick(object sender, EventArgs e)
{
if (serialPort.PortName != "COM1" && !serialPort.IsOpen)
{
serialPort.Open();
openBtn.Enabled = false;
closeBtn.Enabled = true;
@@ -166,8 +200,10 @@ namespace FSRemotePowerSwitch {
}
}
private void onCloseBtnClick(object sender, EventArgs e) {
if (serialPort.IsOpen) {
private void onCloseBtnClick(object sender, EventArgs e)
{
if (serialPort.IsOpen)
{
serialPort.Close();
openBtn.Enabled = true;
closeBtn.Enabled = false;
@@ -175,67 +211,84 @@ namespace FSRemotePowerSwitch {
}
}
private void onReconnectBtnClick(object sender, EventArgs e) {
private void onReconnectBtnClick(object sender, EventArgs e)
{
reconnectBtn.Visible = false;
connect();
}
private void onSwitchCheckStateChanged(object sender, EventArgs e) {
if (powerSwitchButton.Checked) {
private void onSwitchCheckStateChanged(object sender, EventArgs e)
{
if (powerSwitchButton.Checked)
{
sendRelayPowerCmd(Message.CMD_VAL_ON);
} else {
}
else
{
sendRelayPowerCmd(Message.CMD_VAL_OFF);
}
}
private void onWebCamPowerSwitchCheckStateChanged(object sender, EventArgs e) {
if (webCamRotatorPowerSwitch.Checked) {
private void onWebCamPowerSwitchCheckStateChanged(object sender, EventArgs e)
{
if (webCamRotatorPowerSwitch.Checked)
{
sendWebCamPowerCmd(Message.CMD_VAL_ON);
} else {
}
else
{
sendWebCamPowerCmd(Message.CMD_VAL_OFF);
}
}
private String readSerialPortData(SerialPort serialPort) {
private String readSerialPortData(SerialPort serialPort)
{
string data = "";
while (serialPort.BytesToRead > 0) {
while (serialPort.BytesToRead > 0)
{
data += serialPort.ReadExisting();
Thread.Sleep(50);
}
return data;
}
private void sendVersionCmd() {
private void sendVersionCmd()
{
Message msg = new Message();
msg.Sender = Message.CMD_SENDER_PC;
msg.Cmd = Message.CMD_VER;
msg.Val = null;
string msJson = JsonConvert.SerializeObject(msg);
if (serialPort.IsOpen && !RequestPending) {
if (serialPort.IsOpen && !RequestPending)
{
serialPort.Write(msJson);
RequestPending = true;
}
}
private void sendRelayPowerCmd(string value) {
private void sendRelayPowerCmd(string value)
{
Message msg = new Message();
msg.Sender = Message.CMD_SENDER_PC;
msg.Cmd = Message.CMD_POWER_RELAY;
msg.Val = value;
string msJson = JsonConvert.SerializeObject(msg);
if (serialPort.IsOpen && !RequestPending) {
if (serialPort.IsOpen && !RequestPending)
{
serialPort.Write(msJson);
RequestPending = true;
}
}
private void sendRelayStatusCmd() {
private void sendRelayStatusCmd()
{
Message msg = new Message();
msg.Sender = Message.CMD_SENDER_PC;
msg.Cmd = Message.CMD_STATUS_RELAY;
msg.Val = null;
string msJson = JsonConvert.SerializeObject(msg);
if (serialPort.IsOpen && !RequestPending) {
if (serialPort.IsOpen && !RequestPending)
{
serialPort.Write(msJson);
RequestPending = true;
}
@@ -283,17 +336,21 @@ namespace FSRemotePowerSwitch {
}
}
private void onStatusTimerTick(object sender, EventArgs e) {
private void onStatusTimerTick(object sender, EventArgs e)
{
sendRelayStatusCmd();
}
private void onMainFormClosing(object sender, FormClosingEventArgs e) {
private void onMainFormClosing(object sender, FormClosingEventArgs e)
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
while (RequestPending && stopwatch.ElapsedMilliseconds < 2000) {
while (RequestPending && stopwatch.ElapsedMilliseconds < 2000)
{
Thread.Sleep(50);
}
if (serialPort.IsOpen) {
if (serialPort.IsOpen)
{
serialPort.DiscardInBuffer();
serialPort.DiscardOutBuffer();
serialPort.Close();
@@ -305,7 +362,7 @@ namespace FSRemotePowerSwitch {
{
rotatorActValue.Text = webCamRotator.Value.ToString();
}
private void onSetWebCamZero(object sender, EventArgs e)
{
sendWebCamZeroCmd();

バイナリ
bin/Debug/FSRemotePowerSwitch.exe ファイルの表示


バイナリ
bin/Debug/FSRemotePowerSwitch.pdb ファイルの表示


バイナリ
bin/Debug/KnobControl.dll ファイルの表示


バイナリ
bin/Debug/KnobControl.pdb ファイルの表示


バイナリ
obj/Debug/DesignTimeResolveAssemblyReferences.cache ファイルの表示


バイナリ
obj/Debug/FSRemotePowerSwitch.csproj.GenerateResource.cache ファイルの表示


バイナリ
obj/Debug/FSRemotePowerSwitch.exe ファイルの表示


バイナリ
obj/Debug/FSRemotePowerSwitch.pdb ファイルの表示


読み込み中…
キャンセル
保存