?? transgl.cpp
字號:
CString strSQL;
//strSQL.Format("delete from trans_info where trans_id='%s'",m_ctrTrans.GetItemText(n-1,0));
strSQL.Format("delete from trans_js where trans_tel='%s'",m_jslist.GetItemText(n-1,2));
if(!database.ExecuteSQL(strSQL,strSQL.GetLength()))
{
AfxMessageBox("刪除失敗!");
return;
}
}
string strNum="";
strNum=m_jslist.GetItemText(n-1,2);
char* strContent="關";
PDU p;
string x=p.smsEncodedsms("8613800230500",strNum,strContent);
CString str;
str.Format("AT+CMGS=%d\r",p.nLength);
m_bottoncomumui.SetOutput(COleVariant(str));
Sleep(1000);
OnOnCommMscomm1();
if(m_sStatus3.Find("> ")>=0)
{
str.Format("%s%c",x.c_str(),0x1a);
str.MakeUpper();
//m_sStatus2="";
m_bottoncomumui.SetOutput(COleVariant(str));
}
m_sStatus3="";
/* //刪除監控中的數據
CDatabase1 database2;
if(!database2.ConnectDB())
{
return;
}
CString strSQL1;
CString charset5="set names 'gb2312'";//使之正常顯示中文,或用set character_set_results=gb2312;
database2.ExecuteSQL(charset5,charset5.GetLength());//執行語句.
strSQL1.Format("delete from trans_stat where trans_tel='%s'",m_jslist.GetItemText(n-1,2));
if(!database2.ExecuteSQL(strSQL1,strSQL1.GetLength()))
{
AfxMessageBox("刪除失敗!");
return;
}
m_jslist.DeleteItem(n-1);
m_sStatus3="";
//顯示
binddutytrans();
ShowTrans();*/
}
void CTransGL::binddutytrans()
{
m_jslist.DeleteAllItems();
CDatabase1 database_duty_name;
if(!database_duty_name.ConnectDB())
{
return;
}
CString charset1="set names 'gb2312'";//使之正常顯示中文,或用set character_set_results=gb2312;
database_duty_name.ExecuteSQL(charset1,charset1.GetLength());//執行語句
Data_Param result1;
result1.tab_name="trans_js";
result1.select_exp="TRANS_tel";
// CString def1;
// def1="TRANS_ID like '%"+m_TRANS_ID+"%'";
// def1.Format("TRANS_ID='%s'",m_TRANS_ID);
// result1.where_def=def1.GetBuffer(100);
if(database_duty_name.SelectAll(&result1))
{
int count=(int)database_duty_name.GetRowNum();
for(int j=0;j<count;j++)
{
database_duty_name.SeekData(j);
MYSQL_ROW row1=database_duty_name.GetRecord();
CString name;
name=row1[0];
//查詢ID對應的責任人姓名
CDatabase1 database2;
if(!database2.ConnectDB())
{
return;
}
CString charset="set names 'gb2312'";//使之正常顯示中文,或用set character_set_results=gb2312;
database2.ExecuteSQL(charset,charset.GetLength());//執行語句.
Data_Param result;
result.tab_name="trans_info";
result.select_exp="TRANS_num,TRANS_ID,TRANS_tel,remark";
CString def;
def.Format("TRANS_tel='%s'",name);
// def="duty_name like '%"+name+"%'";
result.where_def=def.GetBuffer(100);
if(database2.SelectRecord(&result))
{
int count=(int)database2.GetRowNum();
for(int i=0;i<count;i++)
{
database2.SeekData(i);
MYSQL_ROW row=database2.GetRecord();
m_jslist.InsertItem(i,row[0]);
m_jslist.SetItemText(i,1,row[1]);
m_jslist.SetItemText(i,2,row[2]);
m_jslist.SetItemText(i,3,row[3]);
}
}
}
}
}
BEGIN_EVENTSINK_MAP(CTransGL, CDialog)
//{{AFX_EVENTSINK_MAP(CTransGL)
ON_EVENT(CTransGL, IDC_MSCOMM1, 1 /* OnComm */, OnOnCommMscomm1, VTS_NONE)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
void CTransGL::OnOnCommMscomm1()
{
// TODO: Add your control notification handler code here
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048];
CString strtemp;
switch(m_bottoncomumui.GetCommEvent())
{
case 1: //comEvSend發送數據
break;
case 2: //comEvReceive讀取數據
variant_inp=m_bottoncomumui.GetInput();//讀緩沖區
safearray_inp=variant_inp;//VARIANT型變量轉換為COleSafeArray型變量
len=safearray_inp.GetOneDimSize();//得到有效數據長度
//接收數據
for(k=0;k<len;k++)
{
safearray_inp.GetElement(&k,rxdata+k);//轉換為BYTE型數組
BYTE bt=*(char *)(rxdata+k);//字符型
strtemp.Format("%c",bt);//將字符送入臨時變量strtemp存放
m_sStatus3 += strtemp;
}
// if(m_sStatus3.Find("OK")>=0)
// m_sStatus1="成功";
UpdateData(FALSE);//回顯
string strNum="";
if(m_sStatus3.Find("+CMT:")>=0)//處理消息內容
{
PDU P;
int index=m_sStatus3.Find("+CMT:");
CString str=m_sStatus3.Mid(index);
index=str.Find("\r");
string content=str.Mid(index+2);
// string strTime=P.GetDataTime(content).substr(12);
string strTime=P.GetDataTime(content);
strNum=P.GetTelphone(content).substr(2);
CString sAlarm;
sAlarm.Format("時間:%s\r\n",strTime.c_str());
string strCont;
if(P.IsPDU(content))
strCont=P.GetContent(content);
else
strCont=P.GetTextContent(content);
// CTransJS sl;
// sl.m_sStatus2=strCont.c_str();
// sAlarm+=str;
// str.Format("內容:%s",strCont.c_str());
// UpdateData(FALSE);
if(!(m_sStatus3.Find("The monitor is ready!")>=0))
{
CDatabase1 database2;
if(!database2.ConnectDB())
{
return;
}
CString charset="set names 'gb2312'";//使之正常顯示中文,或用set character_set_results=gb2312;
database2.ExecuteSQL(charset,charset.GetLength());//執行語句.
Data_Param result;
result.tab_name="trans_info";
result.select_exp="TRANS_num,TRANS_ID,TRANS_tel,remark";
CString def;
def.Format("TRANS_tel='%s'",strNum.c_str());
// def="duty_name like '%"+name+"%'";
result.where_def=def.GetBuffer(100);
if(database2.SelectRecord(&result))
{
int count=(int)database2.GetRowNum();
for(int i=0;i<count;i++)
{
database2.SeekData(i);
MYSQL_ROW row=database2.GetRecord();
///確定變壓器是否已經在監控列表中
CDatabase1 database5;
if(!database5.ConnectDB())
{
AfxMessageBox("連接服務器失敗!");
return;
}
CString charset5="set names 'gb2312'";//使之正常顯示中文,或用set character_set_results=gb2312;
database5.ExecuteSQL(charset5,charset5.GetLength());//執行語句
Data_Param result5;
CString def5;
result5.tab_name="trans_stat";
result5.select_exp="STAT_ID";
def5.Format("TRANS_tel='%s'",strNum.c_str());
result5.where_def=def5.GetBuffer(100);
if(database5.SelectRecord(&result5))
{
int row_num5=(int)database5.GetRowNum();
if(row_num5>0)
{
AfxMessageBox("變壓器已經列入監控!");
return;
}
CDatabase1 database;
if(!database.ConnectDB())
{
AfxMessageBox("連接服務器失敗!");
return;
}
CString charset="set names 'gb2312'";//使之正常顯示中文,或用set character_set_results=gb2312;
database.ExecuteSQL(charset,charset.GetLength());//執行語句.
CString sSQL;
sSQL.Format("insert into trans_js (TRANS_TEL) values ('%s')",
strNum.c_str());
if(!database.ExecuteSQL(sSQL,sSQL.GetLength()))
{
AfxMessageBox("操作失敗!");
break;
}
}
//寫入JS中
///錄入變壓器的初始直
CDatabase1 database3;
if(!database3.ConnectDB())
{
return;
}
CString charset4="set names 'gb2312'";//使之正常顯示中文,或用set character_set_results=gb2312;
database3.ExecuteSQL(charset4,charset4.GetLength());//執行語句.
CString a1,a2,info3;
a1=" ";
a2=" ";
info3.Format("insert into trans_stat (TRANS_ID,TRANS_TEL,place,STATUS,STAT_TIME) values('%s','%s','%s','%s','%s')",
row[1],row[2],row[3],a1,a2);
//strQuery.tab_name="trans_info (TEL,INFO)";
//info.Format("\'%s\',\'%s\'",m_strTel,m_strInfo);
//sprintf(SQL,info);
//strQuery.insert_val=SQL;
//if(!database.InsertRecord(&strQuery))
if(!database3.ExecuteSQL(info3,info3.GetLength()))
{
AfxMessageBox("插入數據失敗!");
return;
}
}
}
binddutytrans();
ShowTrans();
}
}
///刪除變壓器
// if(!(m_sStatus3.Find("The monitor is closed!")>=0))
if(!(m_sStatus3.Find("The monitor is closed!")>=0))
{
CDatabase1 database;
if(!database.ConnectDB())
{
return;
}
CString charset1="set names 'gb2312'";//使之正常顯示中文,或用set character_set_results=gb2312;
database.ExecuteSQL(charset1,charset1.GetLength());//執行語句
CString strSQL;
//strSQL.Format("delete from trans_info where trans_id='%s'",m_ctrTrans.GetItemText(n-1,0));
strSQL.Format("delete from trans_js where trans_tel='%s'",strNum.c_str());
if(!database.ExecuteSQL(strSQL,strSQL.GetLength()))
{
AfxMessageBox("刪除失敗!");
return;
}
//刪除監控中的數據
CDatabase1 database2;
if(!database2.ConnectDB())
{
return;
}
CString strSQL1;
CString charset5="set names 'gb2312'";//使之正常顯示中文,或用set character_set_results=gb2312;
database2.ExecuteSQL(charset5,charset5.GetLength());//執行語句.
strSQL1.Format("delete from trans_stat where trans_tel='%s'",strNum.c_str());
if(!database2.ExecuteSQL(strSQL1,strSQL1.GetLength()))
{
AfxMessageBox("刪除失敗!");
return;
}
// m_sStatus3="";
//顯示
binddutytrans();
ShowTrans();
}
break;
// default:
// m_bottoncomumui.SetOutBufferCount(0);
// break;
}
}
bool CTransGL::InitCom()
{
if (m_bottoncomumui.GetPortOpen())
m_bottoncomumui.SetPortOpen(false);//如果是打開的,則先關閉串口
m_bottoncomumui.SetCommPort(1); //選擇COM1
m_bottoncomumui.SetInBufferSize(1024);//設置輸入緩沖區大小
m_bottoncomumui.SetOutBufferSize(1024);//設置輸出緩沖區大小
m_bottoncomumui.SetInputLen(0);//設置當前接收區數據長度為0,表示全部讀取
m_bottoncomumui.SetInputMode(1);//以二進制方式讀寫數據
m_bottoncomumui.SetRThreshold(1);//當接收緩沖區有1個及1個以上字符時,將引發接收數據的OnComm事件
m_bottoncomumui.SetSettings("9600,n,8,1");//波特率9600,無校驗位,8個數據位,1個停止位
if(!m_bottoncomumui.GetPortOpen())
{ m_bottoncomumui.SetPortOpen(TRUE);
AfxMessageBox("串口連接成功!");
}
else
{ m_bottoncomumui.SetInBufferCount(0);
AfxMessageBox("串口連接失敗");
}
return true;
}
void CTransGL::receive()
{
}
bool CTransGL::OnStart()
{
try
{
if(!InitCom())
return FALSE;
// m_sStatus3="";
m_bottoncomumui.SetOutput(COleVariant("AT\r"));
Sleep(1000);
OnOnCommMscomm1();
m_bottoncomumui.SetOutput(COleVariant("AT+CNMI=2,2,0,1,1\r"));
m_bottoncomumui.SetOutput(COleVariant("AT+CMGF=0\r"));
//得到SIM卡基本信息
//短信中心
//卡號
m_sStatus3="";
// if(m_sStatus1.Find("OK")>=0)
// {m_sStatus1="連接成功";UpdateData(FALSE);return TRUE;}
// else {m_sStatus1="連接失敗";UpdateData(FALSE);return FALSE;}
}
catch (...)
{
//AfxMessageBox(ex.what());
return FALSE;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -