Ejemplo n.º 1
0
        public MainWindowViewModel()
        {
            HelpModel = new HelpModel();
            HelpModel.HelpDataContext();

            RecvModel = new RecvModel();
            RecvModel.RecvDataContext();

            SendModel = new SendModel();
            SendModel.SendDataContext();

            SerialPortModel = new SerialPortModel();
            SerialPortModel.SerialPortDataContext();

            DepictInfo = "串行端口调试助手";

            TimerModel = new TimerModel();
            TimerModel.TimerDataContext();

            HexSend  = false;
            AutoSend = false;
            InitAutoSendTimer();

            SaveRecv = false;
        }
Ejemplo n.º 2
0
 internal bool Close(SerialPortModel model)
 {
     if (_serials.TryGetValue(model.SelectSerialPort, out SerialPort serialPort))
     {
         model.IsOpened = serialPort.TryClose();
         return(serialPort.IsOpen);
     }
     return(false);
 }
        //static private Dictionary<string, SerialPort> serials = new Dictionary<string, SerialPort>();
        //static private IHubContext/*<ChatHub>*/ context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();

        // GET: SerialPort
        public ActionResult SerialPort()
        {
            ViewBag.Title = Resources.SerialPort.Serial_Port_Web_Assistant;

            var model = new SerialPortModel
            {
                SelectBaudRate   = 19200,
                QuickCommandList = GetQuickCommandList(),
            };

            return(View(model));
        }
Ejemplo n.º 4
0
        private SerialPort CreateSerialPort(SerialPortModel model)
        {
            var serialPort = new SerialPort
            {
                PortName = model.SelectSerialPort,
                BaudRate = model.SelectBaudRate,
                DataBits = model.SelectDataBits,
                Parity   = model.GetParity(),
                StopBits = model.GetStopBits()
            };

            serialPort.DataReceived += SerialPort_DataReceived;

            return(serialPort);
        }
Ejemplo n.º 5
0
        internal bool Open(SerialPortModel model)
        {
            if (string.IsNullOrEmpty(model.SelectSerialPort))
            {
                return(false);
            }

            if (!_serials.TryGetValue(model.SelectSerialPort, out SerialPort serialPort))
            {
                serialPort = CreateSerialPort(model);
                _serials[model.SelectSerialPort] = serialPort;
            }
            model.IsOpened = serialPort.TryOpen();
            return(serialPort.IsOpen);
        }
