📄 messview.cpp
字号:
// messView.cpp : implementation of the CMessView class
//
#include "stdafx.h"
#include "mess.h"
#include "./tao/sms.h"
#include "./tao/Comm.h"
#include "./tao/convert.h"
#include "./tao/res.h"
#include "messDoc.h"
#include "messView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// 串口设备句柄
extern HANDLE hComm;
/////////////////////////////////////////////////////////////////////////////
// CMessView
IMPLEMENT_DYNCREATE(CMessView, CFormView)
BEGIN_MESSAGE_MAP(CMessView, CFormView)
//{{AFX_MSG_MAP(CMessView)
ON_BN_CLICKED(IDC_BUTTON1, OnSendMessage)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
ON_BN_CLICKED(IDC_BUTTON8, OnButton8)
ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMessView construction/destruction
CMessView::CMessView()
: CFormView(CMessView::IDD)
{
//{{AFX_DATA_INIT(CMessView)
m_content = _T("");
m_phonenum = _T("");
m_messcontent = _T("");
m_sendnum = _T("");
m_date = _T("");
m_list = 0;
//}}AFX_DATA_INIT
// TODO: add construction code here
}
CMessView::~CMessView()
{
}
void CMessView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMessView)
DDX_Text(pDX, IDC_EDIT1, m_content);
DDX_Text(pDX, IDC_EDIT3, m_phonenum);
DDX_Text(pDX, IDC_EDIT5, m_messcontent);
DDX_Text(pDX, IDC_EDIT6, m_sendnum);
DDX_Text(pDX, IDC_EDIT4, m_date);
DDX_Text(pDX, IDC_EDIT7, m_list);
//}}AFX_DATA_MAP
}
BOOL CMessView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CFormView::PreCreateWindow(cs);
}
void CMessView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
}
/////////////////////////////////////////////////////////////////////////////
// CMessView diagnostics
#ifdef _DEBUG
void CMessView::AssertValid() const
{
CFormView::AssertValid();
}
void CMessView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
CMessDoc* CMessView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMessDoc)));
return (CMessDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMessView message handlers
//*************************往 13811134280 上发消息*********************//
//**** at+cmgf=1
//**** at+cmgs=+8613811134280,4
//**** ctl+z
void CMessView::OnSendMessage()
{
OpenComm("COM1",9600);
WriteComm("ATD13811134280;\r\n", 20);
}
void CMessView::OnButton2()
{
}
BEGIN_EVENTSINK_MAP(CMessView, CFormView)
//{{AFX_EVENTSINK_MAP(CMessView)
ON_EVENT(CMessView, IDC_MSCOMM1, 1 /* OnComm */, OnOnComm, VTS_NONE)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
void CMessView::OnOnComm()
{
}
void CMessView::OnButton3()
{
}
void CMessView::OnButton4()
{
}
void longdelay(void)
{
unsigned int i;
for(i=0xffff;i>0;i--);
for(i=0xffff;i>0;i--);
for(i=0xffff;i>0;i--);
for(i=0xffff;i>0;i--);
}
int CMessView::OnButton5()
{
UpdateData(true);
int i=0,length,nLength,index;
char sms[200];
char cmd[50];
char ans[100];
char pSour[256];
if(hComm!=NULL)
CloseHandle(hComm);
//OpenComm("COM1",115200,0,8,1);
while (!OpenComm("COM1",115200))
{
MessageBox("无法打开端口%s! 现在设置吗?");
return 0;
}
//OpenComm(const char* pPort, int nBaudRate, int nParity, int nByteSize, int nStopBits)
// 发送command
//cmd="at\n"
WriteComm(cmdAT, strlen(cmdAT)); // 先输出命令串
for(i=0;i<100;i++)
ans[i]=0;
nLength = ReadComm(ans, 128); // 读应答数据
if(strcmp(ans,ansok))
return 0;
//cmd="at+fset=0\n";
WriteComm(cmdfset, strlen(cmdfset)); // 先输出命令串
for(i=0;i<100;i++)
ans[i]=0;
nLength = ReadComm(ans, 128); // 读应答数据
if(strcmp(ans,ansfset))
return 0;
//cmd="at+cad?\n";
WriteComm(cmdcad, strlen(cmdcad)); // 先输出命令串
for(i=0;i<100;i++)
ans[i]=0;
nLength = ReadComm(ans, 128); // 读应答数据
if(strcmp(ans,anscad1))
return 0;
//cmd="at+smsg=1\n";
WriteComm(cmdsmsg, strlen(cmdsmsg)); // 先输出命令串
for(i=0;i<100;i++)
ans[i]=0;
nLength = ReadComm(ans, 128); // 读应答数据
if(strcmp(ans,ansok))
return 0;
// cmd="at+smss?\n";
WriteComm(cmdsmss, strlen(cmdsmss)); // 先输出命令串
for(i=0;i<100;i++)
ans[i]=0;
nLength = ReadComm(ans, 128); // 读应答数据
if(strcmp(ans,anssmss3)) //检查是否
return 0;
//发送短信内容
int numlength;
numlength=strlen(m_sendnum);
strcpy(pSour,m_content);
length=GB_UNICOD(pSour);
length=length*2;
index=0;
sms[index++]=0x07; //index=0
sms[index++]=1+numlength+11; //index=1
sms[index]=0;
strcat(sms,m_sendnum);
index=index+numlength;
for(i=index;i<index+11;i++)
{
sms[i]=0x20;
}
index+=11;
for(i=0;i<length;i++)
sms[index++]=pSour[i];
sms[index]=0;
sms[1]=length+sms[1];
// 发送短消息
WriteComm(sms, sms[1]+1);
longdelay();
// cmd="at+smss?\n";
WriteComm(cmdsmss, strlen(cmdsmss)); // 先输出命令串
for(i=0;i<100;i++)
ans[i]=0;
nLength = ReadComm(ans, 128); // 读应答数据
while( (strcmp(ans,anssmss1)!=0) && (strcmp(ans,anssmss2)!=0) )
{
WriteComm(cmdsmss, strlen(cmdsmss)); // 先输出命令串
for(i=0;i<100;i++)
ans[i]=0;
nLength = ReadComm(ans, 128); // 读应答数据
if(strcmp(ans,anssmss1)) //检查是否
return 1;
else
return 0;
}
}
void CMessView::OnButton6()
{
UpdateData(true);
if(hComm!=NULL)
CloseHandle(hComm);
OpenComm("COM1",9600);
SM_PARAM SmParam;
memset(&SmParam, 0, sizeof(SM_PARAM));
int nLength;
int nMsg; // 短消息计数值
char* ptr; // 内部用的数据指针
char cmd[30];
char ans[1024];
nMsg = 0;
ptr = ans;
sprintf(cmd,"AT+CMGr=%d\r",m_list);
WriteComm(cmd,strlen(cmd));
nLength = ReadComm(ans,1024);
//ptr = strstr(ptr, "+CMGL:");
ptr += 6; // 跳过"+CMGL:", 定位到序号
sscanf(ptr, "%d", &SmParam.index); // 读取序号
ptr = strstr(ptr, "\r\n"); // 找下一行
if (ptr != NULL)
{
ptr += 2; // 跳过"\r\n", 定位到PDU
gsmDecodePdu(ptr, &SmParam); // PDU串解码
}
m_messcontent = SmParam.TP_UD;
m_phonenum = SmParam.TPA;
char date[17] = "00000";
for (int i=0;i<8;i++ )
date[0] = SmParam.TP_SCTS[0];
date[1] = SmParam.TP_SCTS[1];
date[2] = '-';
date[3] = SmParam.TP_SCTS[2];
date[4] = SmParam.TP_SCTS[3];
date[5] = '-';
date[6] = SmParam.TP_SCTS[4];
date[7] = SmParam.TP_SCTS[5];
date[8] = ' ';
date[9] = SmParam.TP_SCTS[6];
date[10] = SmParam.TP_SCTS[7];
date[11] = ':';
date[12] = SmParam.TP_SCTS[8];
date[13] = SmParam.TP_SCTS[9];
date[14] = ':';
date[15] = SmParam.TP_SCTS[10];
date[16] = SmParam.TP_SCTS[11];
date[16] = 0;
m_date = date;
UpdateData(false);
}
void CMessView::OnButton7()
{
}
void CMessView::OnButton8()
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -