123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.IO;
- using System.IO.Ports;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using PaintDotNet.Base.CommTool;
- using PaintDotNet.Base.SettingModel;
- using StageController;
- using StageController.M3H;
- namespace PaintDotNet.Hardware
- {
- public class MotorizedLightDialog : Form
- {
- #region
- /// <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);
- }
- private void InitializeLanguageText()
- {
- this.groupBox1.Text = PdnResources.GetString("Menu.operation.text");
- this.btnClose.Text = PdnResources.GetString("Menu.File.Close.Text");
- this.btnCommit.Text = PdnResources.GetString("Menu.ensure.text");
- this.groupBox2.Text = PdnResources.GetString("Menu.Setting.Text");
- this.label2.Text = PdnResources.GetString("Menu.Baudrate.text") + ":";
- this.label1.Text = PdnResources.GetString("Menu.Theportnumber.Text") + ":";
- this.groupBox3.Text = PdnResources.GetString("Menu.Lightingsystem.Text");
- this.btnPolarized.Text = PdnResources.GetString("Menu.Polarizedlight.Text");
- this.btnBright.Text = PdnResources.GetString("Menu.Mingfield.Text");
- this.Text = PdnResources.GetString("Menu.HardwareControl.MotorizedLight.Text");
- }
- #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.groupBox1 = new System.Windows.Forms.GroupBox();
- this.btnClose = new System.Windows.Forms.Button();
- this.btnCommit = new System.Windows.Forms.Button();
- this.groupBox2 = new System.Windows.Forms.GroupBox();
- this.txtBaudRate = new System.Windows.Forms.TextBox();
- this.label2 = new System.Windows.Forms.Label();
- this.cmbPort = new System.Windows.Forms.ComboBox();
- this.label1 = new System.Windows.Forms.Label();
- this.groupBox3 = new System.Windows.Forms.GroupBox();
- this.btnBright = new System.Windows.Forms.Button();
- this.btnPolarized = new System.Windows.Forms.Button();
- this.groupBox1.SuspendLayout();
- this.groupBox2.SuspendLayout();
- this.groupBox3.SuspendLayout();
- this.SuspendLayout();
- //
- // groupBox1
- //
- this.groupBox1.Controls.Add(this.btnClose);
- this.groupBox1.Controls.Add(this.btnCommit);
- this.groupBox1.Location = new System.Drawing.Point(9, 8);
- this.groupBox1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
- this.groupBox1.Name = "groupBox1";
- this.groupBox1.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
- this.groupBox1.Size = new System.Drawing.Size(354, 80);
- this.groupBox1.TabIndex = 0;
- this.groupBox1.TabStop = false;
- this.groupBox1.Text = "操作";
- //
- // btnClose
- //
- this.btnClose.Location = new System.Drawing.Point(276, 28);
- this.btnClose.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
- this.btnClose.Name = "btnClose";
- this.btnClose.Size = new System.Drawing.Size(59, 29);
- this.btnClose.TabIndex = 1;
- this.btnClose.Text = "关闭";
- this.btnClose.UseVisualStyleBackColor = true;
- this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
- //
- // btnCommit
- //
- this.btnCommit.Location = new System.Drawing.Point(192, 28);
- this.btnCommit.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
- this.btnCommit.Name = "btnCommit";
- this.btnCommit.Size = new System.Drawing.Size(59, 29);
- this.btnCommit.TabIndex = 0;
- this.btnCommit.Text = "确定";
- this.btnCommit.UseVisualStyleBackColor = true;
- this.btnCommit.Click += new System.EventHandler(this.btnCommit_Click);
- //
- // groupBox2
- //
- this.groupBox2.Controls.Add(this.txtBaudRate);
- this.groupBox2.Controls.Add(this.label2);
- this.groupBox2.Controls.Add(this.cmbPort);
- this.groupBox2.Controls.Add(this.label1);
- this.groupBox2.Location = new System.Drawing.Point(9, 93);
- this.groupBox2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
- this.groupBox2.Name = "groupBox2";
- this.groupBox2.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
- this.groupBox2.Size = new System.Drawing.Size(354, 80);
- this.groupBox2.TabIndex = 1;
- this.groupBox2.TabStop = false;
- this.groupBox2.Text = "设置";
- //
- // txtBaudRate
- //
- this.txtBaudRate.Location = new System.Drawing.Point(251, 35);
- this.txtBaudRate.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
- this.txtBaudRate.Name = "txtBaudRate";
- this.txtBaudRate.Size = new System.Drawing.Size(76, 21);
- this.txtBaudRate.TabIndex = 3;
- this.txtBaudRate.Text = "9600";
- this.txtBaudRate.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtBaudRate_KeyPress);
- //
- // label2
- //
- this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(190, 39);
- this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(53, 12);
- this.label2.TabIndex = 2;
- this.label2.Text = "波特率:";
- //
- // cmbPort
- //
- this.cmbPort.FormattingEnabled = true;
- this.cmbPort.Location = new System.Drawing.Point(69, 37);
- this.cmbPort.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
- this.cmbPort.Name = "cmbPort";
- this.cmbPort.Size = new System.Drawing.Size(92, 20);
- this.cmbPort.TabIndex = 1;
- //
- // label1
- //
- this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(14, 39);
- this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(53, 12);
- this.label1.TabIndex = 0;
- this.label1.Text = "端口号:";
- //
- // groupBox3
- //
- this.groupBox3.Controls.Add(this.btnBright);
- this.groupBox3.Controls.Add(this.btnPolarized);
- this.groupBox3.Location = new System.Drawing.Point(9, 178);
- this.groupBox3.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
- this.groupBox3.Name = "groupBox3";
- this.groupBox3.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
- this.groupBox3.Size = new System.Drawing.Size(354, 80);
- this.groupBox3.TabIndex = 2;
- this.groupBox3.TabStop = false;
- this.groupBox3.Text = "照明方式";
- //
- // btnBright
- //
- this.btnBright.Location = new System.Drawing.Point(213, 41);
- this.btnBright.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
- this.btnBright.Name = "btnBright";
- this.btnBright.Size = new System.Drawing.Size(56, 23);
- this.btnBright.TabIndex = 1;
- this.btnBright.Text = "明场";
- this.btnBright.UseVisualStyleBackColor = true;
- this.btnBright.Click += new System.EventHandler(this.btnBright_Click);
- //
- // btnPolarized
- //
- this.btnPolarized.Location = new System.Drawing.Point(69, 41);
- this.btnPolarized.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
- this.btnPolarized.Name = "btnPolarized";
- this.btnPolarized.Size = new System.Drawing.Size(56, 23);
- this.btnPolarized.TabIndex = 0;
- this.btnPolarized.Text = "偏光";
- this.btnPolarized.UseVisualStyleBackColor = true;
- this.btnPolarized.Click += new System.EventHandler(this.btnPolarized_Click);
- //
- // MotorizedLightDialog
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(373, 267);
- this.Controls.Add(this.groupBox3);
- this.Controls.Add(this.groupBox2);
- this.Controls.Add(this.groupBox1);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
- this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
- this.MaximizeBox = false;
- this.MinimizeBox = false;
- this.Name = "MotorizedLightDialog";
- this.Text = "电动偏光";
- this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MotorizedLightDialog_FormClosing);
- this.groupBox1.ResumeLayout(false);
- this.groupBox2.ResumeLayout(false);
- this.groupBox2.PerformLayout();
- this.groupBox3.ResumeLayout(false);
- this.ResumeLayout(false);
- }
- #endregion
- private System.Windows.Forms.GroupBox groupBox1;
- private System.Windows.Forms.Button btnClose;
- private System.Windows.Forms.Button btnCommit;
- private System.Windows.Forms.GroupBox groupBox2;
- private System.Windows.Forms.TextBox txtBaudRate;
- private System.Windows.Forms.Label label2;
- private System.Windows.Forms.ComboBox cmbPort;
- private System.Windows.Forms.Label label1;
- private System.Windows.Forms.GroupBox groupBox3;
- private System.Windows.Forms.Button btnBright;
- private System.Windows.Forms.Button btnPolarized;
- #endregion
- private MotorizedLightModel m_motorizedLightModel;
- private string m_portName;
- private int m_baudRate;
- private bool m_isOpen;
- public MotorizedLightDialog()
- {
- InitializeComponent();
- InitializeLanguageText();
- GetSerialLst();
- InitializeData();
- }
- private void InitializeData()
- {
- m_motorizedLightModel = Startup.instance.motorizedLightModel;
- m_portName = m_motorizedLightModel.PortName;
- m_baudRate = m_motorizedLightModel.BaudRate;
- cmbPort.SelectedItem = m_portName;
- txtBaudRate.Text = m_baudRate.ToString();
- }
- private void Open()
- {
- if (this.cmbPort.Text.Trim().Length == 0)
- {
- MessageBox.Show(PdnResources.GetString("Menu.Theportnumbercannobeempty.Text"));
- return;
- }
- if (this.txtBaudRate.Text.Trim().Length == 0)
- {
- MessageBox.Show(PdnResources.GetString("Menu.Baudrempty.text"));
- return;
- }
- try
- {
- m_portName = this.cmbPort.Text.Trim();
- m_baudRate = int.Parse(this.txtBaudRate.Text.Trim());
- //m_axisController.Open(m_portName, m_baudRate, Parity.None, 8, StopBits.One);
- m_isOpen = true;
- }
- catch (Exception ex)
- {
- m_isOpen = false;
- // 串口无法打开时,打开参数设置界面
- MessageBox.Show(ex.Message);
- }
- }
- private void GetSerialLst()
- {
- //清除cmbPort显示
- cmbPort.SelectedIndex = -1;
- cmbPort.Items.Clear();
- //获取串口列表
- string[] serialLst = SerialPort.GetPortNames();
- if (serialLst.Length > 0)
- {
- //取串口列表进行排序
- Array.Sort(serialLst);
- //将串口列表输出到comboBox
- cmbPort.Items.AddRange(serialLst);
- cmbPort.SelectedIndex = 0;
- }
- }
- public const int WM_DEVICE_CHANGE = 0x219; //设备改变
- public const int DBT_DEVICEARRIVAL = 0x8000; //设备插入
- public const int DBT_DEVICE_REMOVE_COMPLETE = 0x8004; //设备移除
- //消息处理
- protected override void WndProc(ref Message m)
- {
- switch (m.Msg) //判断消息类型
- {
- case WM_DEVICE_CHANGE: //设备改变消息
- {
- GetSerialLst(); //设备改变时重新获取串口列表
- }
- break;
- }
- base.WndProc(ref m);
- }
- private void CallbackDataReceived(CommandBase command, Result result, string msg)
- {
- //m_axisController.DataReceived -= new DataReceiveEvent(CallbackDataReceived);
- if (this == null || this.IsDisposed)
- {
- return;
- }
- switch (result)
- {
- case Result.ERR_PARSE:
- MessageBox.Show(PdnResources.GetString("Menu.Replydataarsingerror.Text")+":" + msg);
- return;
- case Result.ERR_TIMEOUT:
- MessageBox.Show(PdnResources.GetString("Menu.Theconsoleresponsetimeout.Text"));
- return;
- }
- if (command is CommandMotorizedLight)
- {
- MessageBox.Show(PdnResources.GetString("Menu.Successfullysaved.text"));
- }
- }
- private void btnClose_Click(object sender, EventArgs e)
- {
- this.Close();
- }
- private void MotorizedLightDialog_FormClosing(object sender, FormClosingEventArgs e)
- {
- }
- private void btnCommit_Click(object sender, EventArgs e)
- {
- this.Open();
- if (m_isOpen)
- {
- m_motorizedLightModel.PortName = m_portName;
- m_motorizedLightModel.BaudRate = m_baudRate;
- string stageModelXml = XmlSerializeHelper.XmlSerialize<MotorizedLightModel>(m_motorizedLightModel);
- string filePath = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\MotorizedLightModel.xml";
- if (!FileOperationHelper.WriteStringToFile(stageModelXml, filePath, FileMode.Create))
- {
- MessageBox.Show(PdnResources.GetString("Menu.Savefailed.text"));
- }
- else
- {
- MessageBox.Show(PdnResources.GetString("Menu.Successfullysaved.text"));
- }
- }
- }
- private void txtBaudRate_KeyPress(object sender, KeyPressEventArgs e)
- {
- if (e.KeyChar != 8 && !Char.IsDigit(e.KeyChar))
- {
- e.Handled = true;
- return;
- }
- }
- private void btnPolarized_Click(object sender, EventArgs e)
- {
- this.Open();
- if (m_isOpen)
- {
- //m_axisController.DataReceived += new DataReceiveEvent(CallbackDataReceived);
- //CommandMotorizedLight command = new CommandMotorizedLight(LightType.POLARIZED);
- //m_axisController.AddCommand(command);
- }
- }
- private void btnBright_Click(object sender, EventArgs e)
- {
- this.Open();
- if (m_isOpen)
- {
- //m_axisController.DataReceived += new DataReceiveEvent(CallbackDataReceived);
- //CommandMotorizedLight command = new CommandMotorizedLight(LightType.BRIGHT);
- //m_axisController.AddCommand(command);
- }
- }
- }
- }
|