📄 form1.cs
字号:
this.groupBox4.ResumeLayout(false);
this.groupBox2.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
#region ShowLog
private string GetNewLine()
{
string logStr="";
logIndex++;
if ( logIndex != 1)
logStr += "\r\n";
logStr += logIndex.ToString() + ". " + DateTime.Now.ToLongTimeString() + " ";
return logStr;
}
private void ShowSendBuffer(string val)
{
ShowMe(val, txtSendBuffer);
}
private void ShowSendLog(string val)
{
ShowMe(val, txtSendLog);
}
private void ShowRecvBuffer(string val)
{
ShowMe(val, txtRecvBuffer);
}
private void ShowRecvLog(string val)
{
ShowMe(val, txtRecvLog);
}
delegate void StringParameterDelegate(string val1, TextBox txt1);
private void ShowMe(string val, TextBox txt)
{
if (InvokeRequired)
{
// We're not in the UI thread, so we need to call BeginInvoke
BeginInvoke(new StringParameterDelegate(ShowMe), new object[]{val, txt});
return;
}
// Must be on the UI thread if we've got this far
txt.Text += val;
txt.SelectionStart = txt.Text.Length;
txt.ScrollToCaret();
}
#endregion
#region tools
private bool GetRetryCount()
{
try
{
this.retryCount = Convert.ToInt32(txtRetryCount.Text.Trim());
return true;
}
catch
{
lblMessage.Text = "retry count should be an integer";
return false;
}
}
public bool InitCom(string m_port, int m_baudrate)
{
ss_port.PortNum = m_port;
ss_port.BaudRate = m_baudrate;
ss_port.ByteSize = 8;
ss_port.Parity = 0;
ss_port.StopBits = 1;
ss_port.ReadTimeout = 1000;
try
{
if (ss_port.Opened)
{
ss_port.Close();
ss_port.Open();
}
else
{
ss_port.Open();//打开串口
}
return true;
}
catch(Exception e)
{
MessageBox.Show("错误:" + e.Message);
return false;
}
}
private int SetSMSdbStatus(SMSInfo oInfo)
{
int result = -1;
string sql = "update SMS set retrycount =" + oInfo.RetryCount + ", priority=" + oInfo.Priority + ",status=" + oInfo.Status + ", handletime=getdate()";
sql += " where sysno=" + oInfo.SysNo;
try
{
DacHelper dh = new DacHelper(sql);
result = dh.ExecuteNoQuery();
}
catch
{
result = -1;
}
return result;
}
private int WriteSMSToDb(SMSRecvInfo oInfo)
{
int result = -1;
string sql = "insert into smsrecv(cellnumber,smscontent, sendtime) ";
sql += "values(" + Util.ToSqlString(oInfo.CellNumber) + "," + Util.ToSqlString(oInfo.SMSContent) + "," + Util.ToSqlString(oInfo.SendTime.ToString(AppConst.DateFormatLong)) + ")";
try
{
DacHelper dh = new DacHelper(sql);
result = dh.ExecuteNoQuery();
}
catch
{
result = -1;
}
return result;
}
private SortedList GetSendSMSList()
{
string sql = "select top 50 * from sms where status=" + (int)SMSStatus.SendOrg + " order by priority desc, sysno desc";
DacHelper dh = new DacHelper(sql);
DataSet ds = dh.ExecuteDataSet("sendquene");
if ( ds== null || ds.Tables[0].Rows.Count ==0 )
return null;
SortedList sl = new SortedList(10);
foreach(DataRow dr in ds.Tables[0].Rows)
{
SMSInfo item = new SMSInfo();
Map(item, dr);
sl.Add(item.SysNo, item);
}
return sl;
}
private void Map(SMSInfo oParam, DataRow tempdr)
{
oParam.SysNo = Util.TrimIntNull(tempdr["SysNo"]);
oParam.CellNumber = Util.TrimNull(tempdr["CellNumber"]);
oParam.SMSContent = Util.TrimNull(tempdr["SMSContent"]);
oParam.Priority = Util.TrimIntNull(tempdr["Priority"]);
oParam.RetryCount = Util.TrimIntNull(tempdr["RetryCount"]);
oParam.Status = Util.TrimIntNull(tempdr["Status"]);
}
private bool CheckCellNumber(string cell)
{
if ( cell == "1861")
return true;
if ( cell.Length != 11)
{
return false;
}
long number;
try
{
number = Convert.ToInt64(cell);
if ( number < 13000000000)
{
return false;
}
}
catch
{
return false;
}
return true;
}
#endregion
#region cell related
private void StartConnect()
{
Thread t = new Thread(new ThreadStart(DoConnect));
t.IsBackground = true;
t.Start();
}
private void DoConnect()
{
string readBuffer="";
if ( !GetRetryCount())
return;
btnConnect.Enabled = false;
bool opened = InitCom(cboPort.SelectedItem.ToString(),Convert.ToInt32(cboBps.SelectedItem.ToString()));
if (opened)
{
string validResponse;
bool isSucc;
#region 是否支持AT指令
isSucc = false;
ss_port.Write(Encoding.ASCII.GetBytes("AT\r"));
newLine = GetNewLine();
ShowSendLog(newLine+ "是否支持AT指令");
ShowSendBuffer(newLine);
readBuffer = "";
for(int i=0; i<retryCount; i++)
{
Thread.Sleep(retryTimeOut);
readBuffer += Encoding.ASCII.GetString(ss_port.Read(128));
if ( readBuffer.IndexOf("OK") != -1 )
{
isSucc = true;
break;
}
else
{
ShowSendLog(". ");
}
}
ShowSendBuffer(readBuffer);
if ( isSucc )
{
ShowSendLog("OK");
}
else
{
ShowSendLog("Error");
}
#endregion
#region 获取手机品牌
if ( isSucc )
{
isSucc = false;
ss_port.Write(Encoding.ASCII.GetBytes("AT+CGMI\r")); //获取手机品牌
newLine = GetNewLine();
ShowSendLog(newLine + "获取手机品牌");
ShowSendBuffer(newLine);
readBuffer = "";
for ( int i=0; i< retryCount; i++)
{
Thread.Sleep(retryTimeOut);
readBuffer += Encoding.ASCII.GetString(ss_port.Read(128));
validResponse = readBuffer.Replace("AT+CGMI","").Replace("\r","").Replace("\n","").Replace("OK","");
if (validResponse.Length > 0)
{
ConnectState.Text = validResponse +"\n";// response.Substring(10,7);
isSucc = true;
break;
}
else
{
ShowSendLog(". ");
}
}
ShowSendBuffer(readBuffer);
if ( isSucc )
{
ShowSendLog("OK");
}
else
{
ShowSendLog("Error");
}
}
#endregion
#region 获取手机型号
if ( isSucc )
{
isSucc = false;
ss_port.Write(Encoding.ASCII.GetBytes("AT+CGMM\r"));//获取手机型号
newLine = GetNewLine();
ShowSendLog(newLine+"获取手机型号");
ShowSendBuffer(newLine);
readBuffer = "";
for ( int i=0; i< retryCount; i++)
{
Thread.Sleep(retryTimeOut);
readBuffer = Encoding.ASCII.GetString(ss_port.Read(128));
validResponse = readBuffer.Replace("AT+CGMM","").Replace("\r","").Replace("\n","").Replace("OK","");
if (validResponse.Length > 0)
{
ConnectState.Text += validResponse +"连接中......";
isSucc = true;
break;
}
else
{
ShowSendLog(". ");
}
}
ShowSendBuffer(readBuffer);
if ( isSucc )
{
ShowSendLog("OK");
}
else
{
ShowSendLog("Error");
}
}
#endregion
#region 获取手机短信中心号
if ( isSucc )
{
isSucc = false;
ss_port.Write(Encoding.ASCII.GetBytes("AT+CSCA?\r"));//获取手机短信中心号
newLine = GetNewLine();
ShowSendLog(newLine+"获取手机短信中心号");
ShowSendBuffer(newLine);
readBuffer = "";
for ( int i=0; i< retryCount; i++)
{
Thread.Sleep(retryTimeOut);
readBuffer = Encoding.ASCII.GetString(ss_port.Read(128));
int start = readBuffer.IndexOf("86");
if ( start != -1 )
{
lblCenterNo.Text = readBuffer.Substring(start,13);
isSucc = true;
break;
}
else
{
ShowSendLog(". ");
}
}
ShowSendBuffer(readBuffer);
if ( isSucc )
{
ShowSendLog("OK");
}
else
{
ShowSendLog("Error");
}
}
#endregion
#region 设置短消息信息格式
if ( isSucc )
{
isSucc = false;
ss_port.Write(Encoding.ASCII.GetBytes("AT+CMGF=0\r"));//获取手机短信中心号
newLine = GetNewLine();
ShowSendLog(newLine+"设置短消息信息格式");
ShowSendBuffer(newLine);
readBuffer = "";
for ( int i=0; i< retryCount; i++)
{
Thread.Sleep(retryTimeOut);
readBuffer = Encoding.ASCII.GetString(ss_port.Read(128));
int start = readBuffer.IndexOf("86");
if ( readBuffer.IndexOf("OK") !=-1 )
{
isSucc = true;
break;
}
else
{
ShowSendLog(". ");
}
}
ShowSendBuffer(readBuffer);
if ( isSucc )
{
ShowSendLog("OK");
}
else
{
ShowSendLog("Error");
}
}
#endregion
if ( isSucc )
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -