Exemplo n.º 1
0
        ///-----------------------------------------------------------------
        /// <summary>
        /// 对    象:BtnSCISwitch
        /// 事    件:Click
        /// 功    能:(1)当开关显示为打开串口(Open SCI),则单击时执行打开串口
        ///          操作,并在标签LblSCI中显示选择的串口号与波特率,并在
        ///          状态条文本TSSLState中显示当前操作
        ///          (2)当开关显示为关闭串口(Close SCI),则单击时执行关闭串口
        ///          操作,并在标签LblSCI中显示关闭的串口号与波特率,并在
        ///          状态条文本TSSLState中显示当前操作
        /// 函数调用:(1)SCIInit:串口初始化
        ///          (2)SCIClose:关闭串口
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        ///-----------------------------------------------------------------
        private void BtnSCISwitch_Click(object sender, EventArgs e)
        {
            bool flag;//标记打开是否成功

            //根据按钮BtnSCISwitch显示内容执行打开或关闭串口操作
            if (this.BtnSCISwitch.Text.CompareTo("打开串口(Open SCI)") == 0)
            {
                //提示当前正在执行打开串口操作
                this.TSSLState.Text = "过程提示:正在打开串口...";
                //初始化SCI类对象sci
                sci = new SCI(PublicVar.g_SCIComNum, PublicVar.g_SCIBaudRate);
                if (sci.SCIOpen())//串口打开成功
                {
                    //设置接收中断处理事件
                    sci.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.SCIPort_DataReceived);
                    //设置每接收到1个字节中断1次
                    sci.SCIReceInt(1);

                    //显示打开串口相关信息
                    this.LblSCI.Text         = str + PublicVar.g_SCIComNum + "、" + PublicVar.g_SCIBaudRate + "\n" + msg;
                    this.BtnSCISwitch.Text   = "关闭串口(Close SCI)"; //修改按钮上文字
                    this.CbSCIComNum.Enabled = false;             //禁用[串口选择框]
                    this.CbSCIBaud.Enabled   = false;             //禁用[波特率选择框]
                    //状态上显示结果信息
                    this.TSSLState.Text = this.TSSLState.Text +
                                          "打开" + PublicVar.g_SCIComNum + "成功!" + "波特率选择:" + PublicVar.g_SCIBaudRate;
                    this.pictureBox1.Image  = SerialPort.Properties.Resources.Run;
                    this.BtnSCISend.Enabled = true;
                }
                else//串口打开失败
                {
                    this.TSSLState.Text = this.TSSLState.Text +
                                          "打开" + PublicVar.g_SCIComNum + "失败!";
                    this.pictureBox1.Image  = SerialPort.Properties.Resources.Run_static;
                    this.BtnSCISend.Enabled = false;
                }
            }
            else if (this.BtnSCISwitch.Text == "关闭串口(Close SCI)")
            {
                //设置接收中断处理事件
                sci.DataReceived -= new System.IO.Ports.SerialDataReceivedEventHandler(this.SCIPort_DataReceived);
                //提示当前操作
                this.TSSLState.Text = "过程提示:正在关闭串口...";
                //执行关闭串口操作,并用Flag返回结果
                flag = sci.SCIClose();
                if (flag == true)
                {
                    this.LblSCI.Text = str + PublicVar.g_SCIComNum
                                       + "、" + PublicVar.g_SCIBaudRate + "\n" + msg;
                    this.BtnSCISwitch.Text = "打开串口(Open SCI)";
                    //[串口选择框]处于可用状态
                    this.CbSCIComNum.Enabled = true;
                    //[波特率选择框]处于可用状态
                    this.CbSCIBaud.Enabled  = true;
                    this.TSSLState.Text    += "关闭" + PublicVar.g_SCIComNum + "成功!";
                    this.pictureBox1.Image  = SerialPort.Properties.Resources.Run_static;
                    this.BtnSCISend.Enabled = false;
                }
                else//串口关闭失败
                {
                    this.TSSLState.Text += "关闭" + PublicVar.g_SCIComNum + "失败!";
                }
            }
        }