?? function.cpp
字號:
(*OffPointHead)->prev=NULL;
}
else
{
free((*OffPointHead));
(*OffPointHead)=(*OffPointEnd)=NULL;
}
}
}
}
void FreeQueueMem(QUEUE *p)//釋放
{
QUEUE *temp;
for(;p!=NULL;)
{
temp=p;
p=p->next;
free(temp);
}
}
void FreeFileFormatDataMem(FILEFORMAT *p)//釋放文件格式數據內存
{
if(p->Record!=NULL)
{
for(int i=0;i<p->FileRecordNum;i++)
{
if(((p->Record)[i].PortData)!=NULL)
{
free(((p->Record)[i]).PortData);
}
}
free(p->Record);
p->Record=NULL;
};
}
int ReadFile(const char *FileName,FILEFORMAT *p)//讀文件
{
FILE *fp;
int i=-1,j,k;
FreeFileFormatDataMem(p);
if((fp=fopen(FileName,"r"))==NULL)
{
return -1;
};
fscanf(fp,"%d %d %d",&(p->FileRecordNum),&(p->FilePortNum),&p->TimeUnit);
p->Record=(RECORD *)malloc(p->FileRecordNum*sizeof(RECORD));
if(p->Record==NULL)
{
return -1;
}
for(i=0;i<p->FileRecordNum&&!feof(fp);i++)
{
fscanf(fp,"%d %d %d %d",&(p->Record[i].TotalTime),&(p->Record[i].PulseTime),&(p->Record[i].NoNum),&(p->Record[i].LineNum));
((p->Record)[i]).PortData=(unsigned char*)malloc(p->FilePortNum*sizeof(char));
if((p->Record)[i].PortData==NULL)
{
return -1;
}
for(j=0;j<p->FilePortNum;j++)
{
fscanf(fp," %d ",&k);
((p->Record)[i]).PortData[j]=(unsigned char)k;
}
}
p->FileRecordNum=i;
fclose(fp);
return 0;
}
int ReadStrFile(const char *FileName,int &strnum,char **&p)//讀串文件
{
FILE *fp;
int readstrnum;
char tem_s[50];
int c1=0,c2=0;
if((fp=fopen(FileName,"r"))==NULL)
{
return -1;
};
fscanf(fp,"%d",&readstrnum);
p=(char **)malloc(readstrnum*sizeof(char *));
if(p==NULL)
{
return -1;
}
int s_begin=0;
int i=0;
for(strnum=0;strnum<readstrnum&&!feof(fp);)
{
c2=c1;
c1=fgetc(fp);
if(s_begin==1)
{
if(i<50)
{
if(c1=='\\')
{
c2=c1;
c1=fgetc(fp);
}
tem_s[i]=c1;
i++;
}
}
if(c1=='\"'&&c2!='\\')
{
if(s_begin==0)
{
i=0;
s_begin=1;
}
else
{
p[strnum]=(char*)malloc(i*sizeof(char));
if(p[strnum]==NULL)
{
return -1;
}
for(int j=0;j<i;j++)
{
p[strnum][j]=tem_s[j];
}
p[strnum][i-1]=NULL;
strnum++;
s_begin=0;
}
}
}
fclose(fp);
return 0;
}
char PortIn(void)//入口
{
static char temp[10]={0,0,0,0,0,0,0,0,0,0};
static char i=0;
static char oldk=0x00;
char k=0xff;
char m,n;
temp[i]=inportb(InPortAdd2);
i++;
i%=10;
for(int j=0;j<10;j++)
{
k&=temp[j];
}
m=oldk^k;
n=k&~oldk;
oldk=k;
k=m&n;
return k;
}
#ifdef DANFOSS
void ComOut(void)
{
static unsigned char temp[COMBUFMAXRECORDBYTE];
static int ReadBuffFlag=1;
static int WriteFlag=0;
static int ReadFlag=0;
// static int Adress=0;
static unsigned long oldtime;
static unsigned long oldbuffdelaytime;
unsigned long time=GetTime();
int temphead;
if(time-oldbuffdelaytime>FreqOutDelayBuffDelayTime)
{
oldbuffdelaytime=time;
temphead=(FreqOutDelayBuffHead+1)%FreqOutDelayBuffNum;
if(temphead!=FreqOutDelayBuffEnd)
{
if(((FreqOutNomalBuffEnd+1)%FreqOutNomalBuffNum)!=FreqOutNomalBuffHead)
{
for(int i=0;i<COMBUFMAXRECORDBYTE;i++)
{
FreqOutNomalBuff[FreqOutNomalBuffEnd][i]=FreqOutDelayBuff[temphead][i];
}
FreqOutDelayBuffHead=temphead;
FreqOutNomalBuffEnd++;
FreqOutNomalBuffEnd=FreqOutNomalBuffEnd%FreqOutNomalBuffNum;
}
}
}
if(ReadBuffFlag==1)
{
temphead=(FreqOutHighBuffHead+1)%FreqOutHighBuffNum;
if(temphead!=FreqOutHighBuffEnd)
{
for(int i=0;i<COMBUFMAXRECORDBYTE;i++)
{
temp[i]=FreqOutHighBuff[temphead][i];
}
FreqOutHighBuffHead=temphead;
WriteFlag=1;
ReadBuffFlag=0;
}
else
{
temphead=(FreqOutNomalBuffHead+1)%FreqOutNomalBuffNum;
if(temphead!=FreqOutNomalBuffEnd)
{
for(int i=0;i<COMBUFMAXRECORDBYTE;i++)
{
temp[i]=FreqOutNomalBuff[temphead][i];
}
FreqOutNomalBuffHead=temphead;
WriteFlag=1;
ReadBuffFlag=0;
}
}
oldtime=time;
}
if(WriteFlag==1)
{
if(time-oldtime>3)
{
if((ComOutBuffRecordEnd+1)%COMBUFMAXRECORD!=ComOutBuffRecordHead)
{
for(int i=0;i<COMBUFMAXRECORDBYTE;i++)
{
ComOutBuff[ComOutBuffRecordEnd][i]=temp[i];
}
if(temp[2]&0x20)
{
ReadBuffFlag=1;
}
else
{
ComInBuffRecordHead=COMBUFMAXRECORD-1;
ComInBuffRecordEnd=0;
ComInBuff[ComInBuffRecordEnd][0]=0;
ReadFlag=1;
oldtime=time;
// Adress=temp[2];
}
ComOutBuffRecordEnd++;
ComOutBuffRecordEnd=ComOutBuffRecordEnd%COMBUFMAXRECORD;
WriteFlag=0;
}
}
}
if(ReadFlag==1)
{
temphead=(ComInBuffRecordHead+1)%COMBUFMAXRECORD;
if(temphead!=ComInBuffRecordEnd)
{
if(ComInBuff[temphead][TELEGRAM_ZSWL]&0X08)
{
// if((temp[TELEGRAM_STWL]&0X08)||(ComInBuff[temphead][TELEGRAM_ZSWL]&0X80))
{
if(FreqError[temp[TELEGRAM_ADD]-1]!=0xff)
{
FreqError[temp[TELEGRAM_ADD]-1]++;
if(FreqError[temp[TELEGRAM_ADD]-1]>3)
{
FreqError[temp[TELEGRAM_ADD]-1]=0xff;
}
if(((FreqOutNomalBuffEnd+1)%FreqOutNomalBuffNum)!=FreqOutNomalBuffHead)
{
for(int i=0;i<COMBUFMAXRECORDBYTE;i++)
{
FreqOutNomalBuff[FreqOutNomalBuffEnd][i]=FreqRestart[i];
}
FreqOutNomalBuff[FreqOutNomalBuffEnd][TELEGRAM_ADD]=temp[TELEGRAM_ADD]-1;
FreqOutNomalBuffEnd++;
FreqOutNomalBuffEnd=FreqOutNomalBuffEnd%FreqOutNomalBuffNum;
}
if(((FreqOutDelayBuffEnd+1)%FreqOutDelayBuffNum)!=FreqOutDelayBuffHead)
{
for(int i=0;i<COMBUFMAXRECORDBYTE;i++)
{
FreqOutDelayBuff[FreqOutDelayBuffEnd][i]=temp[i];
}
FreqOutDelayBuffEnd++;
FreqOutDelayBuffEnd=FreqOutDelayBuffEnd%FreqOutDelayBuffNum;
}
}
}
}
else
{
FreqError[temp[TELEGRAM_ADD]-1]=0;//FreqError[Adress]=0;
}
oldtime=time;
ReadBuffFlag=1;
ReadFlag=0;
}
else
{
if((time-oldtime>OVERTIME1)&&(ComInBuff[temphead][0]!=0x02)||(time-oldtime)>OVERTIME2)
{
if(FreqError[temp[TELEGRAM_ADD]-1]!=0xff)//FreqError[Adress]!=0xff)
{
WriteFlag=1;
FreqError[temp[TELEGRAM_ADD]-1]++;//FreqError[Adress]++;
if(FreqError[temp[TELEGRAM_ADD]-1]>3)//FreqError[Adress]>3)
{
FreqError[temp[TELEGRAM_ADD]-1]=0xff;//FreqError[Adress]=0xff;
}
// oldtime=time;
ReadFlag=0;
}
else
{
ReadBuffFlag=1;
ReadFlag=0;
}
}
}
}
ComWrite();
}
void FreqFoun(void)
{
static int NoNum=0;
if(oldFreqOutVal[NoNum]!=FreqOutVal[NoNum])
{
if(((FreqOutNomalBuffEnd+1)%FreqOutNomalBuffNum)!=FreqOutNomalBuffHead)
{
if(FreqOutVal[NoNum]==0)
{
for(int i=0;i<COMBUFMAXRECORDBYTE;i++)
{
FreqOutNomalBuff[FreqOutNomalBuffEnd][i]=FreqOFF1[i];
}
}
else
{
for(int i=0;i<COMBUFMAXRECORDBYTE;i++)
{
FreqOutNomalBuff[FreqOutNomalBuffEnd][i]=FreqRun[i];
}
}
FreqOutNomalBuff[FreqOutNomalBuffEnd][TELEGRAM_ADD]=NoNum+1;
FreqOutNomalBuff[FreqOutNomalBuffEnd][TELEGRAM_HSWH]=FreqOutVal[NoNum]/255;
FreqOutNomalBuff[FreqOutNomalBuffEnd][TELEGRAM_HSWL]=FreqOutVal[NoNum]&0x00ff;
FreqOutNomalBuffEnd++;
FreqOutNomalBuffEnd=FreqOutNomalBuffEnd%FreqOutNomalBuffNum;
oldFreqOutVal[NoNum]=FreqOutVal[NoNum];
NoNum++;
NoNum=NoNum%FREQNUM;
}
}
else
{
NoNum++;
NoNum=NoNum%FREQNUM;
}
}
void FreqClear(void)
{
int i;
// delay(100);
for(i=0;i<FREQNUM;i++)
{
FreqOutVal[i]=0;
oldFreqOutVal[i]=0;
}
FreqOutNomalBuffHead=FreqOutNomalBuffNum-1;
FreqOutNomalBuffEnd=0;//FreqOutNomalBuffNum-1;
FreqOutHighBuffHead=FreqOutHighBuffNum-1;
FreqOutHighBuffEnd=0;
for(i=0;i<COMBUFMAXRECORDBYTE;i++)
{
FreqOutHighBuff[FreqOutHighBuffEnd][i]=FreqClean[i];
}
FreqOutHighBuff[FreqOutHighBuffEnd][TELEGRAM_ADD]=0x20;
FreqOutHighBuff[FreqOutHighBuffEnd][TELEGRAM_HSWH]=0;
FreqOutHighBuff[FreqOutHighBuffEnd][TELEGRAM_HSWL]=0;
FreqOutHighBuffEnd++;
FreqOutHighBuffEnd=FreqOutHighBuffEnd%FreqOutHighBuffNum;
ComOut();
}
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -