Chen Huan
/
MotorPID
闭环步进电机
GUI.cpp
- Committer:
- heroistired
- Date:
- 2018-04-05
- Revision:
- 1:cbd6a3232d5b
File content as of revision 1:cbd6a3232d5b:
#include "GUI.h" int screen_buf1[140] = {}; int screen_buf2[140] = {}; int index = 0; void RefreshGUI(Serial *Screen, int freq, float kp, float ki, int goal, int pos) { unsigned long int long_goal, long_pos; long_goal = goal; long_pos = pos; SXY(Screen,8,35); if(freq < 10) DS16(Screen,90,20,int2string(freq)+" ",3); else DS16(Screen,90,20,int2string(freq)+" ",3); DS16(Screen,90,40,float2string(kp),3); DS16(Screen,90,60,float2string(ki),3); DS16(Screen,90,80,int2string(goal)+" ",3); DS16(Screen,90,100,int2string(pos)+" ",3); SXY(Screen,170,75); PS(Screen,index,screen_buf1[index],0); //screen_buf1[index] = 110-long_goal/(16383/110); screen_buf1[index] = 110-goal/(16383/110); PS(Screen,index,screen_buf1[index],3); PS(Screen,index,screen_buf2[index],0); //screen_buf1[index] = 110-long_pos/(16383/110); screen_buf2[index] = 110-pos/(16383/110); PS(Screen,index,screen_buf2[index],5); index++; if(index == 140) index = 0; SXY(Screen,0,0); ExecuteInstruction(Screen); //wait(0.1); } void InitGUI(Serial *Screen) { char c1[18]={0xB1,0xD5,0xBB,0xB7,0xB2,0xBD,0xBD,0xF8,0xB5,0xE7,0xBB,0xFA,0xCA,0xD4,0xD1,0xE9,0xCC,0xA8};//闭环步进电机试验台 char c2[8]={0xBF,0xD8,0xD6,0xC6,0xD0,0xC5,0xCF,0xA2};//控制信息 char c3[4]={0xC6,0xB5,0xC2,0xCA};//频率 char c4[8]={0xB1,0xC8,0xC0,0xFD,0xCF,0xB5,0xCA,0xFD};//比例系数 char c5[8]={0xBB,0xFD,0xB7,0xD6,0xCF,0xB5,0xCA,0xFD};//积分系数 char c6[8]={0xC4,0xBF,0xB1,0xEA,0xCE,0xBB,0xD6,0xC3};//目标位置 char c7[8]={0xB5,0xB1,0xC7,0xB0,0xCE,0xBB,0xD6,0xC3};//当前位置 char c8[18] = {0xC7,0xE5,0xBB,0xAA,0xB4,0xF3,0xD1,0xA7,0xB4,0xB4,0xD0,0xC2,0xB9,0xA4,0xD7,0xF7,0xB7,0xBB};//清华大学创新工作坊 string str= ""; SXY(Screen,0,0); CLS(Screen,0); for(int i=0;i<18;i++) str+=c1[i]; DS16(Screen,90,4,str,12); str= ""; PL(Screen,0,28,319,28,15); PL(Screen,0,29,319,29,15); PL(Screen,159,35,159,190,15); PL(Screen,160,35,160,190,15); SXY(Screen,8,35); for(int i=0;i<8;i++) str+=c2[i]; DS16(Screen,30,0,str,2); str= ""; for(int i=0;i<4;i++) str+=c3[i]; DS16(Screen,0,20,str,2); str= ""; for(int i=0;i<8;i++) str+=c4[i]; DS16(Screen,0,40,str,2); str= ""; for(int i=0;i<8;i++) str+=c5[i]; DS16(Screen,0,60,str,2); str= ""; for(int i=0;i<8;i++) str+=c6[i]; DS16(Screen,0,80,str,2); str= ""; for(int i=0;i<8;i++) str+=c7[i]; DS16(Screen,0,100,str,2); str= ""; SXY(Screen,170,35); for(int i=0;i<8;i++) str+=c6[i]; DS16(Screen,0,0,str,2); str= ""; for(int i=0;i<8;i++) str+=c7[i]; DS16(Screen,0,20,str,2); str= ""; PL(Screen,80,5,140,5,3); PL(Screen,80,6,140,6,3); PL(Screen,80,25,140,25,5); PL(Screen,80,26,140,26,5); SXY(Screen,0,0); PL(Screen,0,195,319,195,15); PL(Screen,0,196,319,196,15); for(int i=0;i<18;i++) str+=c8[i]; DS16(Screen,85,203,str,12); str= ""; DS16(Screen,50,222,"Developed by C.H. Dep of EEA",2); SXY(Screen,0,0); ExecuteInstruction(Screen); wait(0.2); } void DS16(Serial *Screen, int x, int y, string str, int color) { string temp = "DS16("+int2string(x)+","+int2string(y)+",'"+str+"',"+int2string(color)+");"; Screen->printf(temp.c_str()); } void DS24(Serial *Screen, int x, int y, string str, int color) { string temp = "DS24("+int2string(x)+","+int2string(y)+",'"+str+"',"+int2string(color)+");"; Screen->printf(temp.c_str()); } void SXY(Serial *Screen, int x, int y) { string temp = "SXY("+int2string(x)+","+int2string(y)+");"; Screen->printf(temp.c_str()); } void CLS(Serial *Screen, int color) { string temp = "CLS("+int2string(color)+");"; Screen->printf(temp.c_str()); } void PL(Serial *Screen, int x1, int y1, int x2, int y2, int color) { string temp = "PL("+int2string(x1)+","+int2string(y1)+","+int2string(x2)+","+int2string(y2)+","+int2string(color)+");"; Screen->printf(temp.c_str()); } void PS(Serial *Screen, int x1, int y1, int color) { string temp = "PS("+int2string(x1)+","+int2string(y1)+","+int2string(color)+");"; Screen->printf(temp.c_str()); } void ExecuteInstruction(Serial *Screen) { Screen->printf("\r\n"); } string int2string(int x) { stringstream ss; ss << x; string str = ss.str(); return str; } string float2string(float x) { int xx = x * 100; float xxx = (float)xx / 100; stringstream ss; ss << xxx; string str = ss.str() + ' '; return str; }