📄 unit1_tread.cpp
字号:
//---------------------------------------------------------------------------
//0008 3010 11 02 40 13 00 06 4F6054403002 中文方式
//0000 3010 21 21 05 03 00 02 CF25 英文方式
#include <vcl.h>
#include <stdio.h>
#pragma hdrstop
#include "sms1.h"
//#include "File1.c"
//#include "sms1.cpp"
#include "Unit1_tread.h"
#pragma package(smart_init)
#define SMSLEN 512
int fasongLENS;
//TEdit *Edit1;
//---------------------------------------------------------------------------
// Important: Methods and properties of objects in VCL can only be
// used in a method called using Synchronize, for example:
//
// Synchronize(UpdateCaption);
//
// where UpdateCaption could look like:
//
// void __fastcall Unit1::UpdateCaption()
// {
// Form1->Caption = "Updated in a thread";
// }
//---------------------------------------------------------------------------
__fastcall myterad::myterad( bool CreateSuspended)
: TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
void __fastcall myterad::Execute()
{
//---- Place thread code here ----
char TimeStr[20],TypeStr[10],jradeStr[10],statStr[10];
int accI;
TDateTime DateTime = Time();
AnsiString timeS=TimeToStr(DateTime);
DateTime = Date();
AnsiString dateS = DateToStr(DateTime);
AnsiString shijianS;
shijianS=dateS+' '+timeS;
Form1->Memo7->Text="系统已准备好,开始接收信息..................................!\r\n";
// FILE *fpAcc,*fpRe,*fpD,*fpH;
FILE *fp,*fpD;
char muluS[30],fileName[40],fileNameAcc[40],fileNameRe[40],fileNameH[40],fileNameD[40],accS[10];
memset(accS,0x00,10);
CreateDir(dateS.c_str());
sprintf(muluS,"%s\\new", dateS.c_str()) ;
CreateDir(muluS);
sprintf(muluS,"%s\\send", dateS.c_str()) ;
CreateDir(muluS);
sprintf(muluS,"%s\\recv", dateS.c_str()) ;
CreateDir(muluS);
sprintf(muluS,"%s\\qury", dateS.c_str()) ;
CreateDir(muluS);
memset( fileNameAcc,0x00,sizeof(fileNameAcc));
COMMTIMEOUTS to;
char setCOM[10];
memset(setCOM,0,10);
GetPrivateProfileString("SET","COM","COM1",setCOM,10, "./server.txt");
HANDLE hCom = CreateFile(setCOM,
GENERIC_READ | GENERIC_WRITE, // 允许读写
0, // 此项必须为0
NULL, // no security attrs
OPEN_EXISTING, //设置产生方式
0, // 同步。 异步通信时用 ( FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED)
NULL );
fpD=fopen("./sms.log","w");
fprintf(fpD,"com=...%s\n",setCOM);
fflush(fpD);
if(hCom)
{
DCB dcb;
char setRATE[10];
memset(setRATE,0,10);
GetPrivateProfileString("SET","RATE","19200",setRATE,10, "./server.txt");
ZeroMemory(&dcb, sizeof(dcb));
dcb.DCBlength = sizeof(dcb);
dcb.BaudRate = atoi(setRATE);
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
dcb.fDtrControl = DTR_CONTROL_ENABLE ;
dcb.fRtsControl = RTS_CONTROL_ENABLE ;
dcb.fInX= FALSE ;
dcb.fOutX= FALSE ;
dcb.fOutxDsrFlow= FALSE;
dcb.fOutxCtsFlow= FALSE;
fprintf(fpD,"rate..%s\n",setRATE);
fflush(fpD);
if(SetCommState(hCom,&dcb))
{
DWORD ByteCount;
char msg[3] ;
memset(msg,0,sizeof(msg));
memset(&to,0,sizeof(to));
to.ReadTotalTimeoutMultiplier =5;
to.ReadTotalTimeoutConstant = 1000;
SetCommTimeouts(hCom,&to);
SetupComm(hCom,SMSLEN,SMSLEN);// 设置读写缓冲区
PurgeComm( hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR| PURGE_RXCLEAR ); //清干净输入、输出缓冲区
fprintf(fpD,"star...%s,%s\n",setCOM,setRATE);
fflush(fpD);
for(;;)
{
DateTime = Date();
dateS = DateToStr(DateTime);
int accI_new,accI_recv,accI_send;
DateTime = Date();
dateS = DateToStr(DateTime);
CreateDir(dateS.c_str());
memset(muluS,0,sizeof(muluS));
sprintf(muluS,"%s\\new", dateS.c_str()) ;
CreateDir(muluS);
sprintf(muluS,"%s\\send", dateS.c_str()) ;
CreateDir(muluS);
sprintf(muluS,"%s\\recv", dateS.c_str()) ;
CreateDir(muluS);
sprintf(muluS,"%s\\qury", dateS.c_str()) ;
CreateDir(muluS);
//fpacc
sprintf(fileName,"%s\\send\\acc\0", dateS.c_str()) ;
fprintf(fpD,"\n\n\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&开始\n===%s\n", fileName) ;
if(FileExists(fileName))
{
memset(accS,0x00,sizeof(accS));
fp=fopen(fileName,"r") ;
fgets(accS,10,fp);
fclose(fp);
accI_send=atoi(accS);
if(accI_send<=0)
accI_send=0;
}else
{
//fp =fopen(fileName,"w") ;
//fclose(fp );
accI_send=0;
}
sprintf(fileName ,"%s\\recv\\acc\0", dateS.c_str()) ;
if(FileExists(fileName ))
{
memset(accS,0x00,sizeof(accS));
fp =fopen(fileName ,"r") ;
fgets(accS,10,fp);
fclose(fp);
accI_recv=atoi(accS);
if(accI_recv<=0)
accI_recv=0;
}else
{
//fp =fopen(fileName,"w") ;
//fclose(fp);
accI_recv=0;
}
sprintf(fileName,"%s\\new\\acc\0", dateS.c_str()) ;
fprintf(fpD,"%s\n", fileName) ;
if(FileExists(fileName))
{
memset(accS,0x00,sizeof(accS));
fp=fopen(fileName,"r") ;
fprintf(fpD,"%s\n", fileName) ;
fgets(accS,10,fp);
fclose(fp);
accI_new=atoi(accS);
if(accI_new<=0)
accI_new=0;
}else
{
//fp=fopen(fileName,"w") ;
//fclose(fp);
accI_new=0;
}
fprintf(fpD,"accI_new=%d,accI_recv=%d,acc_send=%d\n",accI_new,accI_recv,accI_send);
//int sendacc=accI_new;
fflush(fpD);
char ShouJiHao[128],ShouJiHao2[128],NeiRong[1024];
for(int i=accI_send+1;i<accI_new+1;i++) //发送信新的短信
{
fprintf(fpD,"star....%d,accI_new=%d,accI_recv=%d,acc_send=%d\n",i,accI_new,accI_recv,accI_send);
memset( NeiRong,0x00,sizeof(NeiRong));
int j=0;
sprintf(fileName,"%s\\new\\DA%d\0", dateS.c_str(),i) ;
fp=fopen(fileName,"r") ;
fprintf(fpD,"new-name=%s\n",fileName);
while (!feof(fp )) {
NeiRong[j]=fgetc(fp ); //取得发送内容
j++;
}
j=strlen( NeiRong);
NeiRong[j-1]='\0';
GuoLvCh(NeiRong);
// strcat(NeiRong," ");
fclose(fp);
fprintf(fpD,"sms_neirong=[%s]\n",NeiRong);
//--------------------------------------------------------------
j=strlen( NeiRong);
fasongLENS=j;
String lens;
char lens2[2];
lens = IntToHex(j,2);
strcpy(lens2,lens.c_str()) ;
fprintf(fpD,"len2=%s,%d\n",lens2,fasongLENS ); fflush(fpD);
//--------------------------------------------------------------
//---------内容转换-------------------------------------------
int n,len,cur;
String tempstr,returnstr,InputStr;
unsigned char mid1[2],mid2[2];
InputStr=NeiRong;
returnstr=EncodeChinese(InputStr);
strcpy(NeiRong, returnstr.c_str());
fprintf(fpD,"sms_neirong_2=[%s]\n",NeiRong); fflush(fpD);
//----------------------------------------------------
//----------------------------------------
j=0;
sprintf(fileName,"%s\\new\\R%d\0", dateS.c_str(),i) ;
fp=fopen(fileName,"r") ;
while (!feof(fp )) {
memset( ShouJiHao,0x00,sizeof(ShouJiHao));
memset( ShouJiHao2,0x00,sizeof(ShouJiHao2));
fgets(ShouJiHao,128,fp ); //取得收机号
if(ShouJiHao[0]=='*') break;
fprintf(fpD,"name=[%s]\n",ShouJiHao); fflush(fpD);
Tgetstring( ShouJiHao , 1,ShouJiHao2,';') ;
GuoLvCh(ShouJiHao2 ) ;
fprintf(fpD,"name3=[%s]\n",ShouJiHao2); fflush(fpD);
GetPrivateProfileString("cust",ShouJiHao2,ShouJiHao2,ShouJiHao,512, "./cust/cust");
if(strlen(ShouJiHao)>12) continue;
//ShouJiHao[11]='\0';
fprintf(fpD,"name4=[%s]\n",ShouJiHao2); fflush(fpD);
GuoLvCh(ShouJiHao ) ;
fprintf(fpD,"shouji_code=[%s],strlen(ShouJiHao)=%d\n",ShouJiHao,strlen(ShouJiHao));
//---------------手机号码长度 -----
int jjj=strlen(ShouJiHao);
String SJlen= IntToHex(jjj,2);
char shoujiLEN[2];
memset(shoujiLEN,0,sizeof(shoujiLEN));
strcpy(shoujiLEN,SJlen.c_str());
//---------------------------------
if(strlen(ShouJiHao)!=11) continue;
String SJH=ShouJiHao;
TsmsCode(ShouJiHao , ShouJiHao2);
fprintf(fpD,"shouji_code2=%s\n",ShouJiHao2);
char smsCO1[20],smsCO2[20];
memset(smsCO1,0,sizeof(smsCO1));
memset(smsCO2,0,sizeof(smsCO2));
GetPrivateProfileString("SET","SMSCODE","0000000000",smsCO1,14, "./server.txt");
fprintf(fpD,"smsCO1=[%s]\n",smsCO1);
TsmsCode(smsCO1,smsCO2);
fprintf(fpD,"smsCO2=[%s]\n",smsCO2);
char ss[4096];
memset(ss,0,sizeof(ss));
//sss="0891"+smsCO2;//+"11000B81"+ShouJiHao2+"000010"+lens2+NeiRong;
strcpy(ss,"0891");
strcat(ss,smsCO2);
//----------------------------
strcat(ss,"1100");
strcat(ss,shoujiLEN);
strcat(ss,"81");
//---------------------
//strcat(ss,"11000B81");
// strcat(ss,"11000D91");
strcat(ss,ShouJiHao2);
strcat(ss,"0008A7");
fprintf(fpD,"sms_neirong_3=[%s]\n",NeiRong);
int jj =strlen(NeiRong)/2;
lens = IntToHex(jj,2);
strcpy(lens2,lens.c_str());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -