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); }
/// <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); } } } }
/// <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); }