public void ApplyParam(SerialTerminalParam param, SerialTerminalSettings settings)
        {
            _terminalParam    = param == null? new SerialTerminalParam() : param;
            _terminalSettings = settings == null?SerialPortUtil.CreateDefaultSerialTerminalSettings(_terminalParam.Port) : settings;

            _portBox.SelectedIndex = _terminalParam.Port - 1; //COM1からなので
            //これらのSelectedIndexの設定はコンボボックスに設定した項目順に依存しているので注意深くすること
            _baudRateBox.SelectedIndex    = _baudRateBox.FindStringExact(_terminalSettings.BaudRate.ToString());
            _dataBitsBox.SelectedIndex    = _terminalSettings.ByteSize == 7? 0 : 1;
            _parityBox.SelectedIndex      = (int)_terminalSettings.Parity;
            _stopBitsBox.SelectedIndex    = (int)_terminalSettings.StopBits;
            _flowControlBox.SelectedIndex = (int)_terminalSettings.FlowControl;

            _encodingBox.SelectedIndex  = (int)_terminalSettings.Encoding;
            _newLineBox.SelectedIndex   = _newLineBox.FindStringExact(_terminalSettings.TransmitNL.ToString());
            _localEchoBox.SelectedIndex = _terminalSettings.LocalEcho? 1 : 0;

            _transmitDelayPerCharBox.Text = _terminalSettings.TransmitDelayPerChar.ToString();
            _transmitDelayPerLineBox.Text = _terminalSettings.TransmitDelayPerLine.ToString();

            IAutoExecMacroParameter autoExecParams = param.GetAdapter(typeof(IAutoExecMacroParameter)) as IAutoExecMacroParameter;

            if (autoExecParams != null && SerialPortPlugin.Instance.MacroEngine != null)
            {
                _autoExecMacroPathBox.Text = (autoExecParams.AutoExecMacroPath != null) ? autoExecParams.AutoExecMacroPath : String.Empty;
            }
            else
            {
                _autoExecMacroPathLabel.Enabled    = false;
                _autoExecMacroPathBox.Enabled      = false;
                _selectAutoExecMacroButton.Enabled = false;
            }
        }
예제 #2
0
        public ITerminalConnection EstablishConnection(IPoderosaMainWindow window, ITerminalParameter param, ITerminalSettings settings)
        {
            SerialTerminalParam    sp = param as SerialTerminalParam;
            SerialTerminalSettings ts = settings as SerialTerminalSettings;

            Debug.Assert(sp != null && ts != null);

            return(SerialPortUtil.CreateNewSerialConnection(window, sp, ts));
        }
예제 #3
0
        public void ApplySerialParam(SerialTerminalSettings settings)
        {
            //paramの内容でDCBを更新してセットしなおす
            Win32Serial.DCB dcb = new Win32Serial.DCB();
            SerialPortUtil.FillDCB(_fileHandle, ref dcb);
            SerialPortUtil.UpdateDCB(ref dcb, settings);

            if (!Win32Serial.SetCommState(_fileHandle, ref dcb))
            {
                throw new ArgumentException(SerialPortPlugin.Instance.Strings.GetString("Message.SerialTerminalConnection.ConfigError"));
            }
        }
        private void InitUI()
        {
            int maxport = SerialPortUtil.GetMaxPort();

            for (int i = 1; i <= maxport; i++)        //超頻出なのでとりあえず定数に。Preference化はあとでしてもよい
            {
                _portBox.Items.Add(String.Format("COM{0}", i));
            }

            _logTypeBox.SelectedIndex = 0;

            AdjustUI();
        }
예제 #5
0
        private void InitUI()
        {
            System.Collections.Generic.List <String> validPorts = SerialPortUtil.GetValidPorts();
            if (validPorts.Count <= 0)
            {
                throw new Exception("No valid serial ports found");
            }

            for (int i = 0; i < validPorts.Count; i++)
            {
                _portBox.Items.Add(validPorts[i].ToString());
            }
            _logTypeBox.SelectedItem = LogType.None;    // select EnumListItem<T> by T

            AdjustUI();
        }
        private void OnOK(object sender, EventArgs args)
        {
            _connection       = null;
            this.DialogResult = DialogResult.None;

            if (!ValidateParam())
            {
                return;
            }

            try {
                _connection = SerialPortUtil.CreateNewSerialConnection(null, _terminalParam, _terminalSettings);
                if (_connection != null)
                {
                    this.DialogResult = DialogResult.OK;
                }
            }
            catch (Exception ex) {
                GUtil.Warning(this, ex.Message);
            }
        }
