📄 mobmsgdlg.cpp
字号:
{
SendSystemInfo("手机连接失败!",0);
return;
}
memset(Sendinstruction,0,20);
::Sleep(300);
memcpy(Sendinstruction,"AT+CMGF=0",9);///##########执行AT+CMGF=0操作
memcpy(Sendinstruction+strlen(Sendinstruction),"\r",2);
if (!WriteFile(Mobile, Sendinstruction, strlen(Sendinstruction), &num, NULL))
{
SendSystemInfo("手机连接失败!",0);
return;
}
memset(Sendinstruction,0,20);
memcpy(Sendinstruction,"AT+CMGS=",8);///##########执行AT+CMGS=操作
memcpy(Sendinstruction+strlen(Sendinstruction),StrLength,strlen(StrLength));
memcpy(Sendinstruction+strlen(Sendinstruction),"\r",2);
::Sleep(500);
if (!WriteFile(Mobile, Sendinstruction, strlen(Sendinstruction), &num, NULL))
{
SendSystemInfo("手机连接失败!",0);
return;
}
memcpy(cSendShortMsgToMob,instruction,strlen(instruction));//最终所发送的
memcpy(cSendShortMsgToMob+strlen(cSendShortMsgToMob),"\x01a\r",7);
int iinstrlen =strlen(cSendShortMsgToMob);
::Sleep(2000);
if (!WriteFile(Mobile, cSendShortMsgToMob, iinstrlen, &num, NULL))
{
SendSystemInfo("手机连接失败!",0);
return;
}
CString sSendMsg = "(" ;
sSendMsg = sSendMsg + sMobNo + ")" +MsgInfo;
SendSystemInfo("短信已发出!"+sSendMsg,1);
return;
}
///////////////////////////////////////////////////////////
//////////////以下为读写短讯的代码
////////////////////////////////////////////////////////////
wchar_t* translateFromUnicode(char *buf, int len)
{
wchar_t *wStr;
char *str = new char[len+2];
memset(str, 0, len+2);
for (int i = 0; i<len/2; i++)
{
str[i*2] = buf[i*2+1];
str[i*2+1] = buf[i*2];
}
wStr = (wchar_t*)str;
return wStr;
}
char* charToHex(char *cBuf)
{
int len = strlen(cBuf)/2;
char *buf = new char[len+1];
memset(buf, 0, len+1);
char cTmp;
for (int i = 0; i<len; i++)
{
if (cBuf[i*2]>'9')
cTmp = cBuf[i*2] - 'A' + 10;
else cTmp = cBuf[i*2] - '0';
buf[i] = cTmp <<4;
if (cBuf[i*2+1] > '9')
cTmp = cBuf[i*2+1] - 'A' +10;
else cTmp = cBuf[i*2+1] - '0';
buf[i] = cTmp | buf[i];
}
return buf;
}
char* getPhoneNumber(char *buf, int len)
{
memset(SenderBuf,0,1024);
for (int i = 0; i<(len+1)/2; i++)
{
SenderBuf[i*2] = buf[i*2+1];
SenderBuf[i*2+1] = buf[i*2];
}
SenderBuf[len] = 0;
return SenderBuf;
}
char* translateFromMobile(char *buf)
{
int num = strlen(buf);
int nCnt = (int)ceil(num*8.0/7) + 1;
char* oBuf = new char[nCnt];
memset(oBuf, 0, nCnt);
unsigned char remain = 7; //当前字符还要几位才满
unsigned char cTmp, flag;
nCnt = 0;
for (int i = 0; i<num; i++)
{
flag = 0x7F;
flag = flag >> (7 - remain);
cTmp = buf[i] & flag;
cTmp = cTmp << (7 - remain);
oBuf[nCnt] = oBuf[nCnt] | cTmp;
nCnt++;
flag = 0xFF;
flag = flag << remain;
cTmp = buf[i] & flag;
cTmp = cTmp >> remain;
oBuf[nCnt] = cTmp;
remain = 7 - (8 - remain);
if (remain == 0)
{
remain = 7;
nCnt++;
}
}
return oBuf;
}
//-----------------------------------与点播服务交流消息
bool SendOrGetMsgFromServer()
{
HOSTENT *host;
int nRtn = 0;
SOCKADDR_IN addrSrv;
sockClt = socket(AF_INET,SOCK_STREAM,0);
if (sockClt == INVALID_SOCKET)
{
SendSystemInfo("与点播服务器连接失败!",0);
return false;
}
CString sTmpInfo = "";
host = gethostbyname(ServerIP);
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(iServerPort);
addrSrv.sin_addr = *(struct in_addr*)host->h_addr;
nRtn = connect(sockClt,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
if (nRtn != 0)
{
SendSystemInfo("与点播服务器连接失败!",0);
return false;
}
nRtn = send(sockClt,sendMsg,sizeof(sendMsg),0);
if (nRtn == SOCKET_ERROR)
{
SendSystemInfo("与点播服务器连接失败!",0);
return false;
}
nRtn = recv(sockClt,sMsgRtn,sizeof(sMsgRtn),0);
if (nRtn == SOCKET_ERROR)
{
SendSystemInfo("与点播服务器连接失败!",0);
return false;
}
/////@@@@@@@@@@@@@以下为点播服务器中返回的信息
sMsgRtn[99] = 0;
////#######################################以下为绑定返回信息
if (memcmp(sMsgRtn, "^^105", 5) == 0) //返回卡号正确信息
{
memset(sendMsg,0,100);
memcpy(sendMsg,sMsgRtn,100);
closesocket(sockClt);
sockClt = INVALID_SOCKET;
return true;
}
if (memcmp(sMsgRtn, "^^106", 5) == 0) //返回卡号错误信息
{
sTmpInfo = StrSmsCenterCode;
SendMsgInfo(StrSmsCenterCode,MsgMobNo,"IC卡号码不存在!");//卡号错误
sTmpInfo += MsgMobNo;
sTmpInfo += "IC卡号码不存在!";
SendSystemInfo(sTmpInfo,1);//*/
memset(sendMsg,0,100);
memcpy(sendMsg,sMsgRtn,100);
closesocket(sockClt);
sockClt = INVALID_SOCKET;
return false;
}
if (memcmp(sMsgRtn, "^^111", 5) == 0) //绑定成功
{
sTmpInfo =StrSmsCenterCode;
SendMsgInfo(StrSmsCenterCode,MsgMobNo,"电话点播业务绑定成功!");//绑定成功
sTmpInfo += MsgMobNo;
sTmpInfo += "绑定成功!";
SendSystemInfo(sTmpInfo,1);
memset(sendMsg,0,100);
memcpy(sendMsg,sMsgRtn,100);
closesocket(sockClt);
sockClt = INVALID_SOCKET;
return true;
}
if (memcmp(sMsgRtn, "^^112", 5) == 0) //此电话已绑定到其它卡号
{
sTmpInfo = StrSmsCenterCode;
SendMsgInfo(StrSmsCenterCode,MsgMobNo,"此电话已绑定到其它IC卡号!");//此电话已绑定到其它卡号
sTmpInfo += MsgMobNo;
sTmpInfo += "此电话已绑定到其它卡号!";
SendSystemInfo(sTmpInfo,1);
memset(sendMsg,0,100);
memcpy(sendMsg,sMsgRtn,100);
closesocket(sockClt);
sockClt = INVALID_SOCKET;
return false;
}
if (memcmp(sMsgRtn, "^^113", 5) == 0) //绑定失败
{
sTmpInfo = StrSmsCenterCode;
SendMsgInfo(StrSmsCenterCode,MsgMobNo,"电话点播业务绑定失败!");//卡绑定失败
sTmpInfo += MsgMobNo;
sTmpInfo += "绑定失败!";
SendSystemInfo(sTmpInfo,1);
memset(sendMsg,0,100);
memcpy(sendMsg,sMsgRtn,100);
closesocket(sockClt);
sockClt = INVALID_SOCKET;
return false;
}
////#######################################取消绑定所返回增加信息
if (memcmp(sMsgRtn, "^^101", 5) == 0) //电话已绑定到卡号
{
memset(RequestIcCardNo,0,20);
memcpy(RequestIcCardNo,sMsgRtn + 28,20);
memset(sendMsg,0,100);
memcpy(sendMsg,sMsgRtn,100);
closesocket(sockClt);
sockClt = INVALID_SOCKET;
return true;
}
if (memcmp(sMsgRtn, "^^102", 5) == 0) //电话未绑定到任何卡号
{
sTmpInfo =StrSmsCenterCode;
SendMsgInfo(StrSmsCenterCode,MsgMobNo,"电话未绑定到任何卡号!");
sTmpInfo += MsgMobNo;
sTmpInfo += "电话未绑定到任何卡号!";
SendSystemInfo(sTmpInfo,1);
memset(sendMsg,0,100);
memcpy(sendMsg,sMsgRtn,100);
closesocket(sockClt);
sockClt = INVALID_SOCKET;
return false;
}
if (memcmp(sMsgRtn, "^^103", 5) == 0) //取消绑定成功
{
sTmpInfo = StrSmsCenterCode;
SendMsgInfo(StrSmsCenterCode,MsgMobNo,"电话点播业务取消成功!");
sTmpInfo += MsgMobNo;
sTmpInfo += "取消绑定成功!";
SendSystemInfo(sTmpInfo,1);
memset(sendMsg,0,100);
memcpy(sendMsg,sMsgRtn,100);
closesocket(sockClt);
sockClt = INVALID_SOCKET;
return true;
}
if (memcmp(sMsgRtn, "^^104", 5) == 0) //取消绑定失败
{
sTmpInfo = StrSmsCenterCode;
SendMsgInfo(StrSmsCenterCode,MsgMobNo,"电话点播业务取消失败(电话未绑定点播业务或点播业务被锁定)!");
sTmpInfo += MsgMobNo;
sTmpInfo += "取消绑定失败(电话未绑定或被锁定)!";
SendSystemInfo(sTmpInfo,1);
memset(sendMsg,0,100);
memcpy(sendMsg,sMsgRtn,100);
closesocket(sockClt);
sockClt = INVALID_SOCKET;
return false;
}
////######################################/用户点播返回消息
if (memcmp(sMsgRtn, "^^121", 5) == 0) //节目代号正确
{
memset(sendMsg,0,100);
memcpy(sendMsg,sMsgRtn,100);
closesocket(sockClt);
sockClt = INVALID_SOCKET;
return true;
}
if (memcmp(sMsgRtn, "^^122", 5) == 0) //节目代号错误
{
memset(sendMsg,0,100);
memcpy(sendMsg,sMsgRtn,100);
closesocket(sockClt);
sockClt = INVALID_SOCKET;
return false;
}
////##################////////////////用户点播确认返回消息
if (memcmp(sMsgRtn, "^^141", 5) == 0) //点揪确认成功
{
sTmpInfo = StrSmsCenterCode;
if (nTvodCostFlag == 0) //如果不是免费节目
SendMsgInfo(StrSmsCenterCode,MsgMobNo,"短讯点播确认成功!");
else //如果是免费节目
SendMsgInfo(StrSmsCenterCode,MsgMobNo,"欢迎点播本节目!");
sTmpInfo += MsgMobNo;
sTmpInfo += "点播确认成功!";
SendSystemInfo(sTmpInfo,1);
memset(sendMsg,0,100);
memcpy(sendMsg,sMsgRtn,100);
closesocket(sockClt);
sockClt = INVALID_SOCKET;
return true;
}
if (memcmp(sMsgRtn, "^^142", 5) == 0) //点播确认失败
{
sTmpInfo = StrSmsCenterCode;
if (nTvodCostFlag == 0) //如果不是免费节目
SendMsgInfo(StrSmsCenterCode,MsgMobNo,"短讯点播确认失败!");
else SendMsgInfo(StrSmsCenterCode,MsgMobNo,"免费节目确认失败!");
sTmpInfo += MsgMobNo;
sTmpInfo += "点播确认失败!";
SendSystemInfo(sTmpInfo,1);
memset(sendMsg,0,100);
memcpy(sendMsg,sMsgRtn,100);
closesocket(sockClt);
sockClt = INVALID_SOCKET;
return false;
}
if (memcmp(sMsgRtn, "^^161", 5) == 0) //取消点播节目成功
{
sTmpInfo = MsgMobNo;
SendMsgInfo(StrSmsCenterCode,MsgMobNo,"取消点播节目成功!");
sTmpInfo += "取消点播节目成功!";
SendSystemInfo(sTmpInfo,1);
memset(sendMsg,0,100);
memcpy(sendMsg,sMsgRtn,100);
closesocket(sockClt);
sockClt = INVALID_SOCKET;
return false;
}
if (memcmp(sMsgRtn, "^^162", 5) == 0) //取消点播节目失败
{
sTmpInfo = MsgMobNo;
SendMsgInfo(StrSmsCenterCode,MsgMobNo,"取消点播节目失败!");
sTmpInfo += "取消点播节目失败!";
SendSystemInfo(sTmpInfo,1);
memset(sendMsg,0,100);
memcpy(sendMsg,sMsgRtn,100);
closesocket(sockClt);
sockClt = INVALID_SOCKET;
return true;
}
return true;
}
//-------------------------用户确认点播
void UserTvodMovieValidate()
{
memset(sendMsg,32,100);
pMsg = sendMsg;
memcpy(pMsg, "^^001", 5);///获取卡号
pMsg += 5;
memcpy(pMsg, MobilChannel, 3);
pMsg += 3;
memcpy(pMsg, MsgMobNo, 20);
pMsg += 20;
sendMsg[98] = '*';
sendMsg[99] = '*';
if (SendOrGetMsgFromServer())
{
memset(sendMsg,32,100);
pMsg = sendMsg;
memcpy(pMsg, "^^051", 5);
pMsg += 5;
memcpy(pMsg, MobilChannel, 3);
pMsg += 3;
memcpy(pMsg, MsgMobNo, 20);
pMsg += 20;
memcpy(pMsg, RequestIcCardNo, 20);
pMsg += 20;
memset(UserRequestMovieNo,0,20);
memcpy(UserRequestMovieNo,"0",1);
memcpy(pMsg, UserRequestMovieNo, 20);
pMsg += 20;
sendMsg[98] = '*';
sendMsg[99] = '*';
SendOrGetMsgFromServer();//验证节目编号
if (memcmp(sMsgRtn, "^^133", 5) == 0) //在有播放节目的情况下进行确认
{
memset(UserRequestMovieNo,0,20);///获取卡号
memcpy(UserRequestMovieNo,sMsgRtn + 48,20);
memset(sendMsg,32,100);
pMsg = sendMsg;
memcpy(pMsg, "^^061", 5);
pMsg += 5;
memcpy(pMsg, MobilChannel, 3);
pMsg += 3;
memcpy(pMsg, MsgMobNo, 20);
pMsg += 20;
memcpy(pMsg, RequestIcCardNo, 20);
pMsg += 20;
memcpy(pMsg, UserRequestMovieNo,20);
pMsg += 20;
sendMsg[98] = '*';
sendMsg[99] = '*';
SendOrGetMsgFromServer();
}
else
if (memcmp(sMsgRtn, "^^132", 5) == 0) //网络资源分配失败
{
SendMsgInfo(StrSmsCenterCode,MsgMobNo,"点播节目失败,请稍候点播!");//此电话已绑定到其它卡号
memset(sendMsg,0,100);
memcpy(sendMsg,sMsgRtn,100);
closesocket(sockClt);
sockClt = INVALID_SOCKET;
}
}
}
//-------------------------用户按节目编号点播
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -