📄 form1.cs
字号:
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 + -