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

📄 form1.cs

📁 在。NET中利用VB6.0的控件来现实对串口的操作来完成短信发送的功能
💻 CS
📖 第 1 页 / 共 2 页
字号:
																		  this.label6,
																		  this.Parity_ComboBox,
																		  this.DataBit_ComboBox,
																		  this.Digit_ComboBox,
																		  this.CommPort_omboBox});
			this.Name = "Form1";
			this.Text = "Form1";
			this.Load += new System.EventHandler(this.Form1_Load);
			((System.ComponentModel.ISupportInitialize)(this.axMSComm1)).EndInit();
			this.ResumeLayout(false);

		}
		#endregion

		/// <summary>
		/// 应用程序的主入口点。
		/// </summary>
		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}

		private void Form1_Load(object sender, System.EventArgs e)
		{ 
			DataTable parameter = dataAccess.GetParameter();
			if( 0 == parameter.Rows.Count)
			{
				MessageBox.Show("没有预存设置,提取默认设置!");
				this.SetDefault();
			}
			else
			{
				this.CommPort_omboBox.SelectedItem = parameter.Rows[0][1].ToString();
				this.BitRatio_ComboBox.SelectedItem = parameter.Rows[0][2].ToString();
				this.Parity_ComboBox.SelectedItem = parameter.Rows[0][3].ToString();
				this.DataBit_ComboBox.SelectedItem = parameter.Rows[0][4].ToString();
				this.Digit_ComboBox.SelectedItem = parameter.Rows[0][5].ToString();
				this.Interval_TextBox.Text = parameter.Rows[0][6].ToString();
			}
			this.timer1.Enabled = false;			
		}

		private void Open_Button_Click(object sender, System.EventArgs e)
		{
			try
			{
				//axMSComm1.PortOpen = false ;
				short commPort = 1;
				switch(this.CommPort_omboBox.SelectedItem.ToString())
				{
					case "COM1" : commPort = 1;break;
					case "COM2" : commPort = 2;break;
					case "COM3" : commPort = 3;break;
					case "COM4" : commPort = 4;break;
				}
				axMSComm1.CommPort = commPort ;
				//axMSComm1.Handshaking = comRTS ;//this.axMSComm1.set
				string parity = String.Empty;
				switch(this.Parity_ComboBox.SelectedItem.ToString())
				{
					case "无" : parity = "N";break;
				}
				axMSComm1.Settings = this.BitRatio_ComboBox.SelectedItem.ToString() + ',' + parity + ',' + this.DataBit_ComboBox.SelectedItem.ToString() + ',' + this.Digit_ComboBox.SelectedItem.ToString() ;
				axMSComm1.InputLen = 0 ;
				
				//
				//打开端口。 
				//MSComm1.PortOpen = False 
				if(!this.axMSComm1.PortOpen)
				{
					axMSComm1.PortOpen = true ;
				}
				this.timer1.Interval = Convert.ToInt32(this.Interval_TextBox.Text.Trim());
				this.timer1.Enabled = true;
			}
			catch
			{
				MessageBox.Show("打开失败,请重试");
				return;
			}
			MessageBox.Show("打开成功");
			this.Open_Button.Enabled = false;

		}


		private bool Send(string smsNumber,string smsText)           //发送短信
		{
			try
			{
				axMSComm1.Output = "AT+CMGF=0";
				axMSComm1.Output = ((char)(13)).ToString() ;
				axMSComm1.Output = "AT+CMGS=";
				axMSComm1.Output = this.CodeLength(smsText);
				axMSComm1.Output = ((char)(13)).ToString() ;
				axMSComm1.Output = "0011000D91";
				axMSComm1.Output = this.InvertNumber(smsNumber);
				axMSComm1.Output="000801";
				axMSComm1.Output= this.EncodeText(smsText);
				axMSComm1.Output = ((char)(26)).ToString() ;
			}
			catch
			{
				return false;
			}
			return true;			
		}


		private string InvertNumber(string number)                //号码跳位交换
		{
			char[] strTemp;
			string retValue=String.Empty;
			if(0 == number.Length % 2)
			{
				strTemp= number.ToCharArray();
			}
			else
			{
				strTemp= (number+"f").ToCharArray();
			}
			for(int i=0;i<strTemp.Length;i=i+2)
			{				
				retValue = retValue +strTemp[i+1] +strTemp[i];
			}	
			if(12 == retValue.Length)
			{
				return "68"+ retValue;
			}
			else
			{
				return retValue;
			}
			
		}


		private string EncodeText(string text)            //编码为代码串
		{
			char[] strValue = text.ToCharArray();
			string strTemp = null,retValue=String.Empty;
			int i=0,count=strValue.Length;
			short charCode=0;
			for(i=0;i<count;i++)
			{
				charCode = (short) strValue[i];
				strTemp = charCode.ToString("x");
				switch(strTemp.Length)
				{
					case 1:retValue = retValue + "000" + strTemp;break;
					case 2:retValue = retValue + "00" + strTemp;break;
					case 3:retValue = retValue + "0" + strTemp;break;
					case 4:retValue = retValue + strTemp;break;
				}
			}	
			if(16 > retValue.Length/2)
			{
				retValue ="0" +(retValue.Length/2).ToString("x") + retValue; 
			}
			else
			{
				retValue = (retValue.Length/2).ToString("x") + retValue; 
			}
			return retValue;
		}


		private string DecodeText(string text)            //解码为字符串
		{
			int i=0,count=text.Length,code=0;
			string retValue = String.Empty;
			char[] charTemp = text.ToCharArray();
			for(i=0;i+3<count;i=i+4)
			{
				code = ConvertChar(charTemp[i])*16*16*16+ConvertChar(charTemp[i+1])*16*16+ConvertChar(charTemp[i+2])*16+ConvertChar(charTemp[i+3]);
				retValue = retValue + (char)code;
			}
			return retValue;

		}


		private int ConvertChar(char ch)                    //字符转十六进制
		{
			int retValue=(int)ch;
			if(retValue > 47 && retValue < 58)
			{
				return retValue - 48;
			}
			if(retValue > 64 && retValue < 71)
			{
				return retValue - 55;
			}
			if(retValue > 96 && retValue < 103)
			{
				return retValue - 87;
			}
			return 0;
		}


		private string CodeLength(string text)                //求编码长度
		{
			string temp=(this.EncodeText(text).Length/2 + 14).ToString();
			switch(temp.Length)
			{
				case 1 : temp="00"+temp;break;
				case 2 : temp="0" +temp;break;
				case 3 : break;
				default: temp =null; break;
			}
			return temp;
		}


		private void SetDefault()                         //置默认设置
		{
			this.BitRatio_ComboBox.SelectedIndex = 0;
			this.Digit_ComboBox.SelectedIndex = 0;
			this.DataBit_ComboBox.SelectedIndex = 0;
			this.CommPort_omboBox.SelectedIndex = 0;
			this.Parity_ComboBox.SelectedIndex = 0;
			this.Interval_TextBox.Text = "500";
		}

		private void Default_Button_Click(object sender, System.EventArgs e)      
		{
			this.SetDefault();
			this.timer1.Interval = 500;
		}

		private void timer1_Tick(object sender, System.EventArgs e)            //取短信信息服务
		{
			smsInform = dataAccess.GetSmsInform();
			if( 0 < smsInform.Rows.Count)
			{
				if(this.Send(smsInform.Rows[0][1].ToString(),smsInform.Rows[0][2].ToString()))
				{
					smsInform.Rows[0][3] = DateTime.Now;
					smsInform.Rows[0][4] = 1;
				}
				else
				{
					smsInform.Rows[0][4] = 2;
				}
				dataAccess.UpdateSmsInform(smsInform);
			}
			else
			{
				smsInform.Rows.Clear();
			}
		}

		private void Save_Button_Click(object sender, System.EventArgs e)
		{
			if(dataAccess.UpdateParameter(this.CommPort_omboBox.SelectedItem.ToString(),this.BitRatio_ComboBox.SelectedItem.ToString(),this.Parity_ComboBox.SelectedItem.ToString(),this.DataBit_ComboBox.SelectedItem.ToString(),this.Digit_ComboBox.SelectedItem.ToString(),this.Interval_TextBox.Text))
			{
				MessageBox.Show("保存成功!");
			}
			else
			{
				MessageBox.Show("设置保存失败,请重试!");
			}
		}

		private void axMSComm1_OnComm(object sender, System.EventArgs e)
		{
		
		}
	}
}

⌨️ 快捷键说明

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