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

📄 tstdemdlg.cpp

📁 使用VC发送短信的原码程序,可以直接用,也可以做二次开发
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	int i=0;
	//for(i=0;i<18;i++)
	{


		//-----Normal test--------
		sprintf(szHeader,"%s,1,1,1,0,1",m_Phone);
		sprintf(szMsg,"%s,%02d",m_ShortMsg,i);
		MessageBox(szHeader);
		MessageBox(szMsg);
		int nRc=fnSendMsg(PortNo,szHeader,szMsg);

		//-----WapPush test--------
		//sprintf(szHeader,"%s,1,1,1,1,1",m_Phone);
		//memset(szMsg,0,sizeof(szMsg));
		//fnWapPushCvt("恭喜发财","wap.163.com",szMsg);
		//int nRc=fnSendMsg(PortNo,szHeader,szMsg);

		if((nRc>=0)&&(nRc<8)) {
			csTmp.Format("提交成功,发送端口为:%d",nRc+1);
			MessageBox(csTmp);
		}else {
			csTmp.Format("提交失败,错误代码 %d",nRc);
			MessageBox(csTmp);
		}
	}
}

void CTstDemDlg::OnButRead()
{
	int PortNo;
	CString csTmp;
	char szHeader[100]={0};
	char szMsg[500]={0};
	UpdateData(TRUE);

	if(m_iComPort==8) PortNo=-1; //所有端口
	else PortNo=m_iComPort;      //端口1-8
	
	int nRc=fnReadMsgEx(PortNo,szHeader,szMsg); //读信息
	if((nRc==0)) {
		int nRecType=atoi(szHeader);
		int pno=atoi(szHeader+2);
		switch(nRecType){
		case 0:csTmp.Format("端口:%d, 类型:接收信息,参数:%s,信息:%s",pno+1,szHeader,szMsg); break;
		case 1:csTmp.Format("端口:%d, 类型:发送成功报告,参数:%s,信息:%s",pno+1,szHeader,szMsg); break;
		case 2:csTmp.Format("端口:%d, 类型:发送失败报告,参数:%s,信息:%s",pno+1,szHeader,szMsg); break;
		case 3:csTmp.Format("端口:%d, 类型:发送失败超时1,参数:%s,信息:%s",pno+1,szHeader,szMsg); break;
		case 4:csTmp.Format("端口:%d, 类型:发送失败超时2,参数:%s,信息:%s",pno+1,szHeader,szMsg); break;
		case 5:csTmp.Format("端口:%d, 类型:取消发送,参数:%s,信息:%s",pno+1,szHeader,szMsg); break;
		case 6:csTmp.Format("端口:%d, 类型:接收状态报告,参数:%s,信息:%s",pno+1,szHeader,szMsg); break;
		default:
			csTmp.Format("端口:%d, 类型:未知状态,参数:%s,信息:%s",pno+1,szHeader,szMsg); break;
			break;
		}

		MessageBox(csTmp);
	}else if(nRc==-1){
		MessageBox("无信息");
	}else{
		csTmp.Format("接收失败,错误代码 %d",nRc);
		MessageBox(csTmp);
	}
}
CString GetSubStr(char *str, int nItem)
{
	CString cst;
	char szBuf[2048]={0};
	int j;
	int i=0;
	int pos=0;
	while(pos<nItem){
		if(str[i]==0) return "";
		if(str[i++]==',') pos++;
	}
	j=0;
	while(str[i]){
		if(str[i]==',')break;
		szBuf[j++]=str[i++];
		if(j>=2047) break;
	}
	cst=szBuf;
	return cst;
}

void CTstDemDlg::OnButRead2() 
{
	int PortNo;
	CString csTmp;
	char szHeader[100]={0};
	char szMsg[500]={0};
	UpdateData(TRUE);

	//AfxMessageBox("safds");
	if(m_iComPort==8) PortNo=-1; //所有端口
	else PortNo=m_iComPort;      //端口1-8
	
	int nRc=fnReadMsgExNotDelete(PortNo,szHeader,szMsg); //读信息
	if((nRc==0)) {
		int nRecType=atoi(szHeader);
		int pno=atoi(szHeader+2);
		int idx;
		switch(nRecType){
		case 0:{
			csTmp.Format("端口:%d, 类型:接收信息,参数:%s,信息:%s",pno+1,szHeader,szMsg);
			idx=atoi(GetSubStr(szHeader,10));
			int rcc=fnDeleteSimMsg(pno,idx);
			CString cst;
			cst.Format("delete idx=%d,rcc=%d",idx,rcc);
			AfxMessageBox(cst);
			}
			break;
		case 1:csTmp.Format("端口:%d, 类型:发送成功报告,参数:%s,信息:%s",pno+1,szHeader,szMsg); break;
		case 2:csTmp.Format("端口:%d, 类型:发送失败报告,参数:%s,信息:%s",pno+1,szHeader,szMsg); break;
		case 3:csTmp.Format("端口:%d, 类型:发送失败超时1,参数:%s,信息:%s",pno+1,szHeader,szMsg); break;
		case 4:csTmp.Format("端口:%d, 类型:发送失败超时2,参数:%s,信息:%s",pno+1,szHeader,szMsg); break;
		case 5:csTmp.Format("端口:%d, 类型:取消发送,参数:%s,信息:%s",pno+1,szHeader,szMsg); break;
		case 6:{
			csTmp.Format("端口:%d, 类型:接收状态报告,参数:%s,信息:%s",pno+1,szHeader,szMsg); 
			idx=atoi(GetSubStr(szHeader,10));
			int rcc=fnDeleteSimMsg(pno,idx);
			CString cst;
			cst.Format("delete idx=%d,rcc=%d",idx,rcc);
			AfxMessageBox(cst);
			}
			break;
		default:
			csTmp.Format("端口:%d, 类型:未知状态,参数:%s,信息:%s",pno+1,szHeader,szMsg); break;
			break;
		}

		MessageBox(csTmp);
	}else if(nRc==-1){
		MessageBox("无信息");
	}else{
		csTmp.Format("接收失败,错误代码 %d",nRc);
		MessageBox(csTmp);
	}
}