Ejemplo n.º 6
0
        internal void SendMessage(SerialPortModel model)
        {
            if (string.IsNullOrEmpty(model.Send))
            {
                return;
            }

            if (_serials.TryGetValue(model.SelectSerialPort, out SerialPort serialPort))
            {
                if (serialPort.IsOpen)
                {
                    var msg = Encoding.Default.GetBytes(model.Send);
                    serialPort.Write(msg, 0, msg.Length);
                }
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 初始化
        /// </summary>
        public bool Init()
        {
            string portName = _getSerialPortNames();

            if (string.IsNullOrEmpty(portName))
            {
                MessageBox.Show("串口名不能为空!");
                return(false);
            }
            else
            {
                //实例化一个通信Model
                model = new SerialPortModel(portName, 9600, 8, "None", "1");
                return(true);
            }
        }
 /// <summary>
 /// 初始化
 /// </summary>
 public PageBalanceExamineViewModel()
 {
     try
     {
         //下一步隐藏
         _NextBtnVisibility = Visibility.Hidden;
         //赋值查询到的可用串口名
         PortNames = ManagerPlant.serialPortManager.GetSerialPortNames();
         //绑定串口Model
         SerialPortModel = ManagerPlant.serialPortManager.model;
         TianPingCopy    = "仁-设(仪)-01";
         //初始化事件对象
         if (m_UIController == null)
         {
             m_UIController = new PageBalanceExamineViewController(this);
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine("[ ViewModel Class Init Error ] " + ex.Message);
     }
 }
Ejemplo n.º 9
0
 public SettingsController(JsonHandler jsonHandler, SerialPortModel serialPortModel, LaserSettings settings)
 {
     _jsonHandler     = jsonHandler;
     _serialPortModel = serialPortModel;
     _settings        = settings;
 }
Ejemplo n.º 10
0
        public bool OpenSP()
        {
            if (SPserialPort != null && SPserialPort.IsOpen)
            {
                return(CloseSP());
            }

            try
            {
                SPserialPort.PortName = SerialPortModel.SPPort;
                SPserialPort.BaudRate = SerialPortModel.SPBaudRate;
                SPserialPort.DataBits = SerialPortModel.SPDataBits;
                SPserialPort.StopBits = SerialPortModel.GetStopBits(SerialPortModel.SPStopBits.ToString());
                SPserialPort.Parity   = SerialPortModel.GetParity(SerialPortModel.SPParity.ToString());

                SPserialPort.WriteBufferSize = 1048576;   /* 输出缓冲区的大小为1048576字节 = 1MB */
                SPserialPort.ReadBufferSize  = 2097152;   /* 输入缓冲区的大小为2097152字节 = 2MB */

                /* 字节编码 */
                if (SerialPortModel.ASCIIEnable)
                {
                    SPserialPort.Encoding = System.Text.Encoding.ASCII;
                }
                else if (SerialPortModel.UTF8Enable)
                {
                    SPserialPort.Encoding = System.Text.Encoding.UTF8;
                }
                else if (SerialPortModel.UTF16Enable)
                {
                    SPserialPort.Encoding = System.Text.Encoding.Unicode;
                }
                else if (SerialPortModel.UTF32Enable)
                {
                    SPserialPort.Encoding = System.Text.Encoding.UTF32;
                }

                /* 发送请求(RTS)信号 */
                if (SerialPortModel.RtsEnable)
                {
                    SPserialPort.RtsEnable = true;
                }
                else
                {
                    SPserialPort.RtsEnable = false;
                }

                /* 数据终端就绪(DTR)信号 */
                if (SerialPortModel.DtrEnable)
                {
                    SPserialPort.DtrEnable = true;
                }
                else
                {
                    SPserialPort.DtrEnable = false;
                }

                /* 流控制 */
                if (SerialPortModel.NoneEnable)
                {
                    SPserialPort.Handshake = Handshake.None;
                }
                else if (SerialPortModel.RequestToSendEnable)
                {
                    SPserialPort.Handshake = Handshake.RequestToSend;
                }
                else if (SerialPortModel.XOnXOffEnable)
                {
                    SPserialPort.Handshake = Handshake.XOnXOff;
                }
                else if (SerialPortModel.RequestToSendXOnXOffEnable)
                {
                    SPserialPort.Handshake = Handshake.RequestToSendXOnXOff;
                }

                /* 数据接收事件 */
                SPserialPort.DataReceived += new SerialDataReceivedEventHandler(SerialPort_DataReceived);

                /* 信号状态事件 */
                SPserialPort.PinChanged += new SerialPinChangedEventHandler(SerialPortModel.SerialPort_PinChanged);

                SPserialPort.Open();

                if (SPserialPort.IsOpen)
                {
                    SerialPortModel.SPBrush     = Brushes.GreenYellow;
                    SerialPortModel.OpenCloseSP = "关闭串口";
                    DepictInfo = string.Format("成功打开串行端口{0}、波特率{1}、数据位{2}、停止位{3}、校验位{4}",
                                               SPserialPort.PortName, SPserialPort.BaudRate.ToString(), SPserialPort.DataBits.ToString(),
                                               SPserialPort.StopBits.ToString(), SPserialPort.Parity.ToString());

                    SerialPortModel.SPPortEnable     = false;
                    SerialPortModel.SPBaudRateEnable = false;
                    SerialPortModel.SPDataBitsEnable = false;
                    SerialPortModel.SPStopBitsEnable = false;
                    SerialPortModel.SPParityEnable   = false;

                    return(true);
                }
                else
                {
                    DepictInfo = "串行端口打开失败";

                    return(false);
                }
            }
            catch (UnauthorizedAccessException e)
            {
                DepictInfo = string.Format("[{0}]端口访问被拒绝", e.HResult.ToString("X"));

                return(false);
            }
            catch (ArgumentOutOfRangeException e)
            {
                DepictInfo = string.Format("串口属性{0}是非法的", e.ParamName);

                return(false);
            }
            catch (ArgumentException e)
            {
                DepictInfo = string.Format("串口{0}不支持", e.ParamName);

                return(false);
            }
            catch (IOException e)
            {
                DepictInfo = string.Format("[{0}]端口处于无效状态", e.HResult.ToString("X"));

                return(false);
            }
            catch (InvalidOperationException e)
            {
                DepictInfo = string.Format("[{0}]指定端口已经打开", e.HResult.ToString("X"));

                return(false);
            }
        }
        public MainWindow()
        {
            InitializeComponent();

            Port = new SerialPortModel();

            Port.DataReceived += new SerialDataReceivedEventHandler(Port_DataReceived);

            string[] DelayTimes = { "0", "500", "1000", "1500", "2000", "3000", "4000", "5000", "6000", "7000", "8000", "9000", "10000" };

            cmbSend1.ItemsSource = DelayTimes;
            cmbSend2.ItemsSource = DelayTimes;

            this.DataContext = this;

            cmbPortName.SelectedIndex = Properties.Settings.Default.PortName;
            cmbBaudRate.SelectedIndex = Properties.Settings.Default.BaudRate;
            txtSend1.Text = Properties.Settings.Default.Send1;
            txtSend2.Text = Properties.Settings.Default.Send2;

            btnOpenPort.Click += delegate (object sender, RoutedEventArgs e)
            {
                if ((bool)btnOpenPort.IsChecked)
                {
                    Port.PortName = (string)cmbPortName.SelectedItem;
                    Port.BaudRate = Convert.ToInt32(cmbBaudRate.SelectedItem);

                    try
                    {
                        Port.Open();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                        btnOpenPort.IsChecked = false;
                        return;
                    }

                    cmbBaudRate.IsEnabled = false;
                    cmbDataBit.IsEnabled = false;
                    cmbPortName.IsEnabled = false;
                    cmbParity.IsEnabled = false;
                    cmbStopBit.IsEnabled = false;

                }
                else
                {
                    Port.Close();

                    cmbBaudRate.IsEnabled = true;
                    cmbDataBit.IsEnabled = true;
                    cmbPortName.IsEnabled = true;
                    cmbParity.IsEnabled = true;
                    cmbStopBit.IsEnabled = true;
                }
            };

            btnClearText.Click += delegate (object sender, RoutedEventArgs e)
            {
                //txtRecData.Clear();
                txtRecData.Document.Blocks.Clear();
            };

            btnClearZero.Click += delegate (object sender, RoutedEventArgs e)
            {
                Port.ClearCounter();
            };

            btnSave.Click += delegate (object sender, RoutedEventArgs e)
            {
                SaveFileDialog sfd = new SaveFileDialog()
                {
                    Filter = "文本|*.log"
                };
                if (sfd.ShowDialog() == true)
                {

                    //File.WriteAllText(sfd.FileName, txtRecData.Text);
                    //using (FileStream stream = File.OpenWrite(sfd.FileName))
                    //{
                    //    TextRange documentTextRange = new TextRange(txtRecData.Document.ContentStart, txtRecData.Document.ContentEnd);
                    //    string dataFormat = DataFormats.Text;
                    //    string ext = System.IO.Path.GetExtension(sfd.FileName);
                    //    if (String.Compare(ext, ".xaml", true) == 0)
                    //    {
                    //        dataFormat = DataFormats.Xaml;
                    //    }
                    //    else if (String.Compare(ext, ".rtf", true) == 0)
                    //    {
                    //        dataFormat = DataFormats.Rtf;
                    //    }
                    //    documentTextRange.Save(stream, dataFormat);
                    //}

                    TextRange textRange = new TextRange(txtRecData.Document.ContentStart, txtRecData.Document.ContentEnd);
                    File.WriteAllText(sfd.FileName, textRange.Text);
                }
            };

            btnSend1.Click += delegate (object sender, RoutedEventArgs e)
            {
                SendData(txtSend1.Text);
            };

            cmbSend1.SelectionChanged += delegate (object sender, SelectionChangedEventArgs e)
            {
                int time = Convert.ToInt32(cmbSend1.SelectedValue);
                if (time > 0)
                {
                    sendTimer1.Interval = new TimeSpan(time * 10000);
                    sendTimer1.Start();
                }
                else
                {
                    sendTimer1.Stop();
                }
            };

            sendTimer1.Tick += delegate (object sender, EventArgs e)
            {
                SendData(txtSend1.Text);
            };

            btnSend2.Click += delegate (object sender, RoutedEventArgs e)
            {
                SendData(txtSend2.Text);
            };

            cmbSend2.SelectionChanged += delegate (object sender, SelectionChangedEventArgs e)
            {
                int time = Convert.ToInt32(cmbSend2.SelectedValue);
                if (time > 0)
                {
                    sendTimer2.Interval = new TimeSpan(time * 10000);
                    sendTimer2.Start();
                }
                else
                {
                    sendTimer2.Stop();
                }
            };

            sendTimer2.Tick += delegate (object sender, EventArgs e)
            {
                SendData(txtSend2.Text);
            };

            txtRecData.TextChanged += delegate (object sender, TextChangedEventArgs e)
            {
                txtRecData.ScrollToEnd();
            };

            this.Closing += delegate (object sender, System.ComponentModel.CancelEventArgs e)
            {
                Properties.Settings.Default.PortName = cmbPortName.SelectedIndex;
                Properties.Settings.Default.BaudRate = cmbBaudRate.SelectedIndex;
                Properties.Settings.Default.Send1 = txtSend1.Text;
                Properties.Settings.Default.Send2 = txtSend2.Text;
                Properties.Settings.Default.Save();
            };

            this.Activated += delegate (object sender, EventArgs e)
            {
                string str = Clipboard.GetText();
                Clipboard.SetText(str.Replace("\r\n", ""));
            };
        }
Ejemplo n.º 12
0
 public void SendMessage(SerialPortModel model)
 {
     SerialPort.SendMessage(model);
 }
Ejemplo n.º 13
0
 public bool Close(SerialPortModel model)
 {
     return(SerialPort.Close(model));
 }
Ejemplo n.º 14
0
 public bool Open(SerialPortModel model)
 {
     return(SerialPort.Open(model));
 }
Ejemplo n.º 15
0
 public Laser(SerialPortModel serialPortModel, LaserSettings settings)
 {
     _serialPortModel = serialPortModel;
     _settings        = settings;
 }
Ejemplo n.º 16
0
 /// <summary>
 /// 初始化
 /// </summary>
 public SerialPortManager()
 {
     //实例化一个通信Model
     model = new SerialPortModel();
 }