📄 hgsmsenddlg.cpp
字号:
if(s.MessageCoding==24) {
s.Priority=9;//优先级0-9从低到高,默认为0
}
sprintf(buffer,"SEND:铃声下载:%s %s",ID,sm);
buffer[100]='\0';
xprintf(buffer,"OK");
SaveSubmitSm(s);
}
void CHgsmsendDlg::Submit_Sm_Cont(DEF_SENDPOCKET sendpocket)
{
SUBMIT s;
char short_msg[8192],buffer[1024];
char temptime[11];
int Fee=0,i;
memset(temptime,0,sizeof(temptime));
memset(&s,0,sizeof(SUBMIT));
memset(buffer,0,sizeof(buffer));
s.h.command_id=SGIP_SUBMIT;
s.h.sequence.code=SOURCODE;///源结点码。
MakeTime(temptime);
s.h.sequence.time=atol(temptime);
s.h.sequence.sequence=sequence_number++;
sequence_number%=0x10000000;
if (sendpocket.sourtele!=0l) sprintf(s.ChargeNumber,"8613%09ld",sendpocket.sourtele);
s.UserCount=sendpocket.usercount;
for (i=0;i<sendpocket.usercount;i++) {
sprintf(s.UserNumber[i],"8613%09ld",sendpocket.desttele[i]);
}
s.MessageCoding=sendpocket.messagecoding;//unicode
if (sendpocket.feetype==9) s.FeeType=3; //发计费信息
else s.FeeType=sendpocket.feetype;
memcpy(s.CorpId,CORPID,5);
strcpy(s.SPNumber,SPNUMBER);
strcpy(s.ServiceType,sendpocket.servicetype);
sprintf(s.FeeValue,"%d",sendpocket.feevalue);
if (sendpocket.givenvalue!=0) sprintf(s.GivenValue,"%d",sendpocket.givenvalue);
s.AgentFlag=1;
s.MorelatetoMTFlag=sendpocket.morelatetomtflag;
s.Priority=sendpocket.priority;
//sprintf((s.ExpireTime,"%02d%02d%02d%02d%02d%02d032+",短消息寿命的终止时间,如果为空,表示使用短消息中心的缺省值。时间内容为16个字符,格式为"yymmddhhmmsstnnp" ,其中“tnnp”取固定值“032+”,即默认系统为北京时间);
//sprintf(s.ScheduleTime,"%02d%02d%02d%02d%02d%02d032+",短消息定时发送的时间,如果为空,表示立刻发送该短消息。时间内容为16个字符,格式为“yymmddhhmmsstnnp” ,其中“tnnp”取固定值“032+”,即默认系统为北京时间);
s.ReportFlag=1;
if (sendpocket.feetype==9) {
s.ReportFlag=3; //发计费信息
s.MorelatetoMTFlag=3;
}
//s.TP_pid=GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9;
s.TP_udhi=sendpocket.tp_udhi; //GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9;
//s.MessageType=0;信息类型:0-短消息信息
//memcpy(s.Reserve,保留,扩展用);
int length=sendpocket.messagelength;
if (length>250) {length=250;sendpocket.messagecontent[length]=0;}
if(s.MessageCoding==8||s.MessageCoding==24)//unicode
{
length=AnsiToUnicode(sendpocket.messagecontent,short_msg,1);
s.sm_length=length*2;
memcpy(s.short_message,short_msg,2*length);
}
else//plain
{
s.sm_length=length;
memcpy(s.short_message,sendpocket.messagecontent,length);
}
sprintf(buffer,"SEND:发送结构:13%09ld %s",sendpocket.desttele,sendpocket.messagecontent);
buffer[100]='\0';
xprintf(buffer,"OK");
SaveSubmitSm(s);
}
void CHgsmsendDlg::Submit_Sm_7198(char *ID, int length, char *sm, BYTE saveflag, int data_coding, int esm_class,char * FeeValue,BYTE FeeType,char * ChargeID)
{
SUBMIT s;
char short_msg[8192],buffer[1024];
char temptime[100];
int Fee=0;
memset(temptime,0,sizeof(temptime));
memset(&s,0,sizeof(SUBMIT));
memset(buffer,0,sizeof(buffer));
s.h.command_id=SGIP_SUBMIT;
s.h.sequence.code=SOURCODE;///源结点码。
MakeTime(temptime);
s.h.sequence.time=atol(temptime);
s.h.sequence.sequence=sequence_number++;
sequence_number%=0x10000000;
memset(short_msg,0,sizeof(short_msg));
if(strnicmp(ChargeID,"000",3)==0||strlen(ChargeID)==0) {
sprintf(s.ChargeNumber,"86%s",ID);
}else {
sprintf(s.ChargeNumber,"86%s",ChargeID);
}
sprintf(s.UserNumber[0],"86%s",ID);
s.UserCount=1;
s.MessageCoding=data_coding;//unicode
s.FeeType=FeeType;
memcpy(s.CorpId,CORPID,5);
strcpy(s.SPNumber,SPNUMBER);
//memcpy(s.ServiceType,业务代码,strlen(业务代码));
Fee=atoi(FeeValue);
if(Fee>=100000||Fee<0) {
return;
xprintf("Fee Error!!!","Error");
}
sprintf(s.FeeValue,"%d",Fee);
//sprintf(s.GivenValue,"%d",取值范围0-99999,赠送用户的话费,单位为分,由SP定义);
s.AgentFlag=1;
s.MorelatetoMTFlag=2;
// s.Priority=0;优先级0-9从低到高,默认为0
//sprintf((s.ExpireTime,"%02d%02d%02d%02d%02d%02d032+",短消息寿命的终止时间,如果为空,表示使用短消息中心的缺省值。时间内容为16个字符,格式为"yymmddhhmmsstnnp" ,其中“tnnp”取固定值“032+”,即默认系统为北京时间);
//sprintf(s.ScheduleTime,"02d%02d%02d%02d%02d%02d032+",短消息定时发送的时间,如果为空,表示立刻发送该短消息。时间内容为16个字符,格式为“yymmddhhmmsstnnp” ,其中“tnnp”取固定值“032+”,即默认系统为北京时间);
s.ReportFlag=2;
//s.TP_pid=GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9;
s.TP_udhi=esm_class; //GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9;
//s.MessageType=0;信息类型:0-短消息信息
//memcpy(s.Reserve,保留,扩展用);
if (strlen(sm)>140) sm[140]=0;
if(s.MessageCoding==8||s.MessageCoding==24)//unicode
{
length=AnsiToUnicode(sm,short_msg,1);
s.sm_length=length*2;
memcpy(s.short_message,short_msg,2*length);
}
else//plain
{
s.sm_length=length;
memcpy(s.short_message,sm,length);
}
// s.sm_length=length;
// memcpy(s.short_message,sm,length);
if(s.MessageCoding==24) {
s.Priority=9;//优先级0-9从低到高,默认为0
}
sprintf(buffer,"SEND:7198:%s %s",ID,sm);
buffer[100]='\0';
xprintf(buffer,"OK");
SaveSubmitSm(s);
}
void CHgsmsendDlg::SendACK(CString ip)
{
sprintf(sendstring,"%c%c%c",STX,ACK,ETX);
AddParityChar((BYTE *)sendstring);
UdpSockSend.SocketSend(sendstring,strlen(sendstring),UDP_PORT_SEND,ip);
}
void CHgsmsendDlg::SendNak(int errcode, CString ip)
{
sprintf(sendstring,"%c%c%02d%c",STX,NAK,errcode,ETX);
AddParityChar((BYTE *)sendstring);
UdpSockSend.SocketSend(sendstring,strlen(sendstring),UDP_PORT_SEND,ip);
}
void CHgsmsendDlg::Submit_Sm_Resp(SEQUENCE sequence)
{
long i;
HEADER h;
char buffer[1024];
char temptime[100];
char result=0;
char reserve[100];
memset(buffer,0,sizeof(buffer));
memset(&h,0,sizeof(HEADER));
memset(temptime,0,sizeof(temptime));
memset(reserve,0,sizeof(reserve));
h.command_id=SGIP_SUBMIT_RESP;
h.sequence.code=sequence.code;///源结点码。
h.sequence.time=sequence.time;
h.sequence.sequence=sequence.sequence;
memset(sendstring,0,sizeof(sendstring));
i=4L;
ltocpy(sendstring+i,h.command_id);
i+=4L;
ltocpy(sendstring+i,h.sequence.code);
i+=4L;
ltocpy(sendstring+i,h.sequence.time);
i+=4L;
ltocpy(sendstring+i,h.sequence.sequence);
i+=4L;
sendstring[i]=result;
i+=1L;
memcpy(sendstring,reserve,8);
i+=8L;
h.command_length=i;
ltocpy(sendstring,h.command_length);
sprintf(buffer,"SERVERSEND: SUBMIT_SM_RESP To Client:%s ",Client.IP);
xprintf(buffer,"OK");
Rsock.Send(sendstring,h.command_length);
}
void CHgsmsendDlg::OnBind()
{
Bind_Transmitter();
}
void CHgsmsendDlg::OnReset()
{
UnBind();
WantReset=1;
}
/*
void CHgsmsendDlg::SaveLog(SEQUENCE sequence)
{
CTime time;
int i;
FILE *hFile;
char temp[512],buffer[512],temp1[512];
memset(temp,0,sizeof(temp));
memset(buffer,0,sizeof(buffer));
memset(temp1,0,sizeof(temp1));
time=time.GetCurrentTime();
sprintf(temp,"e:/record/%02d%02d.txt",time.GetMonth(),time.GetDay());
hFile=_fsopen(temp,"a",SH_DENYWR);
if(hFile==NULL) return;
for (i=0;i<m_save.i;i++) {
if (m_save.submit[i].h.sequence.sequence==sequence.sequence) {
if(m_save.submit[i].MessageCoding==8) {
UnicodeToAnsi(m_save.submit[i].short_message,temp1);
sprintf(buffer,"手机号:%s 发送信息:%s 计费类型:%d 费率:%s 优惠:%s 时间:%02d:%02d",m_save.submit[i].ChargeNumber,temp1,m_save.submit[i].FeeType,m_save.submit[i].FeeValue,m_save.submit[i].GivenValue,time.GetHour(),time.GetMinute());
fprintf(hFile,"%s\n",buffer);
}else {
sprintf(buffer,"手机号:%s 下载铃声 计费类型:%d 费率:%s 优惠:%s 时间:%02d:%02d",m_save.submit[i].ChargeNumber,m_save.submit[i].FeeType,m_save.submit[i].FeeValue,m_save.submit[i].GivenValue,time.GetHour(),time.GetMinute());
fprintf(hFile,"%s\n",buffer);
}
SaveFull(m_save.submit[i]);
}
}
fclose(hFile);
}
void CHgsmsendDlg::SaveFull(SUBMIT s)
{
CTime time;
FILE *hFile;
char temp[512],buffer[512];
memset(buffer,0,sizeof(buffer));
time=time.GetCurrentTime();
sprintf(temp,"e:/record/%02d%02d.ful",time.GetMonth(),time.GetDay());
hFile=_fsopen(temp,"a",SH_DENYWR);
if(hFile==NULL) return;
sprintf(buffer,"%02d:%02d %12s %2d %12s %6s %d %6s %6s %3d %3d %3d %3ld",\
time.GetHour(),time.GetMinute(),s.ChargeNumber,s.UserCount,s.UserNumber[0],\
s.ServiceType,s.FeeType,s.FeeValue,s.GivenValue,s.MorelatetoMTFlag,s.TP_udhi,\
s.MessageCoding,s.sm_length);
fprintf(hFile,"%s\n",buffer);
fclose(hFile);
}
*/
void CHgsmsendDlg::SaveLog(SEQUENCE sequence)
{
CTime time;
FILE *hFile,*hFile1;
char temp[2048]={0},buffer[2048]={0},temp1[2048]={0};
for (int i=0;i<m_save.i;i++) {
if (m_save.submit[i].h.sequence.sequence==sequence.sequence) {
count=0;
time=time.GetCurrentTime();
sprintf(temp,"/work/record/%02d%02d%02d.mt",time.GetYear()%100,time.GetMonth(),time.GetDay());
hFile=_fsopen(temp,"a",SH_DENYWR);
sprintf(temp1,"/work/record/%02d%02d%02d.mp",time.GetYear()%100,time.GetMonth(),time.GetDay());
hFile1=_fsopen(temp1,"a",SH_DENYWR);
if(hFile==NULL) return;
if (m_save.submit[i].MessageCoding==8) {
UnicodeToAnsi(m_save.submit[i].short_message,temp);
}else {
strcpy(temp,m_save.submit[i].short_message);
}
temp[140]='.';temp[141]=0;
sprintf(buffer,"%02d:%02d:%02d %12s %2d %12s %6s %d %6s %3d %3d %3d %3d %s",\
time.GetHour(),time.GetMinute(),time.GetSecond(),m_save.submit[i].ChargeNumber+2,\
m_save.submit[i].UserCount,m_save.submit[i].UserNumber[0]+2,\
m_save.submit[i].ServiceType,m_save.submit[i].FeeType,\
m_save.submit[i].FeeValue,m_save.submit[i].TP_pid,\
m_save.submit[i].TP_udhi,m_save.submit[i].MessageCoding,\
m_save.submit[i].sm_length,temp);
fprintf(hFile,"\n%s",buffer);
fclose(hFile);
fprintf(hFile1,"\n%010ld %07ld %s",\
m_save.submit[i].h.sequence.time,m_save.submit[i].h.sequence.sequence,\
buffer);
fclose(hFile1);
}
}
}
void CHgsmsendDlg::MoLog(char *Stele,char *Id,char *Msg)
{
CTime time=time.GetCurrentTime();
FILE *hFile;
char temp[512]={0},buffer[512]={0};
sprintf(temp,"/work/record/%02d%02d%02d.mo",time.GetYear()%100,time.GetMonth(),time.GetDay());
hFile=_fsopen(temp,"a",SH_DENYWR);
if(hFile==NULL) return;
memcpy(temp,Msg,60);temp[60]=0;
if (Id[0]==0)
sprintf(buffer,"%02d:%02d:%02d %-12s %-5s %-10s %-60s",\
time.GetHour(),time.GetMinute(),time.GetSecond(),Stele,SPNUMBER,"-",temp);
else
sprintf(buffer,"%02d:%02d:%02d %-12s %-5s %-10s %-60s",\
time.GetHour(),time.GetMinute(),time.GetSecond(),Stele,SPNUMBER,Id,temp);
fprintf(hFile,"%s\n",buffer);
fclose(hFile);
}
void CHgsmsendDlg::SaveReport(REPORT report)
{
CTime time;
FILE *hFile;
char temp[512]={0},buffer[512]={0};
time=time.GetCurrentTime();
sprintf(temp,"/work/record/%02d%02d%02d.mr",time.GetYear()%100,time.GetMonth(),time.GetDay());
hFile=_fsopen(temp,"a",SH_DENYWR);
if(hFile==NULL) return;
sprintf(buffer,"%010ld %07ld %02d:%02d:%02d %12s %2d %2d %2d",\
report.sequence.time,report.sequence.sequence,\
time.GetHour(),time.GetMinute(),time.GetSecond(),\
report.UserNumber+2,report.ReportType,report.State,report.ErrorCode);
fprintf(hFile,"\n%s",buffer);
fclose(hFile);
}
int removefileflag=1;
void CHgsmsendDlg::RemoveOldFile()
{
int i,month;
CTime time;
char filename[100];
time=time.GetCurrentTime();
if (time.GetHour()!=1) {
removefileflag=1;
return;
}
if (removefileflag==0) return;
removefileflag=0;
month=time.GetMonth();
if (month>3)
month-=3;
else if (month==3)
month=12;
else if (month==2)
month=11;
else if (month==1)
month=10;
for (i=1;i<=31;i++) {
sprintf(filename,"e:/record/%02d%02d.txt",month,i);
if (_access(filename,0)==0)
remove(filename);
}
}
void CHgsmsendDlg::Submit_Sm_Test(char *ID, char *sm, BYTE data_coding, int esm_class,BYTE FeeType,CString FeeValue )
{
SUBMIT s;
char short_msg[8192],buffer[1024];
char temptime[100];
int length=0,i=0,ptr=0,length1=0;
UINT j=0;
char flag=0x01,flag1='\f',flag2='\n';
char temp[100];
char graphic[150];
int f=0;
memset(graphic,0,sizeof(graphic));
memset(temp,0,sizeof(temp));
memset(temptime,0,sizeof(temptime));
memset(&s,0,sizeof(SUBMIT));
memset(buffer,0,sizeof(buffer));
s.h.command_id=SGIP_SUBMIT;
s.h.sequence.code=SOURCODE;///源结点码。
MakeTime(temptime);
s.h.sequence.time=atol(temptime);
s.h.sequence.sequence=sequence_number++;
sequence_number%=0x10000000;
memset(short_msg,0,sizeof(short_msg));
sprintf(s.ChargeNumber,"86%s",ID);
sprintf(s.UserNumber[0],"86%s",ID);
s.UserCount=1;
s.MessageCoding=data_coding;//unicode
s.FeeType=FeeType;
memcpy(s.CorpId,CORPID,5);
sprintf(s.SPNumber,"%s",SPNUMBER);
strcpy(s.ServiceType,"ZL");
//memcpy(s.ServiceType,业务代码,strlen(业务代码));
sprintf(s.FeeValue,"%s",FeeValue);
//sprintf(s.GivenValue,"%d",10);
s.AgentFlag=1;
s.MorelatetoMTFlag=2;
// s.Priority=0;优先级0-9从低到高,默认为0
//sprintf((s.ExpireTime,"%02d%02d%02d%02d%02d%02d032+",短消息寿命的终止时间,如果为空,表示使用短消息中心的缺省值。时间内容为16个字符,格式为"yymmddhhmmsstnnp" ,其中“tnnp”取固定值“032+”,即默认系统为北京时间);
//sprintf(s.ScheduleTime,"02d%02d%02d%02d%02d%02d032+",短消息定时发送的时间,如果为空,表示立刻发送该短消息。时间内容为16个字符,格式为“yymmddhhmmsstnnp” ,其中“tnnp”取固定值“032+”,即默认系统为北京时间);
s.ReportFlag=2;
//s.TP_pid=GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9;
s.TP_udhi=esm_class; //GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9;
//s.MessageType=0;信息类型:0-短消息信息
//memcpy(s.Reserve,保留,扩展用);
temp[0]='\\';
temp[1]='1';
temp[2]='\\';
temp[3]='f';
temp[4]='\\';
temp[5]='n';
for( i=0;i<256;i++) {
if(strnicmp(sm+i,temp,2)==0) {
sm[i]=flag;
for(j=i+2;j<strlen(sm)+2;j++) {
sm[j-1]=sm[j];
}
}
if(strnicmp(sm+i,temp+2,2)==0) {
sm[i]=flag1;
for(j=i+2;j<strlen(sm)+2;j++) {
sm[j-1]=sm[j];
}
}
if(strnicmp(sm+i,temp+4,2)==0) {
sm[i]=flag2;
for(j=i+2;j<strlen(sm)+2;j++) {
sm[j-1]=sm[j];
}
}
}
length1=strlen(sm);
if(!m_type) {
for(int h=0;h<length1;h++) {
sscanf(sm+h,"%02x",&graphic[f]);
h++;
f++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -