📄 wondercb.c
字号:
sendmsg[9]=0x02;
sendmsg[10]=0x43;
sendmsg[11]=0xc3;
for(i=0;i<12;i++)
cs+=sendmsg[i];
sendmsg[12]=cs;
sendmsg[13]=0x16;
for( i= 0; i < 3; i++ )
{
ir_sport(0xfe);
delay_ms(delaytime);
}
ir_trans(sendmsg,14,delaytime);
length=ir_receive(rec);
if ( length )
{
if(flag)
return 3;
else
return mode;
}
if( mode < 0 &&flag==1)
{
OutPut_Fand_Failed( bdz );
delay_ms(DELAY_TIME3S);
return -1;
}
else
{
mode--;
goto nextmode;
}
} //
//画向上乡下三角形
void Draw_UP_DOWN( int flag )
{
int x,y;
int left,right;
int xStart,yStart;
switch(flag)
{
case UP : //Out_Put_UP
xStart=64;
yStart=114;
for(left=0,right=0,y=0;y<=5&&left>=-5&&right<=5;y++,left--,right++)
{
for(x=left;x<=right;x++)
setdot(xStart+x,yStart+y);//点亮屏幕上某一点.行坐标(0-127)列坐标(0-127)
}
yStart=122;
xStart=64;
for(left=-5,right=5,y=0 ; y<=5&&left<=0&&right>=0;y++,left++,right--)
{
for(x=left;x<=right;x++)
clrdot(xStart+x,yStart+y);//清除屏幕上某一点.行坐标(0-127)列坐标(0-127)
}
break;
case DOWN : //Out_Put_DOWN();
xStart=64;
yStart=114;
for(left=0,right=0,y=0;y<=5&&left>=-5&&right<=5;y++,left--,right++)
{
for(x=left;x<=right;x++)
clrdot(xStart+x,yStart+y);//清除屏幕上某一点.行坐标(0-127)列坐标(0-127)
}
yStart=122;
xStart=64;
for(left=-5,right=5,y=0 ; y<=5&&left<=0&&right>=0;y++,left++,right--)
{
for(x=left;x<=right;x++)
setdot(xStart+x,yStart+y);//点亮屏幕上某一点.行坐标(0-127)列坐标(0-127)
}
break;
case UP_DOWN :
xStart=64;
yStart=114;
for(left=0,right=0,y=0;y<=5&&left>=-5&&right<=5;y++,left--,right++)
{
for(x=left;x<=right;x++)
setdot(xStart+x,yStart+y);//点亮屏幕上某一点.行坐标(0-127)列坐标(0-127)
}
yStart=122;
xStart=64;
for(left=-5,right=5,y=0 ; y<=5&&left<=0&&right>=0;y++,left++,right--)
{
for(x=left;x<=right;x++)
setdot(xStart+x,yStart+y);//点亮屏幕上某一点.行坐标(0-127)列坐标(0-127)
}
break;
}
}
// 存储机械表信息// char strings[][DLARRAY_MAX
U8 Store_jjb (char strings[][50])
{
int Search_Resault;
int sign;
int Number;
int sum,all;
char str[50]="",back_date_time[50]="";
Search_Resault = Search_jjb_Record(strings[0]);
use("");
use(dbfname);
sum=Get_Record_Number();
all=libsumr();
if(Search_Resault==-1&&sum==all)
{
sign=libappend();
if(sign!=1)
{
return FALSE;
}
Number = libsumr();
Number--;
}
else if(Search_Resault!=-1)
{
Number = Search_Resault;
}
else if(sum<all)
{
Number = sum;
}
libset (Number,START2); //读读数2
libread(str);
libset (Number,START1);
libwrit(str);
libset (Number,START2); //写读数2
libwrit(strings[1]);
libset (Number,B_W); //存储表位
libwrit(strings[0]);
libset (Number,DATA_TIME2); //读日期时间
libread(back_date_time);
libset (Number,DATA_TIME1); //写1的日期时间
libwrit(back_date_time);
Get_Datetime(back_date_time);
libset (Number,DATA_TIME2); //写2的日期时间
libwrit(back_date_time);
return TRUE;
}
//计算电量
double Get_Dl(char strings0[],char strings1[],char strings2[])
{
double dd,dqz,dl;
dd =atof(strings0);
dqz=atof(strings1);
dl =dqz-dd;
sprintf(strings2,"%.1f",dl);//把电量转换成字符串
return dl;
}
//查找纪录,找到返回记录号,否者返回 -1
int Search_jjb_Record(char string[])
{
int bz,bz2,sign=0;
int num;
char str2[50]="";
char str[50]="";
Record_Number = Get_Record_Number();
use("");
use(dbfname);
if ( Record_Number == 0 )
{
return -1;
}
for( num = 0 ; num < Record_Number ; num++ )
{
libset(num,B_W);
libread(str2);
libset(num,B_DZ);
libread(str);
bz = strcmp ( string,str2 ); //查询并定位到相应记录.
bz2=strlen(str);
if( bz == 0 && bz2 ==0)
{
return num;
}
}
if ( num == Record_Number )
{
return -1;
}
}
//输出错误提示信息
void Put_Input_ErrorMsg( void )
{
cls();
MiddlePutStr("输入错误!",4);
MiddlePutStr("电量不可为负!",7);
MiddlePutStr("请重新输入!",9);
delay_ms( DELAY_TIME3S ); //延时 time_ms 延时时间(单位毫秒)
}
//输出提示信息
void OutPut_Message(char message[])
{
cls();
Clear_123();
MiddlePutStr(message,MiddleY);
delay_ms(DELAY_TIME1S);
}
//处理翻页键,返回记录号
int PageUpDown(int Number,U16 direction)
{
use("");
use(dbfname);
Record_Number=Get_Record_Number();
if(direction==DOWN )//如果是DOWN 则往下翻页
{
Number++;
if(Number>=Record_Number)
{
cls();
draw_border(2,5,15,10);
Clear_123();
moveto(4,7);
putstr(" 已到尾部 ");
bell(7);
delay_ms(DELAY_TIME1S);
Number--;
}
}
else if ( direction == UP ) //如果是UP往上翻页
{
Number--;
if( Number<0)
{
cls();
draw_border(2,5,15,10);
Clear_123();
moveto(4,7);
putstr(" 已到头部 ");
bell(7);
delay_ms(DELAY_TIME1S);
Number++;
}
}
return Number;
}
//在第line 中间输出以行字符或汉字
void MiddlePutStr(char * str,int line)
{
int length=0;
int StartX,StartY;
int left,right,top,bottom;
StartY=line > MaxY ? MaxY /2 :line ;
length=strlen(str);
StartX=( MaxX-length )/2 + 1 ;
moveto( StartX , StartY );
putstr(str);
}
//输出用户输入提示
void OutPut_Face(void)
{
char Date_Time[50]="";
cls();
Clear_123();
drawrect(0,0,127,127); //画一个方框 [0,0]~[127,127]
MiddlePutStr ( "抄机械表" , 2 );
moveto(2,5);
putstr("表位:");
moveto(2,7);
putstr("当前值:");
moveto(2,9);
putstr("时间:");
Show_Date(7,9);
Show_Time(7,11);
MiddlePutStr ( "[退出] [存储]" ,15 );
Draw_UP_DOWN(UP_DOWN);
drawrect(0,0,127,127); //画一个方框 [0,0]~[127,127]
}
//获得当前日期和时间
void Get_Datetime(char Date_Time[])
{
int i;
U8 date[20]="";
U8 time[20]="";
getdate(date); //取系统日期,存放在date串中,格式为yyyy/mm/dd
strcpy(Date_Time,date);
strcat(Date_Time," ");
gettime(time);//取时间 hh:mm:ss(时:分:秒)形式的字符串,8个字符。
strcat(Date_Time,time);
}
//显示日期
void Show_Date(int x,int y)
{
char date[30] = "";
getdate(date); //取系统日期,存放在date串中,格式为yyyy/mm/dd
moveto(x,y);
putstr(date);
}
//显示时间
void Show_Time(int x,int y)
{
char time[20]="";
gettime(time);//取时间 hh:mm:ss(时:分:秒)形式的字符串,8个字符。
moveto ( x,y );
putstr(time);
}
//打开数据库文件
U8 Open_library( void )
{
U8 lib;
keyswitchset(0);
use ("");
lib = use(dbfname); //关闭数据库文件
if(lib!=OK ) //打开数据库文件,如果不等于ok,即1,则显示错误如下
{
cls();
Clear_123();
moveto(1,1); putstr("错误:");
moveto(1,5); putstr(" 找不到");
moveto(1,7);
printf("数据库:%s",dbfname);
moveto(3,15);putstr("按任意键退出");
key(0);
return FALSE;
} //endif
use ("");
use (dbfname);
Record_Number= Get_Record_Number();
return TRUE;
}
//输入
U8 Input(char strings[],int x , int y,int length)
{
int Key;
int i;
char str[50]="";
l1: moveto(x,y);
for(i=0;i<length;i++)
putstr(" ");
moveto(x,y);
Key=keysn(str,length);
if( Key )
{
switch ( *(unsigned char *)sys_keyreturn )
{ case ENTER:
case DOWN : strcpy(strings,str);return TRUE;
case UP :
moveto(x,y);
for(i=0;i<length;i++)
putstr(" ");
return UP;
case ESC : return FALSE;
default : goto l1;
}
}
else
{
switch ( *(unsigned char *)sys_keyreturn )
{
case ESC : return FALSE;
case UP :
moveto(x,y);
for(i=0;i<length;i++)
putstr(" ");
return UP;
default : goto l1;
}
}
} //end Input()
//清除123
void Clear_123( void )
{
moveto(14,16);
putstr(" ");
}
//获取按键值
U8 Get_Key(void)
{
U8 k;
do{
k=key(0);
}while(k!=CLEAR&&k!=ENTER&&k!=ESC&&k!=FUNCTION&&k!=UP&&k!=DOWN);
switch(k){
case UP : return UP;
case ESC : return ESC;
case DOWN : return DOWN;
case CLEAR : return CLEAR;
case ENTER : return ENTER;
case FUNCTION : return FUNCTION;
}
} // END Get_Key()
//表类型
U8 biao_type(int Number)
{
char str[50]="";
int i;
int length;
for( i=0; i<50; i++)
str[i]=0;
use ( "" );
use ( dbfname );
libset ( Number , B_DZ );
libread( str ); //读出表地址
if( !strlen(str) ) //如果表地址为空,即机械表
return JJB_TYPE;
else
return DGN_TYPE;
}
// 获得记录的总数
int Get_Record_Number()
{
int i;
int sum=0;
int leng=0;
char string[50]="";
use("");
use(dbfname);
Record_Number=libsumr();
for(i=0;i<Record_Number;i++)
{
libset(i,B_W);
libread(string);
leng=strlen(string);
if(leng)
sum++;
}
return sum;
}
//输入
int InputStr(char strings[],int x , int y,int length)
{
char backstring[50]="";
int Key;
strcpy(backstring,strings);
R: moveto(x,y);
keyss(backstring,strings,length,1);
Key = *(unsigned char *)sys_keyreturn ;
switch ( Key )
{
case ENTER:
return ENTER;
case DOWN : return DOWN;
case UP : return UP;
case ESC : return ESC;
default :
strcpy(backstring,strings);
goto R;
}
} //end Input()
int Sort2(int Number,int Record_Number)
{
int i,j;
char str[50];
for(i=Number+1;i<Record_Number;i++)
{
for(j=START;j<=END;j++)
{
libset(i,j);
libread(str);
libset(i-1,j);
libwrit(str);
}
}
for(j=START;j<=END;j++)
{
libset(Record_Number-1,j);
libwrit("");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -