📄 configpid.c
字号:
SetFocusChild( GetDlgItem(hDlg,ctrl_pid_id));
}
if(id==KEY_RIGHT)
{
SendDlgItemMessage(hDlg, CPID_RIGHT, MSG_LBUTTONUP, 0,0);
ctrl_pid_id=pid1_id_right[ctrl_pid_id-pid_page_ctrlid]; SetFocusChild( GetDlgItem(hDlg,ctrl_pid_id));
}
if(id==KEY_UP)
{
SendDlgItemMessage(hDlg, CPID_UP, MSG_LBUTTONUP, 0,0);
if(flag_entered)//按过ENTER后选择BOX里面内容
{
SendDlgItemMessage(hDlg,ctrl_pid_id,MSG_KEYDOWN,SCANCODE_PAGEDOWN,0);
index--;if(index<0)index=num-1;
SendDlgItemMessage(hDlg,ctrl_pid_id,CB_SETCURSEL,index,0);
}
else
{
ctrl_pid_id=pid1_id_up[ctrl_pid_id-pid_page_ctrlid];
SetFocusChild( GetDlgItem(hDlg,ctrl_pid_id));
}
}
if(id==KEY_DOWN)
{
SendDlgItemMessage(hDlg, CPID_DOWN, MSG_LBUTTONUP, 0,0);
if(flag_entered)//按过ENTER后选择BOX里面内容
{
SendDlgItemMessage(hDlg,ctrl_pid_id,MSG_KEYDOWN,SCANCODE_PAGEDOWN,0);
index++;if(index==num)index=0;
SendDlgItemMessage(hDlg,ctrl_pid_id,CB_SETCURSEL,index,0);
}
else
{
ctrl_pid_id=pid1_id_down[ctrl_pid_id-pid_page_ctrlid];
SetFocusChild( GetDlgItem(hDlg,ctrl_pid_id));
}
}
if(id==KEY_ENTER){
SendDlgItemMessage(hDlg, CPID_ENTER, MSG_LBUTTONUP, 0,0);
if(flag_entered)
{
flag_entered=0;
SetFocusChild( GetDlgItem(hDlg,ctrl_pid_id));
}
else
{//3
if((ctrl_pid_id==PID_ADDR)||
((ctrl_pid_id>=PID_OUT1)&&(ctrl_pid_id<=PID_SV2))
)
DigitalConfig (hDlg ); //弹出数字键盘
else
{
SendDlgItemMessage(hDlg,ctrl_pid_id,MSG_KEYDOWN,SCANCODE_PAGEDOWN,0);
flag_entered=1;
index=SendDlgItemMessage(hDlg,ctrl_pid_id,CB_GETCURSEL,0,0);
num=SendDlgItemMessage(hDlg,ctrl_pid_id,CB_GETCOUNT,0,0);
}
}
}
if(id==KEY_LAST){
SendDlgItemMessage(hDlg, CPID_BOT_LEFT, BM_SETSTATE, 0,0);
}
if(id==KEY_NEXT){
SendDlgItemMessage(hDlg, CPID_BOT_RIGHT, BM_SETSTATE, 0,0);
}
if(id==KEY_PARA){
SendDlgItemMessage(hDlg, CP2_PAGE, BM_SETSTATE, 0,0);
index2=SendDlgItemMessage (hDlg, IDC_PROPSHEET,
PSM_GETACTIVEINDEX, 0, 0);
index2=index2+1;
if(index2>5)index2=0;
SendDlgItemMessage (hDlg, IDC_PROPSHEET,
PSM_SETACTIVEPAGE, index2 , 0);
//InvalidateRect(hDlg,NULL,TRUE);
}
if(id==KEY_CARD){
// CARD KEY -> CLOSE PAGE
SendDlgItemMessage(hDlg, CP2_CARD, BM_SETSTATE, 0,0);
ShowPage1(hDlg);
//
//SendDlgItemMessage (hDlg, IDC_PROPSHEET,
// PSM_SETACTIVEPAGE, 0, 0);
// SendDlgItemMessage (hDlg, IDC_PROPSHEET,
// PSM_REMOVEPAGE, 0, 0);
// InvalidateRect(hDlg,NULL,TRUE);
}
if(id==KEY_SET){
ShowProp(hDlg);
//SET THE PARA
SendDlgItemMessage(hDlg, CP2_SET, BM_SETSTATE, 0,0);
/* */
//
// printf("i=%d\n",index2);
//得到地址
//得到波特率
//发送通讯命令下去
//endCmd(hDlg,ctrl_pid_id);
//重新读取命令
//更新页面
}
if(id==KEY_RETURN){
SendDlgItemMessage(hDlg, CPID_BOT_RETURN, BM_SETSTATE, 0,0);
}
}
break;
case MSG_COMMAND:
{
if (id == EN_CHANGE)
{
SetDlgItemText(hDlg, ctrl_pid_id,(unsigned char *)lParam);
}
if(id==CPID_DBACK)
EndDialog (hDlg, 0);
if(id==CPID_BOT_RETURN)
EndDialog (hDlg, 0);
}
break;
case MSG_DESTROY:
printf("CARDCOM timer keilled!/n");
KillTimer(hDlg,_ID_TIMER_CARDCOM);
DestroyAllControls(hDlg);
break;
case MSG_CLOSE:
EndDialog (hDlg, 0);
break;
}
return DefaultDialogProc (hDlg, message, wParam, lParam);
}
void DlgPIDConf (HWND hWnd)
{
Dlg_PID.controls = ctrl_PID;
DialogBoxIndirectParam (&Dlg_PID, hWnd, PIDDialogProc, 0L);
}
//建立 板卡第一个页面控件
void CreatePidCtrl1(HWND hWnd)
{int i;
for(i=0; i<dim(pid_ctrl1);i++){
pid_ctrl1[i].hwndControl = CreateWindow(
pid_ctrl1[i].spClassName,
pid_ctrl1[i].spCaption,
WS_CHILD|pid_ctrl1[i].dwStyle ,
pid_ctrl1[i].conID,
pid_ctrl1[i].conx,
pid_ctrl1[i].cony,
pid_ctrl1[i].conw,
pid_ctrl1[i].conh,
hWnd,
0);
}
}
void ShowPidCtrl1(HWND hWnd)
{
int i;
for(i=0;i<dim(pid_ctrl1);i++)
{
ShowWindow(pid_ctrl1[i].hwndControl,SW_SHOW);
}
}
void HidePidCtrl1(HWND hWnd)
{
int i;
for(i=0;i<dim(pid_ctrl1);i++)
{
ShowWindow(pid_ctrl1[i].hwndControl,SW_HIDE);
}
}
/*
显示pid卡基本页面的信息
动态数据
报警情况
*/
void ShowPIDPage1(HWND hDlg,HDC hdc)
{
int id;
unsigned char str[20];
unsigned char str_temp[20];
HDC hmemDC;
id=pid_id;
//
//隐藏上页面控件
//显示本页面控件
hmemDC=hdc;
// SetBrushColor(hmemDC,PIXEL_lightgray);//lightwhite
SetBkMode(hmemDC,BM_TRANSPARENT);//? SetBkMode
//设置字体颜色
SetTextColor(hmemDC,PIXEL_black); //矩形图TAG
SelectFont(hmemDC,songgb16font);
//读取流量板卡的信息
// strcpy(str_temp,"基本信息1/3");
// TextOut(hmemDC,400,5,str_temp);
TextOut(hmemDC,PID_X4,5,"通讯: 不存在");
TextOut(hmemDC,PID_X1,PID_Y1+5,"名称 :");
TextOut(hmemDC,PID_X3,PID_Y1,"通讯地址:");
TextOut(hmemDC,PID_X3,PID_Y2,"工作方式");
// if(card_pid_reg[pid_id].enabled)
// else
// TextOut(hmemDC,PID_X3+100,PID_Y1,"板卡不存在");
/* TextOut(hmemDC,PID_X3,PID_Y5,"OP:工作方式");
TextOut(hmemDC,PID_X3,PID_Y6,"LN:PV1分度类型");
TextOut(hmemDC,PID_X3,PID_Y7,"KD:微分增益系数");
TextOut(hmemDC,PID_X3,PID_Y8,"ASV:自整定提前量");
*/
TextOut(hmemDC,PID_X1,PID_Y2,"波特率:");
TextOut(hmemDC,PID_X1,PID_Y3,"回路1信号类型:");
TextOut(hmemDC,PID_X1,PID_Y4,"回路1控制方式");
TextOut(hmemDC,PID_X1,PID_Y5,"回路自整定");
TextOut(hmemDC,PID_X1,PID_Y6,"回路2信号类型");
TextOut(hmemDC,PID_X1,PID_Y7,"回路2控制方式");
TextOut(hmemDC,PID_X1,PID_Y8,"回路2输入限幅");
TextOut(hmemDC,PID_X3+10,PID_Y3,"回路1输出类型");
TextOut(hmemDC,PID_X3+10,PID_Y4,"回路2输出类型");
TextOut(hmemDC,PID_X3+10,PID_Y5,"回路3输出类型");
TextOut(hmemDC,PID_X3+10,PID_Y6,"回路1输出限幅");
TextOut(hmemDC,PID_X3+10,PID_Y7,"回路2输出限幅");
TextOut(hmemDC,PID_X3+10,PID_Y8,"回路3输出限幅");
TextOut(hmemDC,PID_X4+42,PID_Y6+15,"~");
TextOut(hmemDC,PID_X4+42,PID_Y7+15,"~");
TextOut(hmemDC,PID_X4+42,PID_Y8+15,"~");
TextOut(hmemDC,PID_X1,PID_Y9,"P1: 比例");
TextOut(hmemDC,PID_X1,PID_Y10,"I1: 积分");
TextOut(hmemDC,PID_X1,PID_Y11,"D1: 微分");
TextOut(hmemDC,PID_X3+10,PID_Y9,"P2: 比例");
TextOut(hmemDC,PID_X3+10,PID_Y10,"I2: 积分");
TextOut(hmemDC,PID_X3+10,PID_Y11,"D2: 微分");
/*
TextOut(hmemDC,PID_X3+10,PID_Y8,"AL1继电器状态:闭合");
TextOut(hmemDC,PID_X3+10,PID_Y9,"AL2继电器状态:断开");
TextOut(hmemDC,PID_X3+10,PID_Y10,"AL3继电器状态:断开");
TextOut(hmemDC,PID_X3+10,PID_Y11,"AL4继电器状态:断开");
strcpy(str,table_unit[card_pid_reg[pid_id].PV1]);
TextOut(hmemDC,PID_X1+140,PID_Y1,str);
strcpy(str,table_unit[card_pid_reg[pid_id].DP]);
TextOut(hmemDC,PID_X1+140,PID_Y2,str);
strcpy(str,table_unit[card_pid_reg[pid_id].DCA]);
TextOut(hmemDC,PID_X1+140,PID_Y3,str);
strcpy(str,table_unit[card_pid_reg[pid_id].SV]);
TextOut(hmemDC,PID_X1+140,PID_Y4,str);
strcpy(str,table_unit[card_pid_reg[pid_id].PV]);
TextOut(hmemDC,PID_X1+140,PID_Y5,str);
//给编辑框赋值
SetDlgItemText(hDlg, PID_NAME,card_pid_reg[id].name);
SelectFont(hmemDC,songgb16font);
//实时值
bzero(str,sizeof(str));
sprintf(str,"%.4f",card_pid_reg[pid_id].temperature);
TextOut(hmemDC,PID_X1+40, PID_Y1, str);
sprintf(str,"%.4f",card_pid_reg[pid_id].pressure);
TextOut(hmemDC,PID_X1+40, PID_Y2, str);
sprintf(str,"%.4f",card_pid_reg[pid_id].flux);
TextOut(hmemDC,PID_X1+40, PID_Y3, str);
sprintf(str,"%.4f",card_pid_reg[pid_id].instant_flux);
TextOut(hmemDC,PID_X1+40, PID_Y4, str);
//将 Hcumul_flux,Lcumul_flux计算到cumul_flux
card_pid_reg[pid_id].cumul_flux=(card_pid_reg[pid_id].Hcumul_flux)*(2^32)+(card_pid_reg[pid_id].Lcumul_flux);
sprintf(str,"%.4f",card_pid_reg[pid_id].cumul_flux);
TextOut(hmemDC,PID_X1+40, PID_Y5, str);
//报警状态
if(card_pid_reg[pid_id].alarm1_status==1)
{
FillBoxWithBitmap(hmemDC,PID_X2+120,PID_Y1 ,16,16,&staticbmp[0]); //red
}
else
FillBoxWithBitmap(hmemDC,PID_X2+120,PID_Y1 ,16,16,&staticbmp[1]); //green
if(card_pid_reg[pid_id].alarm2_status==1)
{
FillBoxWithBitmap(hmemDC,PID_X2+120,PID_Y2 ,16,16,&staticbmp[0]); //red
}
else
FillBoxWithBitmap(hmemDC,PID_X2+120,PID_Y2 ,16,16,&staticbmp[1]); //green
*/
//TextOut(hmemDC,100,380,"提示:设置其他参数请按页面切换键.");
//给编辑框赋值
SetDlgItemText(hDlg, PID_NAME,card_pid_reg[id].name);
SetDlgItemInt(hDlg, PID_DL2,0,0);
// SetDlgItemInt(hDlg, PID_DH2,1999,0);
SetDlgItemInt(hDlg, PID_OL1,0,0);
SetDlgItemInt(hDlg, PID_OH1,100,0);
SetDlgItemInt(hDlg, PID_OL2,0,0);
SetDlgItemInt(hDlg, PID_OH2,100,0);
SetDlgItemInt(hDlg, PID_DL1,0,0);
SetDlgItemInt(hDlg, PID_DH1,100,0);
SetDlgItemInt(hDlg, PID_P1,200,0);
SetDlgItemInt(hDlg, PID_I1,100,0);
SetDlgItemInt(hDlg, PID_D1,20,0);
SetDlgItemInt(hDlg, PID_P2,200,0);
SetDlgItemInt(hDlg, PID_I2,100,0);
SetDlgItemInt(hDlg, PID_D2,20,0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -