代码拉取完成,页面将自动刷新
/*menu.c*/
#include "jiwu.h"
int KeyManage(int keycode,int mode) //按键管理,mode=1renovate
{
u_int SameKeyTime = 0;
int mode1; //mode1 =1长按键0短按
int xpos,ypos;
u_char* sampbuffer ;
xpos = 2;
if(keycode != C_KEYCODMAX)
{
SameKeyTime = TestSameKeyTime(keycode,GetElapsedTime(),C_SAMEKEYTIME);
}
else if( MGetSystemMode() == 0 )
{
SameKeyTime = 0;
}
//同一按键时间
if(SameKeyTime >= C_SAMEKEYTIME)mode1 = 1; //mode1 =1长按键0短按
else mode1 = 0;
if( keycode != C_KEYCODMAX && MGetKeyLock() > 0 && !(keycode == C_KEYCOD_RETURN && mode1 == 1) )
{
int tm1;
tm1 = GetElapsedTime() + 1000 *2;
MPushWindow(0,0,C_BASEGAIN_HPOSI-2,C_COORVPOSI-10);
MEraseWindow(0,0,C_BASEGAIN_HPOSI-2,C_COORVPOSI-10);
CEMenuOut( 0, 0,_KEYLOCK_A3,6,1,12);
while( GetElapsedTime() < tm1 )
{
}
MPopWindow();
return -1;//键盘锁返回-1
}
//; MSetColor(C_CR_WAVE);
///MParaRenovate(0);
// SystemParaStore();
// ChannelParaStore();
switch (keycode)
{
case C_KEYCOD_CHANNEL:
if( MGetSystemMode() != 1)
{
if( mode1 == 1)
{
keycode == ChannelMenu();
keycode = -1;
}
else keycode = ChannelChange();
}
break;
case C_KEYCOD_BASEGAIN:
#ifndef C_KEYCOD_AUTOGAIN
if( (MGetAmpMax(0) > 80 && MGetAmpMax(0) < 160) || (MGetAmpMax(1) > 80 && MGetAmpMax(1) < 160) )
keycode = GainChange();
else if( MGetSystemMode() == 0 ) //波高在80-160即40-80%之间,不进行自动增益
{
//if( MGetFunctionMode(C_AUTOADJUST_GAIN) == 1 || mode1 == 1)
if( mode1 == 1 )
{
MAdjustGain(1,0,120,120);
keycode = -1;
}
else
keycode = GainChange();
}
else //波高在80-160即40-80%之间,不进行自动增益
keycode = GainChange();
#else
keycode = GainChange();
#endif
break;
#ifdef C_KEYCOD_AUTOGAIN
case C_KEYCOD_AUTOGAIN:
MAdjustGain(1,0,MGetAmpStdMax(),MGetAmpStdMax());
keycode = -1;
break;
#endif
case C_KEYCOD_OFFSET:
if( mode1 == 1)
{
keycode == TestMenu();
keycode = -1;
}
else keycode = OffsetChange();
break;
#if C_DEVTYPE == 2 || C_DEVTYPE == 10 || C_DEVTYPE == 14
case C_KEYCOD_TEST:
keycode == TestMenu();
keycode = -1;
break;
#endif
case C_KEYCOD_SPEED:
if( mode1 == 1)
{
keycode == STDMenu();
keycode = -1;
}
else keycode = SpeedChange(1);
break;
case C_KEYCOD_RANGE:
keycode = RangeChange();
break;
case C_KEYCOD_ANGLE:
#if C_DEVTYPE == 1 || C_DEVTYPE == 9
if( mode1 == 1)
{
keycode == ParaMenu(1);
keycode = -1;
}
else keycode = AngleChange();
break;
#elif C_DEVTYPE == 3 || C_DEVTYPE == 11
keycode = AngleChange();
break;
#elif C_DEVTYPE == 2 || C_DEVTYPE == 4 || C_DEVTYPE == 20 || C_DEVTYPE == 5 || C_DEVTYPE == 8 || C_DEVTYPE == 10 || C_DEVTYPE == 12 || C_DEVTYPE == 13 || C_DEVTYPE == 14
if( mode1 == 1)
{
///keycode == ColorMenu();//ParaMenu(1);
keycode = -1;
}
else keycode = AngleChange();
break;
#endif
#if C_DEVTYPE == 4 || C_DEVTYPE == 20
case C_KEYCOD_SETUP:
ParaMenu1();
keycode = -1;
break;
#elif C_DEVTYPE == 2 || C_DEVTYPE == 3 || C_DEVTYPE == 5 || C_DEVTYPE == 8 || C_DEVTYPE == 9 || C_DEVTYPE == 10 || C_DEVTYPE == 11 || C_DEVTYPE == 12 || C_DEVTYPE == 13 || C_DEVTYPE == 14
case C_KEYCOD_SETUP:
if( mode1 == 1)
{//长按减号键,将到参数菜单的第二页,查看设置基准波高
ParaMenu(2);
}
else ParaMenu(1);
keycode = -1;
break;
#endif
case C_KEYCOD_GATE:
if( MGetFunctionMode( C_WAVE_EXPEND ) && MGetGatePara(0,0) > 1)
{
/* GateWaveExpend(0);
MSetSystemRange(); //设置当前声程
MSetSystemDelay();
MChannelRenovate();
MDrawGate(-1,0,-1,0);
DrawDac(0);
//WriteRange(C_RANGE_HPOSI,C_RANGE_VPOSI);
//WriteScale();
MKeyRlx();
while(true)
{
MParaRenovate(0);
if( MGetKeyCode(10) == C_KEYCOD_GATE) break;
}
GateWaveExpend(1);
MSetSystemRange(); //设置当前声程
MSetSystemDelay();
*/
int range = MGetRange(-2);//当前所存的值
int delay = MGetDelay(-2);
int gateposi ;
int gatewide ;
ChannelParaStore();
gateposi = MGetGatePara( 0,0);
gatewide = MGetGatePara( 0,1);
MSetDelay( delay + (int)( (float)( C_SAMPLE_FREQ * range )/(float)MGetSpeed() * (float)gateposi/ (float)C_COORWIDTH + 0.6), -2);
MSetRange( range * gatewide/C_COORWIDTH, -2);
MSetGatePara( 5, C_COORWIDTH-10, MGetGatePara(0,2), 0, C_SETMODE_SETSAVE);
MSetSystemRange(); //设置当前声程
MSetSystemDelay();
MChannelRenovate();
MDrawGate(-1,0,-1,0);
DrawDac(0);
MKeyRlx();
while(true)
{
MParaRenovate(0);
if( MGetKeyCode(10) == C_KEYCOD_GATE) break;
}
// MSetRange( range, -2);
// MSetDelay( delay, -2);
// MSetGatePara( gateposi, gatewide, MGetGatePara(0,2), 0, C_SETMODE_SETSAVE);
// MSetSystemRange(); //设置当前声程
// MSetSystemDelay();
ChannelParaRestore();
MSetSystem();
MChannelRenovate();
DrawDac(0);
DisplayPrompt(16);
MKeyRlx();
keycode = -1;
}
//*/
else
{
MSetParaSort( MGetParaSort(C_AGATEPOSI) %3 ,C_AGATEPOSI) ;
keycode = GateChange();
}
break;
#if C_DEVTYPE == 2 || C_DEVTYPE == 10 || C_DEVTYPE == 14
case C_KEYCOD_GATEB:
MSetParaSort( 4, C_BGATEPOSI);
keycode = GateChange();
break;
#endif
case C_KEYCOD_RETURN:
if( mode1 == 1)
{
int tm1,tm2;
MKeyRlx();
tm1 = GetElapsedTime() + 1000 *3;
tm2 = MGetKeyLock();
MPushWindow(0,0,C_BASEGAIN_HPOSI-2,C_COORVPOSI-10);
MEraseWindow(0,0,C_BASEGAIN_HPOSI-2,C_COORVPOSI-10);
if( MGetKeyLock() > 0)
{
CEMenuOut( 0, 0,_KEYLOCK_A2,6,1,12);
}
else
{
CEMenuOut( 0, 0,_KEYLOCK_A1,6,1,12);
}
while( GetElapsedTime() < tm1 )
{
keycode = MGetKeyCode(10);
if(keycode == C_KEYCOD_POINT)
{//短按确定键后在约定时间内按了点键
MSetKeyLock( tm2 + 1,C_SETMODE_SAVE);
break;
}
}
MPopWindow();
if ( tm2 != MGetKeyLock() )
{
MChannelRenovate();
DrawDac(1);
}
MKeyRlx();
}
else if( stWeldPara.type > 0 )//长按返回键,且有焊缝设置
{
ShowWeld(10,29+120,260,80,MGetAngle(0), MGetAmpDist1(0) );
ScreenRenovate();
DrawDac(0);
}
ExpendTime(50);
keycode = -1;
break;
case C_KEYCOD_CONFIRM:
#if C_DEVTYPE == 4 || C_DEVTYPE == 20
keycode = -1;
break;
#endif
if( mode1 == 1)
{
if( MGetAmpMax(0) < 5)
{
keycode = -1;
break;
}
mode1 = MGetBGateMode();
MSetBGateMode(0,C_SETMODE_SETSAVE);//先设B门为失波,并保存原来状态
MChannelRenovate();
DrawDac(1);
MSetAcquisitionEnable(0,C_SETMODE_SETSAVE);
sampbuffer = GetSampleBuffer();
ClearCursor(2);
keycode = MGetKeyCode(10);
if(keycode == C_KEYCODMAX)
{
keycode = MGetRotary(-1);
if( keycode > 0 )keycode = C_KEYCOD_LEFT;
else if( keycode < 0)keycode = C_KEYCOD_RIGHT;
else keycode = C_KEYCODMAX;
}
if(keycode == C_KEYCOD_LEFT)xpos++;
else if(keycode == C_KEYCOD_RIGHT)xpos--; //使得当前最高波能第一次被选中
while( xpos > 0 ) //当SearchPeak返回-1时表示未能找到最高波
{
if(keycode == C_KEYCOD_LEFT || keycode == C_KEYCOD_RIGHT)
{
ClearCursor(2);
xpos = SearchPeak(sampbuffer,xpos,keycode);
if( xpos < 0)break ;
ypos = C_COORVPOSI + C_COORHEIGHT - 2 - *(sampbuffer + xpos);
DrawCursor(xpos,ypos,2);
}
else if(keycode == C_KEYCOD_RETURN)
{
ClearCursor(2);
break;
}
keycode = MGetKeyCode(10);
if(keycode == C_KEYCODMAX)
{
keycode = MGetRotary(-1);
if( keycode > 0 )keycode = C_KEYCOD_LEFT;
else if( keycode < 0)keycode = C_KEYCOD_RIGHT;
else keycode = C_KEYCODMAX;
}
ExpendTime(20);
}
MSetGateParaInit(); //门内最高波设初值
MSetAcquisitionEnable(1,C_SETMODE_SETSAVE);
MSetBGateMode(mode1,C_SETMODE_SETSAVE);//恢复B门类型
MChannelRenovate();
DrawDac(1);
}
else//短按
{
}
keycode = -1;
break;
case C_KEYCOD_SAVE:
if( MGetSystemMode() != 1)
{
if( stWeldPara.type > 0 && !MGetSaveMode())
{//有焊缝/无连续存
if( ShowWeld(10,29+120,260,80,MGetAngle(0), MGetAmpDist1(0) ) == 0)
{//按了返回键
keycode = -1;
break;
}
}
MSetAcquisitionEnable(0,C_SETMODE_SETSAVE);
WaveSave(mode1);
MSetAcquisitionEnable(1,C_SETMODE_SETSAVE);
MSetHardEchoShow(1,C_SETMODE_SETSAVE);
}
//if( MGetSystemMode() != 1)DataMenu(1);
keycode = -1;
break;
case C_KEYCOD_DATA:
if( MGetSystemMode() != 1)
{
MSetAcquisitionEnable(0,C_SETMODE_SETSAVE);
DataMenu(mode1);
MSetSystem();
MSetAcquisitionEnable(1,C_SETMODE_SETSAVE);
}
//if( MGetSystemMode() != 1)DataMenu(1);
MKeyRlx();
ExpendTime(50);
keycode = -1;
break;
case C_KEYCOD_FUNCTION:
#if C_DEVTYPE == 4 || C_DEVTYPE == 20 || C_DEVTYPE == 5
///
/// BScan();//临时
/// MKeyRlx();
////
MSetAcquisition(0);
InitPara();//初始化
MSetAcquisition(1);
ScreenRenovate(); /*屏幕刷新*/
DrawDac(0); //新画DAC
#else
if(false)//if( mode1 == 1)
{
MSetDacShowMode( MGetDacShowMode()+1,C_SETMODE_SAVE);
ScreenRenovate(); /*屏幕刷新*/
DrawDac(0); //新画DAC
MKeyRlx();
}
else if( MGetSystemMode() != 1);///FuncMenu();
#endif
keycode = -1;
break;
case C_KEYCOD_DELAY:
keycode = DelayChange(1);
break;
case C_KEYCOD_RIGHT:
if( mode1 == 1)
{//长按加号键,调节亮度
#if C_DEVLIB == 1 || C_DEVLIB == 3
int bright;
CEMenuOut(0,0,_Bright_A1,6,1,16);
MKeyRlx();
bright = 0;
while( true)
{
keycode = MGetKeyCode(10);
if( keycode == C_KEYCOD_RIGHT )
MSetScreenBrightness( MGetScreenBrightness()+1,C_SETMODE_SETSAVE);
else if( keycode == C_KEYCOD_LEFT )
MSetScreenBrightness( MGetScreenBrightness()-1,C_SETMODE_SETSAVE);
//*/
else if( keycode < C_KEYCODMAX)break;
ExpendTime(20);
}
DisplayPrompt(16);
#endif
}
else
{//短按加号键,调节扫查增益使波到80%
/// MAdjustGain(1,0,MGetAmpStdMax(),MGetAmpStdMax());
}
keycode = -1;
break;
case C_KEYCOD_LEFT:
#if C_DEVTYPE != 4 && C_DEVTYPE != 20
if( mode1 == 1)
{//长按减号键,将到参数菜单的第二页,查看设置基准波高
ParaMenu(2);
}
else
{//短按减号键,使扫查增益归0
/// MSetCompGain(0, C_SETMODE_SETSAVE);
}
#endif
keycode = -1;
break;///暂不考虑下面的测试增益表的语句
MKeyRlx();
ExpendTime(100);
keycode = MGetKeyCode(10);
MKeyRlx();
if( keycode == C_KEYCOD_RIGHT)
{
ExpendTime(100);
if( MGetKeyCode(10) == C_KEYCOD_LEFT)
{
}
}
else if( keycode == 7 )
{
ExpendTime(100);
if( MGetKeyCode(10) == C_KEYCOD_LEFT)
{
}
}
else
{
ExpendTime(100);
if( MGetKeyCode(10) == C_KEYCOD_LEFT)
{
}
}
keycode = -1;
break;
default :
keycode = -1;
break;
}
if( MGetStdMode() == C_STD_AWS_NUM - 1)//AWS
{
MSetBGateMode(0, C_SETMODE_SAVE);
//MSetEquivalentMode(); //mode1=0B门失波1进波,mode2<0波高.>0dB数
}
if( keycode == C_KEYCOD_RETURN )
{
keycode = -1 ;
}
if( keycode == -1 )ExpendTime(20);
if(MGetSystemMode() == 0 && keycode != C_KEYCODMAX)
// if( MGetSystemMode() == 0 && keycode == -1 )
{
SystemParaStore();
ChannelParaStore();
}
//if(mode == 1 && keycode == C_KEYCOD_RETURN)MChannelRenovate();
return keycode;
}
int ParaMenu1(void)//出现第几页的参数菜单
{
return 1;
}
int ParaMenu(int page)//出现第几页的参数菜单
{
return 1;
}
int ChannelMenu(void)
{
u_short char_len = 6,row_number = 10,crow_height = 23,erow_height = 12;
int number,deci_len;//,sign;
short xpos = 0,ypos = 0;
//int menu_xpos = 0,menu_ypos = 0;
short para_xpos = C_CCHAR_HDOT * ( char_len + 1) ,para_ypos = 4;
int retvalue = C_TRUE;
int keycode;
short page_max = 1, page = 1;
int row;
u_short* cpText = 0;
u_char* epText = 0;
// int i;
u_int elapsedtime1 = GetElapsedTime();// ,elapsedtime2;
MSetAcquisitionEnable(0,C_SETMODE_SETSAVE);
MSetHardEchoShow(0,C_SETMODE_SETSAVE);
ClearEnvelope();
SystemParaStore();
ChannelParaStore();
DisplayPrompt(15);
para_xpos = C_CCHAR_HDOT * ( char_len + 1) ;
short row_number_page1, para_ypos_page1;
row_number_page1 = 8;
para_ypos_page1 = 20;
while(true)
{
MFclearScreen();
switch(page)
{
case 1:
cpText = (u_short*)_ChannelMenu_A1;
epText = (u_char*)_ChannelMenu_B1;
row_number = row_number_page1;
para_ypos = para_ypos_page1;
break;
case 2:
break;
}
MSetColor(C_CR_MENU);
CEMenuOut(C_ECHAR_HDOT,para_ypos, cpText ,char_len,row_number,crow_height); /*在指定位置根据每行字符数、行数、行高写菜单*/
EMenuOut(para_xpos+C_ECHAR_HDOT*5,para_ypos + 8, epText ,3,row_number,crow_height); /*在指定位置根据每行字符数、行数、行高写菜单*/
EraseDrawRectangle(26*C_ECHAR_HDOT, 190, 26*C_ECHAR_HDOT + (5+1)*C_CCHAR_HDOT, 190 + 2 * 24) ;
CMenuOut(27*C_ECHAR_HDOT,190+4,_MenuPrompt_B1,5,2,24); /*在指定位置根据每行字符数、行数、行高写菜单*/
MSetColor(C_CR_PARA);
switch(page)
{
case 1:
/*探头类型 */
row = 0;
xpos = para_xpos;
ypos = para_ypos + crow_height *row;
cpText = (u_short*)_ParaMenu_AB2 + ( (MGetProbeMode()-0)*4+1 );
CEMenuOut(xpos,ypos , cpText ,3,1,crow_height); /*在指定位置根据每行字符数、行数、行高写菜单*/
//探头频率
row = 1;
ypos = para_ypos + crow_height *row + C_ECHAR_HDOT;
Write_Number(xpos,ypos,MGetFrequence(),4,2,0);
//晶片尺寸
row = 2;
ypos = para_ypos + crow_height *row + C_ECHAR_HDOT;
Write_Crystal(xpos,ypos,MGetCrystal());
EMenuOut(xpos + 5*8,ypos,"mm",2,1,12);
//折射角
row = 3;
ypos = para_ypos + crow_height *row + C_ECHAR_HDOT;
Write_Number(xpos,ypos,( MGetAngle(1) + 50)/100,4,2,0); //K value
Write_Ascii(xpos + 4 * C_ECHAR_VDOT,ypos,'/');
Write_Number(xpos + 5 * C_ECHAR_VDOT,ypos ,MGetAngle(0),4,1,0); //angle
Write_Ascii(xpos + 9 * C_ECHAR_VDOT,ypos ,130);
//声速
row = 4;
ypos = para_ypos + crow_height *row + C_ECHAR_HDOT;
///Write_Number(xpos,ypos,MGetSpeed(),5,0,0);
WriteSpeed(xpos,ypos );
//探头前沿
row = 5;
if( row < row_number)
{
ypos = para_ypos + crow_height *row + C_ECHAR_HDOT;
/// Write_Number(xpos,ypos,MGetForward(),4,1,0);
WriteLongness(xpos,ypos,MGetForward(),5,1);
}
//3. 频带宽度:2.5\5.0\wide
row = 6;
if( row < row_number)
{
xpos = para_xpos;
ypos = para_ypos + crow_height *row + C_ECHAR_HDOT * 0;
epText = (u_char*)_ParaMenu_AD3 + ( MGetBandMode()*9+3 );
EMenuOut(xpos,ypos+C_ECHAR_VDOT+1,epText,4,1,erow_height); /*在指定位置根据每行字符数、行数、行高写菜单*/
}
//2. 检波方式:全波\正半波\负半波\射频
row = 7;
if( row < row_number)
{
xpos = para_xpos;
ypos = para_ypos + crow_height *row + C_ECHAR_HDOT * 0;
cpText = (u_short*)_ParaMenu_AD2 + ( MGetEchoMode()*6+1 );
CEMenuOut(xpos,ypos+1,cpText,4,1,crow_height); /*在指定位置根据每行字符数、行数、行高写菜单*/
}
//4. 探头阻尼:50Q\400Q
row = 8;
if( row < row_number)
{
xpos = para_xpos;
ypos = para_ypos + crow_height *row + C_ECHAR_HDOT * 0;
epText = (u_char*)_ParaMenu_AD4 + ( MGetDampMode()*10+3 );
EMenuOut(xpos,ypos+C_ECHAR_VDOT+1,epText,7,1,erow_height); /*在指定位置根据每行字符数、行数、行高写菜单*/
}
//5. 发射电压:200V\400V
row = 9;
if( row < row_number)
{
xpos = para_xpos;
ypos = para_ypos + crow_height *row + C_ECHAR_HDOT * 0;
epText = (u_char*)_ParaMenu_AD5 + ( MGetPulseMode()*10+3 );
EMenuOut(xpos,ypos+C_ECHAR_VDOT+1,epText,7,1,erow_height); /*在指定位置根据每行字符数、行数、行高写菜单*/
}
break;
case 2:
break;
}////////////
//keycode = MAnyKeyReturn();
MKeyRlx(); /*只有按键已释放才退出*/
do{
if( GetElapsedTime() > elapsedtime1 + 200 )
{
InvertWords(27*C_ECHAR_HDOT,190+4, 2); /*反白显示几个字的区域*/
elapsedtime1 = GetElapsedTime() ;
}
keycode = MGetKeyCode(10);
if ( (keycode > 0 && keycode <= row_number)|| (keycode == 0 && 10 == row_number)
|| ( ( keycode == C_KEYCOD_PLUS || keycode == C_KEYCOD_MINUS) && page_max > 1 )
|| ( keycode == C_KEYCOD_LEFT || keycode == C_KEYCOD_RIGHT)
|| ( keycode == C_KEYCOD_CONFIRM || keycode == C_KEYCOD_RETURN )
|| ( keycode == C_KEYCOD_ANGLE && extend == 0 )
)break;
else
{
keycode = MGetRotary(-1);
if( keycode > 0 )keycode = C_KEYCOD_PLUS;
else if( keycode < 0)keycode = C_KEYCOD_MINUS;
else continue;
break;
}
}while( keycode != C_KEYCOD_RETURN && keycode != C_KEYCOD_CONFIRM );
if (keycode == C_KEYCOD_RETURN)
{
MSetAcquisitionEnable(MGetAcquisitionEnable(),C_SETMODE_SETSAVE);
SystemParaRestore();
ChannelParaRestore();
retvalue = C_FALSE;
break;
}
else if (keycode == C_KEYCOD_CONFIRM)
{
MSetAcquisitionEnable(MGetAcquisitionEnable(),C_SETMODE_SETSAVE);
MSetSystem();
SystemParaStore();
ChannelParaStore();
retvalue = C_TRUE;
break;
}
if (keycode == C_KEYCOD_RIGHT)
{
continue;
}
else if (keycode == C_KEYCOD_LEFT)
{
continue;
}
else if( keycode == C_KEYCOD_ANGLE)
{
if(extend == 0)
{
page_max = 2;
row_number_page1 = 10;
para_ypos_page1 = 4;
continue;
}
}
if(keycode == 0)keycode = 10;
row = keycode - 1;
xpos = para_xpos;
ypos = para_ypos + crow_height * row-1;
InvertWords(C_ECHAR_HDOT,ypos, 1); /*反白显示几个字的区域*/
if( page == 1)
{
switch (keycode)
{
case 1: /*探头类型 */
if( MGetParaLock(1,C_LOCK_PROBE) == 1)break;
cpText = (u_short*)_ParaMenu_AB2;
MPushWindow(xpos, ypos, xpos + (5)*C_CCHAR_HDOT, ypos + crow_height * 4) ;
EraseDrawRectangle(xpos, ypos, xpos + (5)*C_CCHAR_HDOT, ypos + crow_height * 4) ;
CEMenuOut(xpos+4,ypos+4, cpText ,4,4,crow_height); /*在指定位置根据每行字符数、行数、行高写菜单*/
while(1)
{
keycode = MAnyKeyReturn();
if (keycode == C_KEYCOD_RETURN||keycode == C_KEYCOD_CONFIRM)
break;
else if(keycode >= 1 && keycode <= 4)
{
MSetProbeMode(keycode-1,C_SETMODE_SAVE); /*设置探头模式*/
if(MGetProbeMode() != 1) //非斜探头
{
if( MGetUnitType() > 0)MSetSpeed(CD_SPEED_1*1000/254,C_SETMODE_SAVE);//单位inch
else MSetSpeed(CD_SPEED_1,C_SETMODE_SAVE);
MSetCrystal(20*256,C_SETMODE_SAVE);
MSetAngle(0,C_SETMODE_SAVE);
MSetForward(0,C_SETMODE_SAVE);
}
else //斜探头
{
MSetCrystal(13*256+13,C_SETMODE_SAVE);
if( MGetUnitType() > 0)MSetSpeed(CD_SPEED_2*1000/254,C_SETMODE_SAVE);//单位inch
else MSetSpeed(CD_SPEED_2,C_SETMODE_SAVE);
}
MSetScaleMode(0,C_SETMODE_SAVE);
break;
}
}
MPopWindow();
break;
case 2: //探头频率
if( MGetParaLock(1,C_LOCK_PROBE) == 1)break;
deci_len = 2;
number = 100;
while(1)
{
if( Input_Number(xpos,ypos,&number,2, &deci_len,0) != 1)break;
else
{
if( number > 0 && number <= 2000)
{
MSetFrequence(number,C_SETMODE_SAVE);
if( C_DEVLIB != 3)
{
if(number < 100 || number > 750) MSetBandMode(2,C_SETMODE_SAVE);
else if(number >= 100 && number <= 350) MSetBandMode(0,C_SETMODE_SAVE);
else if(number <= 750) MSetBandMode(1,C_SETMODE_SAVE);
//else if(number <= 1250) MSetBandMode(2,C_SETMODE_SAVE);
}
break;
}
else DisplayPrompt(4);
}
}
break;
case 3: //晶片尺寸
if( MGetParaLock(1,C_LOCK_PROBE) == 1)break;
deci_len = 1;
number = 100;
while(1)
{
if( Input_Crystal(xpos,ypos,&number) != 1)break;
else
{
if( number%256 <= 50 && number/256 <= 50)
{
MSetCrystal(number,C_SETMODE_SAVE);
break;
}
else DisplayPrompt(4);
}
}
break;
case 4: //折射角
if( MGetParaLock(1,C_LOCK_OFFSET) == 1)break;
deci_len = 2;
if ( Input_Number(xpos,ypos,&number,2, &deci_len,0) == 1)
{
if(number <= 500)
{ /*斜探头输入K值*/
MSetKvalue(number,C_SETMODE_SAVE);
}
else
{
number /=10;
MSetAngle(number,C_SETMODE_SAVE); /*设置当前通道 */
}
}
break;
case 5: //声速
if( MGetParaLock(1,C_LOCK_OFFSET) == 1)break;
if( MGetUnitType() > 0)deci_len = 2;//单位inch
else deci_len = 0;
number = 100;
while(1)
{
if( Input_Number(xpos,ypos,&number,5, &deci_len,0) != 1)break;
else
{
if(number >= C_MIN_SPEED && number <= C_MAX_SPEED)
{
MSetSpeed(number,C_SETMODE_SAVE);
break;
}
else DisplayPrompt(4);
}
}
break;
case 6: //前沿
if( MGetParaLock(1,C_LOCK_PROBE) == 1)break;
if( MGetUnitType() > 0)deci_len = 3;//单位inch
else deci_len = 1;
number = 100;
while(1)
{
if( Input_Number(xpos,ypos,&number,2, &deci_len,0) != 1)break;
else
{
if( number <= 3000)
{
MSetForward(number,C_SETMODE_SAVE);
break;
}
else DisplayPrompt(4);
}
}
break;
case 7:
if( MGetParaLock(1,C_LOCK_PROBE) == 1)break;
MPushWindow(xpos, ypos, xpos+ 11*C_ECHAR_HDOT, ypos + 4 * erow_height) ;
EraseDrawRectangle(xpos, ypos, xpos+ 11*C_ECHAR_HDOT, ypos + 4 * erow_height) ;
EMenuOut(xpos + C_ECHAR_HDOT,ypos+4,_ParaMenu_AD3,9,3,15); /*在指定位置根据每行字符数、行数、行高写菜单*/
while(1)
{
keycode = MenuKeyReturn(3,2); /*出现菜单时,按不大于keymax的键返回,mode=0其它键无效,=1确认键有效,=2返回键有效,=3确认返回键有效*/
if (keycode == C_KEYCOD_RETURN||keycode == C_KEYCOD_CONFIRM)
break;
else if(keycode >= 1 && keycode <= 3)
{
MSetBandMode(keycode-1,C_SETMODE_SAVE);
break;
}
}
MPopWindow();
break;
case 8:
if( MGetParaLock(1,C_LOCK_PROBE) == 1)break;
cpText = (u_short*)_ParaMenu_AD2 ;
ypos -= 4 * crow_height;
#if C_DEVLIB != 3
deci_len = 4;
#else
deci_len =2;
#endif
MPushWindow(xpos, ypos, xpos+ 6*C_CCHAR_HDOT, ypos + deci_len * crow_height) ;
EraseDrawRectangle(xpos, ypos, xpos+ 6*C_CCHAR_HDOT, ypos + deci_len * crow_height) ;
CEMenuOut(xpos + C_ECHAR_HDOT,ypos+4,cpText,5,deci_len,crow_height); /*在指定位置根据每行字符数、行数、行高写菜单*/
while(1)
{
keycode = MenuKeyReturn(4,2); /*出现菜单时,按不大于keymax的键返回,mode=0其它键无效,=1确认键有效,=2返回键有效,=3确认返回键有效*/
if (keycode == C_KEYCOD_RETURN||keycode == C_KEYCOD_CONFIRM)
break;
else if(keycode >= 1 && keycode <= deci_len)
{
MSetEchoMode(keycode-1,C_SETMODE_SETSAVE);
break;
}
}
MPopWindow();
break;
case 9:
if( MGetParaLock(1,C_LOCK_PROBE) == 1)break;
MPushWindow(xpos, ypos, xpos+ 12*C_ECHAR_HDOT, ypos + 3 * erow_height) ;
EraseDrawRectangle(xpos, ypos, xpos+ 12*C_ECHAR_HDOT, ypos + 3 * erow_height) ;
EMenuOut(xpos + C_ECHAR_HDOT,ypos+6,_ParaMenu_AD4,10,2,17); /*在指定位置根据每行字符数、行数、行高写菜单*/
while(1)
{
keycode = MenuKeyReturn(2,2); /*按不大于keymax的键返回,mode=0其它键无效,=1确认键有效,=2返回键有效,=3确认返回键有效*/
if (keycode == C_KEYCOD_RETURN||keycode == C_KEYCOD_CONFIRM)
break;
else if(keycode >= 1 && keycode <= 2)
{
MSetDampMode(keycode-1,C_SETMODE_SAVE);
break;
}
}
MPopWindow();
break;
case 10:
if( MGetParaLock(1,C_LOCK_PROBE) == 1)break;
ypos -= 5 * erow_height;
MPushWindow(xpos, ypos, xpos+ 12*C_ECHAR_HDOT, ypos + 6 * erow_height) ;
EraseDrawRectangle(xpos, ypos , xpos+ 12*C_ECHAR_HDOT, ypos + 6 * erow_height) ;
EMenuOut(xpos + C_ECHAR_HDOT,ypos + 6 ,_ParaMenu_AD5,10,4,17);
while(1)
{
keycode = MenuKeyReturn(4,2);
if (keycode == C_KEYCOD_RETURN||keycode == C_KEYCOD_CONFIRM)
break;
else if(keycode >= 1 && keycode <= 4)
{
MSetPulseMode(keycode-1,C_SETMODE_SAVE);
//SetTransmitterVoltage(LOW_PULSE+keycode-1) ;
break;
}
}
MPopWindow();
break;
}
}
else if( page == 2)
{
}
}
MSetColor(C_CR_UNDO);
MSetSystem();
ClearEnvelope(); //清包络或峰值
MSetRepeatRate(MGetRepeatRate(), C_SETMODE_SET);
MSetPulseWidth(MGetPulseWidth(), C_SETMODE_SET);
g_nAutoDenoise = 0;
MSetBaseGain(MGetBaseGain(), C_SETMODE_SETSAVE);
ScreenRenovate(); /*屏幕刷新*/
DrawDac(0); //新画DAC
MSetAcquisitionEnable(1,C_SETMODE_SETSAVE);
MSetHardEchoShow(1,C_SETMODE_SETSAVE);
return 1;
}
extern u_char crPara[];
extern const u_int c_crPara[] ;
const u_short _COLOR_A1[] = {
//CH(100),CH(4953),CH(4111),CH(4172),CH(5435),CH( 100),
CH(316),CH(2754),CH(2420),CH(3612),CH(4047),CH(5421),
CH(217),CH(3833),CH(3627),CH(2155),CH(4111),CH( 326),
CH(218),CH(3870),CH(2046),CH(2756),CH(1808),CH( 326),
CH(219),CH(3728),CH(2046),CH(2756),CH(1808),CH( 326),
CH(220),CH(4465),CH(4230),CH(1843),CH(2105),CH( 326),
CH(221),CH(2208),CH(3331),CH(3990),CH(4763),CH( 326),
CH(222),CH(5588),CH(1774),CH(1846),CH(3331),CH( 326),
#if C_DEVTYPE != 4 && C_DEVTYPE != 5
CH(223),CH( 100),CH(1808),CH(3537),CH( 333),CH( 326),
CH(224),CH( 100),CH(1808),CH(3537),CH( 334),CH( 326),
CH(225),CH(2369),CH(5421),CH(1692),CH(3471),CH( 326),
#else
CH(223),CH( 100),CH(1808),CH( 100),CH(3537),CH( 326),
CH(224),CH(2369),CH(5421),CH(1692),CH(3471),CH( 326),
#endif
};
/*
红粉黄绿青兰紫白黑
//*/
const u_short _COLOR_B1[] = {
CH(217),CH(2676),
CH(218),CH(2359),
CH(219),CH(2738),
CH(220),CH(3444),
CH(221),CH(3964),
CH(222),CH(3228),
CH(223),CH(5547),
CH(224),CH(1655),
CH(225),CH(2658),
};
/*
0。颜色设置:自定义/默认设置1/默认设置2/默认设置3
0. 恢复默认值
1. 奇次回波:
2。偶次回波:
3。提示菜单:
4。定量曲线:
5. 坐标参量
6。波门A:
7。波门B:
8。峰值包络:
9.屏幕底色
*/
int ColorMenu(void)
{
/*
#if C_COLOR == 1
u_int char_len = 6, crow_height = 23;//,row_number = 10, erow_height = 12;
//int number,deci_len,sign;
int xpos,ypos;
//int menu_xpos = 0,menu_ypos = 0;
int para_xpos = C_CCHAR_HDOT * ( char_len + 0) ,para_ypos = 4;
int retvalue = C_TRUE;
int keycode;
//int page_no = 1,page_max = 3;
int row;
u_short* cpText = 0;
//u_char* epText = 0;
int i;//,j,k;
int len;//,line;
int item;
u_int elapsedtime1 = GetElapsedTime();// ,elapsedtime2;
int offset;
int crnum = 0;
#if C_DEVTYPE == 20
return 0;
#endif
u_char crTemp[C_CR_MAX+10];
for( i = 0 ; i < C_CR_MAX+10 ;i++)crTemp[i] = crPara[i];//保存原设置
#if C_DEVTYPE == 2 || C_DEVTYPE == 8 || C_DEVTYPE == 9 || C_DEVTYPE == 10 || C_DEVTYPE == 11 || C_DEVTYPE == 12 || C_DEVTYPE == 13 || C_DEVTYPE == 14
crnum = 10;
#elif C_DEVTYPE == 4 || C_DEVTYPE == 20 || C_DEVTYPE == 5
crnum = 8;
#endif
MSetColor(C_CR_MENU);
MSetAcquisition(0);
MSetHardEchoShow(0,C_SETMODE_SETSAVE);
ClearEnvelope();
SystemParaStore();
ChannelParaStore();
DisplayPrompt(15);
while(true)
{
MFclearScreen();
cpText = (u_short*)_COLOR_A1;
//epText = (u_char*)_STDMenu_B1;
MSetColor(C_CR_MENU);
EraseDrawRectangle(26*C_ECHAR_HDOT, 190, 26*C_ECHAR_HDOT + (5+1)*C_CCHAR_HDOT, 190 + 2 * 24) ;
MSetColor(C_CR_MENU);
CEMenuOut(C_ECHAR_HDOT,para_ypos, cpText ,char_len,crnum,crow_height);
//EMenuOut(para_xpos+C_ECHAR_HDOT*5,para_ypos + 8, epText ,3,row_number,crow_height);
CMenuOut(27*C_ECHAR_HDOT,190+4,_MenuPrompt_B1,5,2,24);
MSetColor(C_CR_UNDO);
//MSetColor(C_CR_PARA);
//
for( i = 0,row = 1; i < crnum - 1; i++,row++)
{
xpos = para_xpos + C_ECHAR_HDOT;
ypos = para_ypos + crow_height *row ;
cpText = (u_short*)_COLOR_B1 + 2*MLoadColor(i) + 1;
//Write_Number(250,30+10*i,MLoadColor(i),4,0,0);
MSetColor( i ) ;
CEMenuOut(xpos,ypos, cpText ,1,1,crow_height);
MSetColor(C_CR_UNDO);
}
//MSetColor(C_CR_UNDO);
MKeyRlx();
do{
if( GetElapsedTime() > elapsedtime1 + 200 )
{
InvertWords(27*C_ECHAR_HDOT,190+4, 2);
elapsedtime1 = GetElapsedTime() ;
}
keycode = MGetKeyCode(10);
if( keycode >= 0 && keycode < crnum )break;
}while( keycode != C_KEYCOD_RETURN && keycode != C_KEYCOD_CONFIRM && keycode != C_KEYCOD_COLOR );
if (keycode == C_KEYCOD_RETURN)
{
MSetAcquisitionEnable(MGetAcquisitionEnable(),C_SETMODE_SETSAVE);
SystemParaRestore();
ChannelParaRestore();
for( i = 0 ; i < C_CR_MAX+10 ;i++)crPara[i] = crTemp[i] ;//恢复原设置
retvalue = C_FALSE;
break;
}
else if (keycode == C_KEYCOD_CONFIRM)
{
MSetAcquisitionEnable(MGetAcquisitionEnable(),C_SETMODE_SETSAVE);
MSetSystem();
SystemParaStore();
ChannelParaStore();
offset = C_OFF_TEMP+60; //颜色存储位置
MCopyProtectedMemory( (void*)offset, crPara, C_CR_MAX+10, PM_COPY_WRITE);
retvalue = C_TRUE;
break;
}
else if( keycode == C_KEYCOD_COLOR)
{
MSaveDefualtColor(MGetColorMode()+1);//设置默认颜色
continue;
}
else if( keycode == 0)
{
MSaveDefualtColor(MGetColorMode()+1);//设置默认颜色
continue;
}
row = item = keycode ;
item--;
xpos = para_xpos;
ypos = para_ypos + crow_height * row-1;
InvertWords(C_ECHAR_HDOT,ypos, 1);
ypos = para_ypos + crow_height * 1;
len = 2;
row = 9;
MPushWindow(xpos, ypos, xpos+ (len+4)*C_ECHAR_HDOT, ypos + (row+0) * crow_height) ;
EraseDrawRectangle(xpos, ypos, xpos+ (len+4)*C_ECHAR_HDOT, ypos + (row+0) * crow_height) ;
for( i = 0; i < row ; i++)
{
#if( C_COLOR == 1)
if( i == row - 1)SetDisplayColor( RED_B0|GREEN_B0|BLUE_B0 );
else SetDisplayColor( c_crPara[ i ] );
#endif
cpText = (u_short*)_COLOR_B1 + 2*i;
CEMenuOut(xpos + C_ECHAR_HDOT,ypos+4+i*crow_height,cpText,len,1,crow_height);
}
while(1)
{
keycode = MenuKeyReturn(row,2);
if (keycode == C_KEYCOD_RETURN||keycode == C_KEYCOD_CONFIRM)
break;
else if(keycode >= 1 && keycode <= row)
{
MSaveColor(item,keycode-1 );
//Write_Number( 200,30,item,4,0,0);
//Write_Number( 200,40,keycode,4,0,0);
//MAnyKeyReturn();
break;
}
}
MPopWindow();
}
SetBackgroundColor(c_crPara[crPara[ C_CR_BACK] ]);
MSetColor(C_CR_UNDO);
MSetColor(C_CR_WAVE);
MSetSystem();
MSetAcquisition(1);
ClearEnvelope();
ScreenRenovate();
DrawDac(0); //新画DAC
#endif*/
return 1;
}
void InitPara(void)
{
int xpos, ypos ;
u_short* cpText ;
int keycode ;
int offset,offmax;
int Zero;
int row_number;
MSetColor(C_CR_DEFAULT);
xpos = C_COORWIDTH - 6 * C_CCHAR_HDOT;
ypos = C_COORVPOSI + 1 ;
MFclearScreen();
row_number = 5;
cpText = (u_short*)_FuncMenu_A2 ;
MPushWindow(xpos, ypos, xpos + 6*C_CCHAR_HDOT, ypos + 24 *row_number ) ;
EraseDrawRectangle(xpos, ypos, xpos + 6*C_CCHAR_HDOT, ypos + 24 * row_number ) ;
CEMenuOut(xpos+4, ypos+4, cpText ,5,5,24); /*在指定位置根据每行字符数、行数、行高写菜单*/
while(1)
{
keycode = MAnyKeyReturn();
if (keycode == C_KEYCOD_RETURN || keycode == C_KEYCOD_CONFIRM)
break;
else if( (keycode >= 1 && keycode <= 4) || keycode == 9)
{
//if( DisplayQuery(3) == 0)break;
if( keycode == 1)
{
if( DisplayQuery(8) == 0)break;
DisplayPrompt(17);//显示数据正在清除
ChannelParaInit(0); /*参数初始化,mode=0当前一个通道,mode=1所有通道*/
}
else if (keycode == 2)
{
if( DisplayQuery(9) == 0)break;
DisplayPrompt(17);//显示数据正在清除
MSetChannel(0,0);
ChannelParaInit(1); /*参数初始化,mode=0当前一个通道,mode=1所有通道*/
}
else if (keycode == 3)
{
int offset = C_OFF_FILEINFO;
int file_total;
if( DisplayQuery(10) == 0)break;
file_total = 0; //清空存储的探伤数据
MCopyProtectedMemory( (void*)offset, &file_total, C_SIZE_INT, PM_COPY_WRITE);
}
else if (keycode == 4 || (keycode == 9 && GetElapsedTime() < 1000 * 30) )//开机30秒内在初始化中按9可清全部数据
{
if( DisplayQuery(11) == 0)break;
int mode,i;
InitJiWu(0);
if( keycode == 9 )
{//开机时间约定时长
mode = 2;
for( i = 0; i < 5; i++)
{
offset = C_OFF_INIT + i * C_SIZE_INT;
MCopyProtectedMemory( &Zero, (void*)offset, C_SIZE_INT, PM_COPY_READ);
if( Zero != i)break;
}
if( i < 5 )//说明是第一次初始化
{
for( i = 0; i < 5; i++)
{
offset = C_OFF_INIT + i * C_SIZE_INT;
MCopyProtectedMemory( (void*)offset, &i,C_SIZE_INT, PM_COPY_WRITE);
}
offset = C_OFF_PWD;
}
else offset = C_OFF_STORE;
}
else
{
mode = 1;
offset = C_OFF_DAC;
}
//数据清除
Zero = 0;
offmax = C_OFF_FILEMAX;
DisplayPrompt(17);//显示数据正在清除
u_int time = GetElapsedTime();
u_int elapsedtime = 400;
int xpos = 6* C_CCHAR_HDOT;
MSetColor(C_CR_MENU);
for( ; offset < offmax;offset += C_SIZE_INT)
{
MCopyProtectedMemory( (void*)offset, &Zero, C_SIZE_INT, PM_COPY_WRITE); //写0
if( time + elapsedtime < GetElapsedTime() )
{
Write_Ascii(xpos,7,'.');
time = GetElapsedTime();
xpos += 8;
}
}
ExpendTime(100);
Write_Ascii(xpos,7,'.');
MSetChannel(0,0);
ChannelParaInit(mode); /*参数初始化,mode=0当前一个通道,mode=1所有通道,2所有用户*/
if( keycode == 9)
{
INNER_INFO InnerInfo;
InnerInfo.pzPurchaser[0] = 0;
InnerInfo.pzSerial[0] = 0;
InnerInfo.MaintainTime.yearh = 0x20;
InnerInfo.MaintainTime.yearl = 6;
InnerInfo.MaintainTime.month = 1;
InnerInfo.MaintainTime.date = 1;
InnerInfo.LeaveFactoryTime.yearh = 0x20;
InnerInfo.LeaveFactoryTime.yearl = 6;
InnerInfo.LeaveFactoryTime.month = 1;
InnerInfo.LeaveFactoryTime.date = 1;
InnerInfo.StorageTime.yearh = 0x20;
InnerInfo.StorageTime.yearl = 6;
InnerInfo.StorageTime.month = 1;
InnerInfo.StorageTime.date = 1;
offset = C_OFF_INNER_INFO;
MCopyProtectedMemory((void*)offset, &InnerInfo, sizeof(INNER_INFO), PM_COPY_WRITE);
USER_INFO UserInfo;
UserInfo.pzPurchaser[0] = 0;
UserInfo.pzSerial[0] = UserInfo.pzUser[0] = UserInfo.pzGovernor[0] = 0;
UserInfo.PurchaseTime.yearh = 0x20;
UserInfo.PurchaseTime.yearl = 6;
UserInfo.PurchaseTime.month = 1;
UserInfo.PurchaseTime.date = 1;
offset = C_OFF_USER_INFO;
MCopyProtectedMemory((void*)offset, &UserInfo, sizeof(USER_INFO), PM_COPY_WRITE);
}
}
//ChannelParaRestore();
break;
}
}
MPopWindow() ;
MSetColor( C_CR_MENU);
MSetColor( C_CR_WAVE);
MSetSurfGain(0,2);
}
int STDMenu(void)//标准菜单
{
/*u_int char_len = 6,crow_height = 23,erow_height = 12;//row_number = 10,
int number,deci_len,sign;
int xpos,ypos;
//int menu_xpos = 0,menu_ypos = 0;
int para_xpos = C_CCHAR_HDOT * ( char_len + 1) ,para_ypos = 4;
int retvalue = C_TRUE;
int keycode;
//int page_no = 1,page_max = 3;
int row;
u_short* cpText = 0;
u_char* epText = 0;
int i,j,k;
int len,line;
u_int elapsedtime1 = GetElapsedTime() ;
#if C_DEVTYPE == 20
return 0;
#endif
if( MGetTestStatus(C_TEST_AVG) == 1)return 0;//已做AVG则不显示标准菜单
MSetAcquisitionEnable(0,C_SETMODE_SETSAVE);
MSetHardEchoShow(0,C_SETMODE_SETSAVE);
ClearEnvelope();
SystemParaStore();
ChannelParaStore();
DisplayPrompt(15);
while(true)
{
MFclearScreen();
cpText = (u_short*)_STDMenu_A1;
//epText = (u_char*)_STDMenu_B1;
MSetColor(C_CR_MENU);
CEMenuOut(C_ECHAR_HDOT,para_ypos, cpText ,char_len,MGetCurveNumber()+4,crow_height);
//EMenuOut(para_xpos+C_ECHAR_HDOT*5,para_ypos + 8, epText ,3,row_number,crow_height);
EraseDrawRectangle(26*C_ECHAR_HDOT, 190, 26*C_ECHAR_HDOT + (5+1)*C_CCHAR_HDOT, 190 + 2 * 24) ;
CMenuOut(27*C_ECHAR_HDOT,190+4,_MenuPrompt_B1,5,2,24);
MSetColor(C_CR_PARA);
//标准类型
row = 0;
xpos = para_xpos;
ypos = para_ypos + crow_height *row + C_ECHAR_HDOT;
epText = (u_char*)_STDMenu_AB1 + ( MGetStdMode()*C_STD_LEN+2 );
EMenuOut(xpos,ypos , epText ,C_STD_LEN-2,1,crow_height);
//曲线数
row = 1;
ypos = para_ypos + crow_height *row + C_ECHAR_HDOT;
Write_Number(xpos,ypos,MGetCurveNumber(),2,0,0);
//试块类型
row = 2;
ypos = para_ypos + crow_height *row + C_ECHAR_HDOT;
epText = (u_char*)_STDMenu_B1[MGetStdMode()]+1 + ( MGetBlock()*C_BLOCK_LEN+2 ) ;
EMenuOut(xpos, ypos, epText ,C_BLOCK_LEN-2, 1, erow_height);
//工件厚度
row = 3;
ypos = para_ypos + crow_height *row + C_ECHAR_HDOT;
WriteLongness(xpos,ypos,MGetThick(),5,1);
///Write_Number(xpos,ypos,MGetThick(),4,1,0);
//第1一6根线
for( i = 0; i < MGetCurveNumber(); i++)
{
row++;
xpos = para_xpos;
ypos = para_ypos + crow_height *row + C_ECHAR_HDOT;
Write_Number(xpos,ypos,MGetLineGain(i),5,1,1);
}
MKeyRlx();
do{
if( GetElapsedTime() > elapsedtime1 + 200 )
{
InvertWords(27*C_ECHAR_HDOT,190+4, 2);
elapsedtime1 = GetElapsedTime() ;
}
keycode = MGetKeyCode(10);
if( keycode >= 0 && keycode <= MGetCurveNumber() + 4)break;
}while( keycode != C_KEYCOD_RETURN && keycode != C_KEYCOD_CONFIRM );
if (keycode == C_KEYCOD_RETURN)
{
MSetAcquisitionEnable(MGetAcquisitionEnable(),C_SETMODE_SETSAVE);
SystemParaRestore();
ChannelParaRestore();
retvalue = C_FALSE;
break;
}
else if (keycode == C_KEYCOD_CONFIRM)
{
MSetAcquisitionEnable(MGetAcquisitionEnable(),C_SETMODE_SETSAVE);
MSetSystem();
SystemParaStore();
ChannelParaStore();
retvalue = C_TRUE;
break;
}
if(keycode == 0)keycode = 10;
keycode--;//把1-10变为0-9
row = keycode ;
xpos = para_xpos;
ypos = para_ypos + crow_height * row-1;
InvertWords(C_ECHAR_HDOT,ypos, 1);
switch (keycode)
{
case 0: //标准
len = C_STD_LEN;
row = C_STD_MAX;
MPushWindow(xpos, ypos, xpos+ (len+2)*C_ECHAR_HDOT, ypos + (row+1) * erow_height) ;
EraseDrawRectangle(xpos, ypos, xpos+ (len+2)*C_ECHAR_HDOT, ypos + (row+1) * erow_height) ;
EMenuOut(xpos + C_ECHAR_HDOT,ypos+4,_STDMenu_AB1,len,row,erow_height);
while(1)
{
keycode = MenuKeyReturn(row,2);
if (keycode == C_KEYCOD_RETURN||keycode == C_KEYCOD_CONFIRM)
break;
else if(keycode >= 1 && keycode <= row)
{
MSetStdMode(keycode-1,C_SETMODE_SAVE);
MSetBlock(0);
MSetDacMode(2,0);
MSetCurveNumber( c_DACLine[MGetStdMode()][MGetBlock()][C_STD_POS_LINENUM] );
k = c_DACLine[MGetStdMode()][MGetBlock()][C_STD_POS_THNUM];//试块种类
number = MGetThick()/10;
if( MGetUnitType() > 0)number = (UINT)(number * 254/1000.0+0.5);//单位inch
for( i = 0 ; i < k; i++)
{
if( number > c_DACLine[MGetStdMode()][MGetBlock()][C_STD_POS_THICK+7*i] )continue;
for( j = 0; j < MGetCurveNumber(); j++)
{
MSetLineGain(j, c_DACLine[MGetStdMode()][MGetBlock()][C_STD_POS_THICK+7*i+j+1] );
}
break;
}
break;
}
}
MPopWindow();
break;
case 1: //曲线数
deci_len = 0;
number = 100;
while(1)
{
if( Input_Number(xpos,ypos,&number,2, &deci_len,0) != 1)break;
else
{
if( number > 0 && number <= 6)
{
MSetCurveNumber(number);
break;
}
else DisplayPrompt(4);
}
}
break;
case 2: //试块类型
//break;
row = _STDMenu_B1[MGetStdMode()][0]- '0' ;
len = C_BLOCK_LEN;
epText = (u_char*)( _STDMenu_B1[MGetStdMode()]+1 );
MPushWindow(xpos, ypos, xpos+ 11*C_ECHAR_HDOT, ypos + (row+1) * erow_height) ;
EraseDrawRectangle(xpos, ypos, xpos+ (len+2)*C_ECHAR_HDOT, ypos + (row+1) * erow_height) ;
EMenuOut(xpos + C_ECHAR_HDOT, ypos+4, epText ,len, row, erow_height);
while(1)
{
keycode = MenuKeyReturn(row,2);
if (keycode == C_KEYCOD_RETURN||keycode == C_KEYCOD_CONFIRM)
break;
else if(keycode >= 1 && keycode <= row)
{
MSetBlock(keycode-1);
k = c_DACLine[MGetStdMode()][MGetBlock()][C_STD_POS_THNUM];//试块种类
number = MGetThick()/10;
if( MGetUnitType() > 0)number = (UINT)(number * 254/1000.0+0.5);//单位inch
for( i = 0 ; i < k; i++)
{
if( number > c_DACLine[MGetStdMode()][MGetBlock()][C_STD_POS_THICK+7*i] )continue;
for( j = 0; j < MGetCurveNumber(); j++)
{
MSetLineGain(j, c_DACLine[MGetStdMode()][MGetBlock()][C_STD_POS_THICK+7*i+j+1] );
}
break;
}
break;
}
}
MPopWindow();
break;
case 3: //工件厚度
//break;
deci_len = 1;
number = 0;
while(1)
{
if( Input_Number(xpos,ypos,&number,4,&deci_len,0) != 1)break;
else
{
if( number < 5000)
{
MSetThick(number);
number /= 10;
if( MGetUnitType() > 0)number = (UINT)(number * 254/1000.0+0.5);//单位inch
k = c_DACLine[MGetStdMode()][MGetBlock()][C_STD_POS_THNUM];
for( i = 0 ; i < k; i++)
{
if( number > c_DACLine[MGetStdMode()][MGetBlock()][C_STD_POS_THICK+7*i] )continue;
for( j = 0; j < MGetCurveNumber(); j++)
{
MSetLineGain(j, c_DACLine[MGetStdMode()][MGetBlock()][C_STD_POS_THICK+7*i+j+1] );
}
break;
}
}
else DisplayPrompt(4);
break;
}
}
break;
case 4: //第一根线
case 5: //第2根线
case 6:
case 7:
case 8:
case 9:
deci_len = 1;
number = 0;
if(MGetTestStatus(C_TEST_AVG) == 1)sign = 0;
else sign = 1;
line = keycode - 4;
if( MGetCurveNumber() < line)break;
while( 1 )
{
if( Input_Number(xpos,ypos,&number,3, &deci_len,sign) < 1)break;
else
{
if(MGetTestStatus(C_TEST_AVG) == 1)
{
if( number >= 5 && number < 300)
number = (int)( 400 * log10( number/10.0) -120);
else break;
}
else if(number < -300 || number > 400)break;
MSetLineGain(line,number);
break;
}
}
break;
}
}
MSetAcquisitionEnable(1,C_SETMODE_SETSAVE);
MSetHardEchoShow(1,C_SETMODE_SETSAVE);
ClearEnvelope(); //清包络或峰值
MSetColor(C_CR_UNDO);
ScreenRenovate();
DrawDac(0); //新画DAC*/
return 1;
}
int DataCall(int file_no) //调用已存储的数据并覆盖到当前通道
{
//显示提示:通道X的数据将被覆盖,Y/N?
if(CMessageBox( 0,0,_DataMenu_E1,10,MB_YESNO) == MB_YES)
{
MSetChannel(9,C_SETMODE_SETSAVE);
MSetSaveMode(0,0);
MSetSaveFrequency(0,0);
ChannelParaStore();
SystemParaStore(); //将存储通道数据和系统数据调入存储区
MSetSystem();
return 1;
}
else return 0;
}
int TestFlawHigh(void) //测高
{
return 1;
}
int TestFlawLength(void) //测长
{
return 1;
}
/*
端点6dB法
调参量移探头使缺陷左端
最高波在进波门内en确认
左移探头当左端点回波降
为40%时作标记并en确认
调参量移探头使缺陷右端
最高波在进波门内en确认
右移探头当右端点回波降
为40%时作标记并en确认
将量出的两标记间长度在
此输入: mm,en确认
6dB法
调参量移探头使缺陷
最高波在进波门内en确认
分别左右移探头当回波降
为40%时作标记并en确认
将量出的两标记间长度在
此输入: mm,en确认
*/
#define C_LEN_BUFF 16
#define C_BASE 0
#define C_WAVENUM 2
#define C_REJ 10
void BScan(void)//B扫描
{
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。