void CTstDemDlg::OnButClose() 
{
	int PortNo;
	UpdateData(TRUE);
	if(m_iComPort==8) PortNo=-1; //所有端口
	else PortNo=m_iComPort;      //端口1-8

	int nRc=fnCloseModem(PortNo); //关闭端口

	if(nRc==0) MessageBox("释放成功");
	else {
		CString csTmp;
		csTmp.Format("释放失败,错误代码 %d",nRc);
		MessageBox(csTmp);
	}
}

void CTstDemDlg::OnDestroy() 
{
//====------------------------------------------------
//释放DLL动态库
	if(hInsDLL!=NULL)
		FreeLibrary(hInsDLL);
//====------------------------------------------------
	CDialog::OnDestroy();
	
	
}

void CTstDemDlg::OnTimer(UINT nIDEvent) 
{
//====------------------------------------------------
//读取端口状态定时器
	CString csTmp;
	if(nIDEvent==1){
		for(int i=0;i<8;i++){
			int rc=fnGetStatus(i);
			csTmp.Format("COM%d:%d",i+1,rc);
			GetDlgItem(IDC_STS1+i)->SetWindowText(csTmp);
		}
	}
//====------------------------------------------------
	CDialog::OnTimer(nIDEvent);
}

void CTstDemDlg::OnButReadQue() 
{
//====------------------------------------------------
//读取发送缓冲区信息条数
	int PortNo;
	CString csTmp;
	UpdateData(TRUE);
	if(m_iComPort==8) PortNo=-1; //所有端口
	else PortNo=m_iComPort;      //端口1-8

	int nRc=fnGetSndCount(PortNo); //

	if(nRc>=0) csTmp.Format("发送缓冲区:%d",nRc);
	else {
		csTmp.Format("读取错误,端口号码错 %d",nRc);
	}
	MessageBox(csTmp);
//====------------------------------------------------
}

void CTstDemDlg::OnButReadRec() 
{
//====------------------------------------------------
//读取接收缓冲区信息条数(包含发送结果)
	int PortNo;
	CString csTmp;
	UpdateData(TRUE);
	if(m_iComPort==8) PortNo=-1; //所有端口
	else PortNo=m_iComPort;      //端口1-8

	int nRc=fnGetRecCount(PortNo); //

	if(nRc>=0) csTmp.Format("接收缓冲区:%d",nRc);
	else {
		csTmp.Format("读取错误,端口号码错 %d",nRc);
	}
	MessageBox(csTmp);
//====------------------------------------------------
}

void CTstDemDlg::OnButClearQue() 
{
//====------------------------------------------------
//清除发送缓冲区信息
	int PortNo;
	CString csTmp;
	UpdateData(TRUE);
	if(m_iComPort==8) PortNo=-1; //所有端口
	else PortNo=m_iComPort;      //端口1-8

	int nRc=fnClrSndBuf(PortNo); //

	if(nRc>=0) csTmp.Format("清除发送缓冲区:%d",nRc);
	else {
		csTmp.Format("清除错误,端口号码错 %d",nRc);
	}
	MessageBox(csTmp);
//====------------------------------------------------
}

void CTstDemDlg::OnButClearRec() 
{
//====------------------------------------------------
//清除接收缓冲区信息
	int PortNo;
	CString csTmp;
	UpdateData(TRUE);
	if(m_iComPort==8) PortNo=-1; //所有端口
	else PortNo=m_iComPort;      //端口1-8

	int nRc=fnClrRecBuf(PortNo); //

	if(nRc>=0) csTmp.Format("清除接收缓冲区:%d",nRc);
	else {
		csTmp.Format("清除错误,端口号码错 %d",nRc);
	}
	MessageBox(csTmp);
//====------------------------------------------------
}

void CTstDemDlg::OnChangeSmsg() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	
}

⌨️ 快捷键说明

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