예제 #7
0
        public object Deserialize(StructuredText node)
        {
            SerialTerminalSettings ts = SerialPortUtil.CreateDefaultSerialTerminalSettings(1);

            //TODO Deserializeの別バージョンを作ってimportさせるべきだろう。もしくはService側の実装から変える。要素側には空引数コンストラクタを強制すればいいか
            StructuredText basenode = node.FindChild(typeof(TerminalSettings).FullName);

            if (basenode != null)
            {
                ts.BaseImport((ITerminalSettings)SerialPortPlugin.Instance.SerializeService.Deserialize(basenode));
            }

            ts.BaudRate             = ParseUtil.ParseInt(node.Get("baud-rate"), 9600);
            ts.ByteSize             = (byte)ParseUtil.ParseInt(node.Get("byte-size"), 8);
            ts.Parity               = ParseUtil.ParseEnum <Parity>(node.Get("parity"), Parity.NOPARITY);
            ts.StopBits             = ParseUtil.ParseEnum <StopBits>(node.Get("stop-bits"), StopBits.ONESTOPBIT);
            ts.FlowControl          = ParseUtil.ParseEnum <FlowControl>(node.Get("flow-control"), FlowControl.None);
            ts.TransmitDelayPerChar = ParseUtil.ParseInt(node.Get("delay-per-char"), 0);
            ts.TransmitDelayPerLine = ParseUtil.ParseInt(node.Get("delay-per-line"), 0);

            return(ts);
        }
예제 #8
0
            public override CommandResult InternalExecute(ICommandTarget target, params IAdaptable[] args)
            {
                IPoderosaMainWindow window = (IPoderosaMainWindow)target.GetAdapter(typeof(IPoderosaMainWindow));
                SerialLoginDialog   dlg    = new SerialLoginDialog();

                using (dlg) {
                    SerialTerminalParam    tp = new SerialTerminalParam();
                    SerialTerminalSettings ts = SerialPortUtil.CreateDefaultSerialTerminalSettings(tp.Port);
                    dlg.ApplyParam(tp, ts);

                    if (dlg.ShowDialog(window.AsForm()) == DialogResult.OK)   //TODO 親ウィンドウ指定
                    {
                        ITerminalConnection con = dlg.ResultConnection;
                        if (con != null)
                        {
                            return(_instance.CommandManager.Execute(_instance.TerminalSessionsService.TerminalSessionStartCommand,
                                                                    window, con, dlg.ResultTerminalSettings));
                        }
                    }
                }
                return(CommandResult.Cancelled);
            }
예제 #9
0
        public void ApplyParam(SerialTerminalParam param, SerialTerminalSettings settings)
        {
            _terminalParam    = param == null ? new SerialTerminalParam() : param;
            _terminalSettings = settings == null?SerialPortUtil.CreateDefaultSerialTerminalSettings(_terminalParam.PortName) : settings;

            // 設定のポート名称のアイテムを選択。それが選択できなければ最初の項目を選択。
            _portBox.SelectedItem = _terminalParam.PortName;
            if (_portBox.SelectedItem == null && 0 < _portBox.Items.Count)
            {
                _portBox.SelectedIndex = 0;
            }

            //これらのSelectedIndexの設定はコンボボックスに設定した項目順に依存しているので注意深くすること
            _baudRateBox.SelectedIndex   = _baudRateBox.FindStringExact(_terminalSettings.BaudRate.ToString());
            _dataBitsBox.SelectedIndex   = _terminalSettings.ByteSize == 7 ? 0 : 1;
            _parityBox.SelectedItem      = _terminalSettings.Parity;        // select EnumListItem<T> by T
            _stopBitsBox.SelectedItem    = _terminalSettings.StopBits;      // select EnumListItem<T> by T
            _flowControlBox.SelectedItem = _terminalSettings.FlowControl;   // select EnumListItem<T> by T

            _encodingBox.SelectedItem   = _terminalSettings.Encoding;       // select EnumListItem<T> by T
            _newLineBox.SelectedItem    = _terminalSettings.TransmitNL;     // select EnumListItem<T> by T
            _localEchoBox.SelectedIndex = _terminalSettings.LocalEcho ? 1 : 0;

            _transmitDelayPerCharBox.Text = _terminalSettings.TransmitDelayPerChar.ToString();
            _transmitDelayPerLineBox.Text = _terminalSettings.TransmitDelayPerLine.ToString();

            IAutoExecMacroParameter autoExecParams = param.GetAdapter(typeof(IAutoExecMacroParameter)) as IAutoExecMacroParameter;

            if (autoExecParams != null && SerialPortPlugin.Instance.MacroEngine != null)
            {
                _autoExecMacroPathBox.Text = (autoExecParams.AutoExecMacroPath != null) ? autoExecParams.AutoExecMacroPath : String.Empty;
            }
            else
            {
                _autoExecMacroPathLabel.Enabled    = false;
                _autoExecMacroPathBox.Enabled      = false;
                _selectAutoExecMacroButton.Enabled = false;
            }
        }