📄 dt900lib.c
字号:
if(sdata[i]=='.') point=i;
}
if(point==100)
{
strcpy(fint,sdata);
strcpy(fdecimal,"000");
}
else if(point==0)
{
strcpy(fint,"0");
strcpy(fdecimal,sdata);
}
else
{
for(i=0;i<point;i++) fint[i]=sdata[i];
fint[i]=0x0;
if((strlen(sdata)-point)==3)
{ fdecimal[0]=sdata[point+1];
fdecimal[1]=sdata[point+2];
fdecimal[2]='0';
}
if((strlen(sdata)-point)==2)
{ fdecimal[0]=sdata[point+1];
fdecimal[1]='0';
fdecimal[2]='0';
}
else
{ for(i=point+1,j=0;j<3;i++,j++) fdecimal[j]=sdata[i]; }
fdecimal[3]=0x0;
}
}
void Dsp_str( B *data,H gyo,H keta)
{
lcd_csr_put( gyo, keta );
/* lcd_string( dsp_ank, dsp_mode, (B *)data, LCD_LF_OFF );*/
cputstr(LCD_ATTR_NORMAL,(B*)data);
/*cputstr800(dsp_mode,(B *)data); */
}
void Dsp_str2( B *data,H gyo,H keta)
{
lcd_csr_put( gyo, keta );
cputstr(LCD_ATTR_REVERS, (UB*)data);
}
void Dsp_str3( B *data,H gyo,H keta)
{
lcd_csr_put( gyo, keta );
cputstr(LCD_ATTR_WIDTH, (UB*)data);
}
void Dsp_str4( B *data,H gyo,H keta)
{
lcd_csr_put( gyo, keta );
cputstr(LCD_ATTR_DOUBLE, (UB*)data);
}
void addfloat_str(B *str,B *str1,B *str2)
{
B str1_1[15],str1_2[15],str2_1[15],str2_2[15],str_int[15],str_frct[15];
W add_frct;
ER itg;
memset(str2_1,0,9);
memset(str2_2,0,9);
add_frct=0;
strsub(str1,str1_1,str1_2);
strsub(str2,str2_1,str2_2);
if(str2[0]=='-') add_frct=atoi(str1_2)-atoi(str2_2);
else
add_frct=atoi(str1_2)+atoi(str2_2);
itg=0;
if(add_frct>=1000) {add_frct-=1000; itg=1; }
if(add_frct<0) {add_frct+=1000; itg=-1; }
sprintf(str_frct,"%3ld",add_frct);
if(str_frct[0]==' ') str_frct[0]='0';
if(str_frct[1]==' ') str_frct[1]='0';
sprintf(str_int,"%5ld",(atoi(str1_1)+atoi(str2_1)+itg));
strcpy(str,str_int);
strcat(str,".");
strcat(str,str_frct);
}
/***********************************************************
* 程序名称: strtake
* 详细说明: 在某字符串中截取某一长度的字符串
* 参数 : B *str : 原始字符串指针
* B *strsub : 截取出的字符串指针
* H sos : 在原始字符串中截取的起始位置
* H len : 在原始字符串中截取的字符长度
* 返回值 : 空
***********************************************************/
void strtake(B *strsub, B *str, H sos, H len)
{
H i,j;
for(i=sos,j=0;j<len;i++,j++) strsub[j]=str[i];
strsub[j]=0x0;
}
void strcmb(B *str, B *strsub, H sos)
{
H i,j;
for(i=sos,j=0;j<strlen(strsub);i++,j++) str[i]=strsub[j];
}
/********************************************************************/
/* Notice: 对长度为len的字符串,在其后补加空格,使其长度达到KeyLen */
/*******************************************************************/
void addspace(B *str,H Keylen)
{
H i;
B str0[30];
strcpy(str0,str);
for(i=strlen(str0);i<Keylen;i++) str[i]=' ';
str[Keylen]=0x0;
}
void zeroadd(B *str,H len, H KeyLen)
{
B temp[20];
H i;
for(i=0;i<(KeyLen-len);i++) temp[i]='0';
temp[i]=0x0;
strcat(temp,str);
strcpy(str,temp);
str[KeyLen]=0x0;
}
/*将字符串str中含有的子字符串substr剪切掉.mode是选择全部剪切还是只剪切第一个*/
void str_cut(B *str,B *substr,B *mode)
{
ER k[30];
ER i,j,m,n;
B strnew[30];
m=0;
for(i=0,j=0;i<strlen(str);i++)
{
if(str[i]==substr[j]) j++;
else
{j=0;
continue;
}
if(j==strlen(substr))
{
k[m]=i-j+1;
j=0;
m++;
}
}
if (m>0)
{
if (strcmp(mode,"FIRST")==0)m=1;
n=0;j=0;
for (i=0;i<strlen(str);i++)
{
if (i==k[n]&& n<m)
{
i=i+strlen(substr)-1;
n++;
continue;
}
if(i!=k[n])
{
strnew[j]=str[i];
j++;
}
}
strnew[j]=0x0;
strcpy(str,strnew);
}
}
/*将string中所有的字符charold改为charnew*/
void char_change(B *string,char charold,char charnew)
{
H len,i;
len=strlen(string);
for (i=0;i<len;i++)
{
if (string[i]==charold)
{string[i]=charnew;}
else continue;
}
}
/*******************************************************************
* 程序名称: sendfile
* 详细说明: 上传一文件
* 参数 : UB *fname : 传输的文件名指针
* 文件名形式: 主文件名为8位,不足者加空格
* 后缀名为txt,主文件名与后缀名间无小数点
* 返回值 : 1 : 错误
* 0: 正确
********************************************************************/
int sendfile (UB *fname)
{
H ercd,fup;
UH idx,i,j,k;
struct sys_tty param;
B rec_buff[60],ftemp[15];
FILE *file_a,*file_b;
CU_FILE_INFO_FORM fileInfo[1];
lcd_cls();
Dsp_str("Sending....",3,1);
lcd_cls();
Dsp_str("打开通讯口...",3,0);
Dsp_str("<F1--终止>",5,0);
cu_stopKeySet( CU_FNC_1 );
param.speed = B_19200;
param.length = CHAR_8;
param.parity = PARI_NON;
param.stop_bit = STOP_1;
ercd = cu_open( COM , CU_CNCT_MULT , ¶m );
if(ercd != E_OK)
{
cu_stopKeySet( CU_FNC_NON );
lcd_cls();
lcd_csr_put( 1 , 0 );
cputstr( LCD_ATTR_NORMAL , (UB *)"COM 打开错误" );
lcd_csr_put( 5 , 0 );
cputstr( LCD_ATTR_NORMAL , (UB *)" 按任意键 !" );
key_clear();
getkey();
return( 1 );
}
memcpy(fileInfo[0].fileName,fname,11);
ercd = cu_fileSend( COM , 0 , CU_KIND_OTHER , 1 , &fileInfo , CU_GRAPH_ON_1 , 1 );
if(ercd != E_OK)
{
cu_close( COM );
cu_stopKeySet( CU_FNC_NON );
lcd_cls();
Dsp_str("数据文件未上传!",3,0);
Wait2(20L);
return( 1 );
}
cu_close( COM );
cu_stopKeySet( CU_FNC_NON );
key_clear();
return( 0 );
}
int recvfile()
{
ER ercd,fup;
UH idx;
struct sys_tty param;
B rec_buff[60];
FILE *file_a,*file_b;
CU_FILE_INFO_FORM fileInfo[2];
UH fileCount;
lcd_cls();
Dsp_str("Recieving...",3,1);
Dsp_str(" <F1--终止>",5,1);
cu_stopKeySet( CU_FNC_1 );
param.speed = B_19200;
param.length = CHAR_8;
param.parity = PARI_NON;
param.stop_bit = STOP_1;
ercd = cu_open( COM , CU_CNCT_MULT , ¶m );
if(ercd != E_OK)
{
cu_stopKeySet( CU_FNC_NON );
lcd_cls();
lcd_csr_put( 1 , 0 );
cputstr( LCD_ATTR_NORMAL , (B *)"COM 打开错误" );
lcd_csr_put( 5 , 0 );
cputstr( LCD_ATTR_NORMAL , (B *)" 按任意键 !" );
key_clear();
getkey();
return( 1 );
}
fileCount=20;
ercd = cu_fileRecv( COM , 0 , CU_KIND_OTHER , &fileCount , &fileInfo , CU_GRAPH_ON_1 , 1 );
if(ercd != E_OK)
{
cu_close( COM );
cu_stopKeySet( CU_FNC_NON );
lcd_cls();
lcd_csr_put( 1 , 0 );
cputstr(LCD_ATTR_NORMAL , (B *)" 文件下传错误" );
lcd_csr_put( 5 , 0 );
cputstr( LCD_ATTR_NORMAL , (B *)" 请按任意键!" );
key_clear();
getkey();
return( 1 );
}
cu_close( COM );
cu_stopKeySet( CU_FNC_NON );
key_clear();
lcd_cls();
lcd_csr_put( 1 , 0 );
cputstr(LCD_ATTR_NORMAL , (B *)" 文件下传结束" );
lcd_csr_put( 5 , 0 );
cputstr( LCD_ATTR_NORMAL , (B *)" 请按任意键!" );
getkey();
return( 0 );
}
int half_search(ER fn,W pos,H fieldsize,H keypos,H keylen,UB *code,UB *sdata,W *fpos,W num,int lenth)
{
int i,signal=2;
int er=0,loca;
ER len1=0,len2=0;
W cpos;
W min=0L,top=0L,bott=num-1;
B tempcode[15];
B Top[6],Bott[6],Min[6];
cpos=pos;
len1=keylen-lenth;
er=lseek(fn,cpos,0);
if(er==E_LOWERR)
{
return E_PRM;
}
if(er!=pos)
{
return E_PRM;
}
if(cpos>=0L && cpos<=num*fieldsize)loca=0;
else loca=1;
while(top<=bott && loca==0)
{
min=(top+bott)/2;
len2=0;
cpos=min*fieldsize;
lseek(fn,cpos,0);
er=read(fn,sdata,fieldsize);
if(er==E_LOWERR) break;
if(er!=fieldsize) break;
for(i=0;i<keylen;i++)
{
tempcode[i]=sdata[i+keypos];
if(tempcode[i]==' ')len2++;
}
tempcode[i]=0x0;
if (strcmp(code,tempcode)==0)break;
if (len1<len2)signal=0;
if (len1>len2)signal=1;
if (len1==len2)
{
for (i=0;i<lenth;i++)
{
if (code[i]!=tempcode[i])
{
if (code[i]>tempcode[i])signal=0;
if (code[i]<tempcode[i])signal=1;
break;
}
}
}
if (signal==1)
{
bott=min-1;
}
if (signal==0)
{
top=min+1;
}
if(top>bott)er=-1;
}
if(er==E_LOWERR) return E_PRM;
if(er!=fieldsize) return E_NG;
*fpos=cpos;
return E_OK;
if(er==-1) return E_PRM;
}
ER Order_Search(ER fd,W start_adr,H fieldsize,H keypos,H keylen,B *code,B *sdata,W *fpos)
{
int i;
int er=0;
W cpos;
cpos=start_adr;
er=lseek(fd,cpos,0);
if(er==E_LOWERR)
{
return E_PRM;
}
if(er!=start_adr)
{
return E_PRM;
}
while(1)
{
er=read(fd,sdata,fieldsize);
if(er==E_LOWERR) break;
if(er!=fieldsize) break;
for(i=0;i<keylen;i++)
{
if(code[i]!=sdata[i+keypos]) break;
};
if(i==keylen) break; /* compare OK */
cpos+=fieldsize;
}
if(er==E_LOWERR) return E_PRM;
if(er!=fieldsize) return E_NG;
*fpos=cpos;
return E_OK;
}
void alert(int i)
{
int j;
for(j=1;j<=i;j++)
{
s_sound(2250,3*j);
Wait2(10L);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -