Esempio n. 1
0
        public string[] GetCommPortSetForParameter(string key)
        {
            string portSetString = System.Configuration.ConfigurationManager.AppSettings[key].ToString();

            string[] portSetArray = portSetString.Split(';');
            HexCon   hexCon       = new HexCon();

            for (int i = 0; i < portSetArray.Length; i++)
            {
                if (portSetArray[i].Length != 0)
                {
                    switch (portSetArray[i].Split('=')[0].ToString())
                    {
                    case "PortNum":
                        portSetArray[i] = portSetArray[i].Split('=')[1].ToString();
                        break;

                    case "BaudRate":
                        portSetArray[i] = portSetArray[i].Split('=')[1].ToString();
                        break;

                    case "DataBits":
                        portSetArray[i] = portSetArray[i].Split('=')[1].ToString();
                        break;

                    case "Parity":
                        portSetArray[i] = portSetArray[i].Split('=')[1].ToString();
                        break;

                    case "StopBits":
                        portSetArray[i] = portSetArray[i].Split('=')[1].ToString();
                        break;

                    case "IsEnabled":
                        portSetArray[i] = portSetArray[i].Split('=')[1].ToString();
                        break;
                    }
                }
            }
            this.ReadTimeout = 100;
            return(portSetArray);
        }
Esempio n. 2
0
        /// <summary>
        ///  通过串口接收下位机上传的采集数据报文(串口已经打开)
        /// </summary>
        /// <param name="commport"> 已打开的接收报文信息的串口</param>
        /// <returns>PosID  接收成功:返回收到的采集信息
        ///                 接收失败:返回null  </returns>
        public static byte[] ReceiveMessage(CommPort commport)
        {
            //串口已打开
            int    NumBytes;
            HexCon hexcon = new HexCon();

            NumBytes = 124;
            byte[] RecBuf = new byte[124];
            //获得当前系统时间
            System.DateTime Start_Time = new System.DateTime();
            Start_Time = System.DateTime.Now;
            while (true)
            {
                System.DateTime Now_Time = new System.DateTime();
                Now_Time = System.DateTime.Now;
                //传输时间大于20秒则传输失败
                TimeSpan Space_Time = Now_Time.Subtract(Start_Time);
                if (Space_Time.Seconds > 20)
                {
                    return(null);
                }
                else
                {
                    //读串口数据到RecBuf
                    try
                    {
                        //接收下位机上传的采集数据报文,将其从byte型转换为string类型(十六进制)并返回
                        RecBuf = commport.Read(NumBytes);
                        return(RecBuf);
                    }
                    catch
                    {
                        return(null);
                    }
                }
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 获取配置文件中当前端口设置
        /// </summary>
        /// <param></param>
        /// <returns>当前端口设置</returns>
        public CommPort GetCommPortSet(string key)
        {
            string portNum       = "COM1";
            string parity        = "无";
            string stopBits      = "1";
            string portSetString = System.Configuration.ConfigurationManager.AppSettings[key].ToString();

            string[] portSetArray = portSetString.Split(';');
            HexCon   hexCon       = new HexCon();

            for (int i = 0; i < portSetArray.Length; i++)
            {
                if (portSetArray[i].Length != 0)
                {
                    switch (portSetArray[i].Split('=')[0].ToString())
                    {
                    case "PortNum":
                        portNum = portSetArray[i].Split('=')[1].ToString();
                        break;

                    case "BaudRate":
                        this.BaudRate = Convert.ToInt32(portSetArray[i].Split('=')[1]);
                        break;

                    case "DataBits":
                        this.ByteSize = hexCon.StringToByte("0" + portSetArray[i].Split('=')[1].ToString())[0];
                        break;

                    case "Parity":
                        parity = portSetArray[i].Split('=')[1].ToString();
                        break;

                    case "StopBits":
                        stopBits = portSetArray[i].Split('=')[1].ToString();
                        break;

                    case "IsEnabled":
                        this.IsEnabled = portSetArray[i].Split('=')[1].ToString().ToLower() == "true" ? true : false;
                        break;
                    }

                    this.PortNum = int.Parse(portNum.Substring(3));
                    //switch (portNum.ToUpper())
                    //{
                    //    case "COM1":
                    //        this.PortNum = 1;
                    //        break;
                    //    case "COM2":
                    //        this.PortNum = 2;
                    //        break;
                    //    case "COM3":
                    //        this.PortNum = 3;
                    //        break;
                    //    case "COM4":
                    //        this.PortNum = 4;
                    //        break;
                    //}
                    switch (parity)
                    {
                    case "无":
                        this.Parity = 0;
                        break;

                    case "奇":
                        this.Parity = 1;
                        break;

                    case "偶":
                        this.Parity = 2;
                        break;

                    case "标志":
                        this.Parity = 3;
                        break;

                    case "空格":
                        this.Parity = 4;
                        break;
                    }
                    switch (stopBits)
                    {
                    case "1":
                        this.StopBits = 0;
                        break;

                    case "1.5":
                        this.StopBits = 1;
                        break;

                    case "2":
                        this.StopBits = 2;
                        break;
                    }
                }
            }
            this.ReadTimeout = 100;
            return(this);
        }