⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 开发C#串口实现了通讯功能好用的很 还有点小的问题要修改一下
💻 CS
📖 第 1 页 / 共 3 页
字号:
            this.txtCWL.Text = this.out_EL3.ToString();
        }
        private void setX()
        {
            this.txtAIX.Text = "1";
            this.txtAVX.Text = "1";
            this.txtAWX.Text = "1";
            this.txtBIX.Text = "1";
            this.txtBVX.Text = "1";
            this.txtBWX.Text = "1";
            this.txtCIX.Text = "1";
            this.txtCVX.Text = "1";
            this.txtCWX.Text = "1";
        }
        private void FrmshowinfoPower_Load(object sender, EventArgs e)
        {

          
            setL();
            setX();
            if (this.txtAIX.Text.Equals( "1") || this.txtBIX.Text.Equals ( "1"))
            {
                this.btnReadSet.Enabled = false;
            }
            this.SelectComNO = 1;
            this.cmbCOMM.SelectedIndex = 0;
            try
            {
                if (PrevInstance() == true)
                {
                    MessageBox.Show("该服务已启动");
                    Application.Exit();
                }
                this.cmbCOMM.SelectedIndex = 0;
                this.InitComPort();
                timer1.Interval = 1000;
                timer1.Enabled = true;
                
                
                
                
               
            }
            catch (Exception ex)
            {
                this.lblMsg.Text ="串口打开失败了";

            }
			

        }
        private void InitComPort()
        {

            try
            {
                // This port is already open, close it to reset it.
                if (com.PortOpen) com.PortOpen = false;
                // Set the com port to be 1
                com._CommPort = SelectComNO;
                com.RThreshold = 1;
                com.Settings = "1200,n,8,1";
                // Force the DTR line high, used sometimes to hang up modems
                com.DTREnable = true;
                com.InBufferSize = 1024;//1K
                com.OutBufferSize = 1024;
                com.Handshaking = MSCommLib.HandshakeConstants.comNone;
                com.InputMode = MSCommLib.InputModeConstants.comInputModeBinary;
                com.InputLen = 0;
                com.NullDiscard = false;
                com.PortOpen = true;
               this.lblMsg.Text ="成功打开COM" + SelectComNO + "!\n";
            }
            catch
            {
                if (com.PortOpen) com.PortOpen = false;
                this.lblMsg.Text ="打开COM" + SelectComNO + "失败!";

            }
        }
       
        private void sendinfo()//发送协议到设备读出其电流 电压
        {
            try
            {
                cmdReadData = new byte[9];
                cmdReadData[0] = 0xFE;
                cmdReadData[1] = 0xFE;
                cmdReadData[2] = 0xFE;
                cmdReadData[3] = 0x68;
                cmdReadData[4] = 0x0A;
                cmdReadData[5] = 0x01;
                cmdReadData[6] = 0x00;
                cmdReadData[7] = (byte)(cmdReadData[4] + cmdReadData[5] + cmdReadData[6]);//校验码,累加和
                cmdReadData[8] = 0x16;
                PageNO = 0;
                sys_buf = "";
                show_buf = "";
                com.InBufferCount = 0;
                com.Output = cmdReadData;

            }
            catch
            {
                this.lblMsg.Text = "发送信号错误!";
            }

        }
        private void cmbCOMM_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (iniFlag)
            {
                iniFlag = false;
            }
            else
            {
                SelectComNO = (short)(cmbCOMM.SelectedIndex + 1);
                InitComPort();
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            sendinfo();
        }
        private int Hex2Dec(string InputData)//十六进制转化为十进制
        {
            int DecOut;
            int Lenhex;
            int HexStep;
            DecOut = 0;
            InputData = InputData.ToUpper();
            Lenhex = InputData.Length;
            HexStep = 0;
            for (int i = Lenhex; i > 0; i--)
            {
                HexStep = HexStep * 16;
                if (HexStep == 0) HexStep = 1;
                switch (InputData.Substring(i - 1, 1))
                {
                    case "0":
                        DecOut = DecOut + (0 * HexStep);
                        break;
                    case "1":
                        DecOut = DecOut + (1 * HexStep);
                        break;
                    case "2":
                        DecOut = DecOut + (2 * HexStep);
                        break;
                    case "3":
                        DecOut = DecOut + (3 * HexStep);
                        break;
                    case "4":
                        DecOut = DecOut + (4 * HexStep);
                        break;
                    case "5":
                        DecOut = DecOut + (5 * HexStep);
                        break;
                    case "6":
                        DecOut = DecOut + (6 * HexStep);
                        break;
                    case "7":
                        DecOut = DecOut + (7 * HexStep);
                        break;
                    case "8":
                        DecOut = DecOut + (8 * HexStep);
                        break;
                    case "9":
                        DecOut = DecOut + (9 * HexStep);
                        break;
                    case "A":
                        DecOut = DecOut + (10 * HexStep);
                        break;
                    case "B":
                        DecOut = DecOut + (11 * HexStep);
                        break;
                    case "C":
                        DecOut = DecOut + (12 * HexStep);
                        break;
                    case "D":
                        DecOut = DecOut + (13 * HexStep);
                        break;
                    case "E":
                        DecOut = DecOut + (14 * HexStep);
                        break;
                    case "F":
                        DecOut = DecOut + (15 * HexStep);
                        break;
                    default:
                        break;
                }

            }
            return DecOut;
        }
      
        private void btnSetL_Click(object sender, EventArgs e)
        {
            this.txtAIL.Text = out_I1.ToString();
            this.txtAVL.Text = out_V1.ToString();
            this.txtAWL.Text = out_E1.ToString();

            this.txtBIL.Text = out_I2.ToString();
            this.txtBVL.Text = out_V2.ToString();
            this.txtBWL.Text = out_E2.ToString();

            this.txtCIL.Text = out_I3.ToString();
            this.txtCVL.Text = out_V3.ToString();
            this.txtCWL.Text = out_E3.ToString();
        }
        double Bi = 0.0;//百分比
        double  FM = 0.0f;
        double FZ = 0.0;
        private void btnSetX_Click(object sender, EventArgs e)
        {
            try
            {
               
                StringBuilder myBuilder=new StringBuilder(256);
                string path = Application.StartupPath + "\\app.ini";//读取配置文件的信息
                GetPrivateProfileString("settings", "AV", "220", myBuilder, 256, path);
                double  AV=Int32.Parse(myBuilder.ToString());
                Bi = AV / 220;//得到了电压的百分比
                FM = Math.Abs(out_V1 - Convert.ToDouble(this.txtAVL.Text.Trim()));
                FZ = Convert.ToDouble(Bi * 10E+12);
                this.txtAVX.Text = Convert.ToInt64(FZ / FM).ToString();

                GetPrivateProfileString("settings", "AI", "5", myBuilder, 256, path);
                double  AI = Int32.Parse(myBuilder.ToString());
                Bi =AI /5;//得到了电压的百分比
                FM = Math.Abs(out_I1 - Convert.ToDouble(this.txtAIL.Text.Trim()));
                FZ = Convert.ToDouble(Bi * 10E+12);
                this.txtAIX.Text = Convert.ToInt64(FZ / FM).ToString();

                GetPrivateProfileString("settings", "AW", "1100", myBuilder, 256, path);
                double AW = Int32.Parse(myBuilder.ToString());
                Bi = AW / 1100;//得到了电压的百分比
                FM = Math.Abs(out_E1 - Convert.ToDouble(this.txtAWL.Text.Trim()));
                FZ = Convert.ToDouble(Bi * 10E+12);
                this.txtAWX.Text = Convert.ToInt64(FZ / FM).ToString();
                /*******************/
                GetPrivateProfileString("settings", "BV", "220", myBuilder, 256, path);
                double BV = Int32.Parse(myBuilder.ToString());
                Bi = BV / 220;//得到了电压的百分比
                FM = Math.Abs(out_V2 - Convert.ToDouble(this.txtBVL.Text.Trim()));
                FZ = Convert.ToDouble(Bi * 10E+12);
                this.txtBVX.Text = Convert.ToInt64(FZ / FM).ToString();

                GetPrivateProfileString("settings", "BI", "5", myBuilder, 256, path);
                double BI = Int32.Parse(myBuilder.ToString());
                Bi = BI / 5;//得到了电压的百分比
                FM = Math.Abs(out_I2 - Convert.ToDouble(this.txtBIL.Text.Trim()));
                FZ = Convert.ToDouble(Bi * 10E+12);
                this.txtBIX.Text = Convert.ToInt64(FZ / FM).ToString();

                GetPrivateProfileString("settings", "BW", "5", myBuilder, 256, path);
                double BW = Int32.Parse(myBuilder.ToString());
                Bi = BW / 1100;//得到了电压的百分比
                FM =Math.Abs ( out_E2 - Convert.ToDouble(this.txtBWL.Text.Trim()));
                FZ = Convert.ToDouble(Bi * 10E+12);
                this.txtBWX.Text = Convert.ToInt64(FZ / FM).ToString();
                /*******************/
                GetPrivateProfileString("settings", "CV", "220", myBuilder, 256, path);
                double CV = Int32.Parse(myBuilder.ToString());
                Bi = CV / 220;//得到了电压的百分比
                FM =Math.Abs ( out_V3 - Convert.ToDouble(this.txtCVL.Text.Trim()));
                FZ = Convert.ToDouble(Bi * 10E+12);
                this.txtCVX.Text = Convert.ToInt64(FZ / FM).ToString();

                GetPrivateProfileString("settings", "CI", "5", myBuilder, 256, path);
                double CI = Int32.Parse(myBuilder.ToString());
                Bi = CI / 5;//得到了电压的百分比
                FM = Math.Abs (out_I3 - Convert.ToDouble(this.txtCIL.Text.Trim()));
                FZ = Convert.ToInt64(Bi * 10E+12);
                this.txtCIX.Text = Convert.ToInt64(FZ / FM).ToString();

                GetPrivateProfileString("settings", "CW", "5", myBuilder, 256, path);
                double CW = Int32.Parse(myBuilder.ToString());
                Bi = CW / 1100;//得到了电压的百分比
                FM = Math.Abs (out_E3 - Convert.ToDouble(this.txtCWL.Text.Trim()));
                FZ = Convert.ToDouble(Bi * 10E+12);
                this.txtCWX.Text = Convert.ToInt64(FZ / FM).ToString();


            }
            catch (Exception ex)
            {

            }
            if (!this.txtAIX.Text.Equals("1") || !this.txtBIX.Text.Equals("1"))
            {
                this.btnReadSet.Enabled = true;
            }

           
        }

        private void com_OnComm(object sender, EventArgs e)
        {

            bool flag = false;
            string data_length;
            string buf = "";
            string aa;
            string bb;

            object objIN;
            objIN = com.Input;
            byte[] cc = (byte[])objIN;
            for (int i = 0; i < cc.Length; i++)
            {
                string ff;
                ff = string.Format("{0,2:X2}", cc[i]);
                sys_buf += ff;
                show_buf += ff + " ";
            }


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -