⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cm_main1.c

📁 uClinux 下MicroWindows开发的电机控制平台软件和模拟示波器的双路数据采集系统源码
💻 C
📖 第 1 页 / 共 3 页
字号:
#define MWINCLUDECOLORS/********************************************************************************    Debug switch Section*******************************************************************************//********************************************************************************    Include File Section*******************************************************************************/#include <stdio.h>#include <string.h>#include <time.h>#include "QU_queue.h"#include "nano-X.h"#include "math.h"#include "Hardware.h"/********************************************************************************    Macro Define Section*******************************************************************************/#define Button_Width 50//一般按钮的宽度#define Button_High 25//一般按钮的高度#define Button_Borad_Color BLUE//一般按钮的边框颜色 #define Button_Borad_Width 2//一般按钮的边框宽度#define Button_Back_Color_White WHITE//按钮的白背景色状态颜色#define Button_Back_Color_Gray GRAY//按钮的灰背景色状态颜色#define Button_Start_X 10//一般按钮在控制面板的第一个按钮的左边位置#define Button_Start_Y 5//一般按钮在控制面板的高度位置#define Button_Between 10//一般按钮的间距//-------------------------------------------------------------#define Button_Pannel_Width 50//把手按钮的宽度#define Button_Pannel_High 25//把手按钮的高度#define Button_Pannel_Borad_Color GRAY//把手按钮的边框颜色#define Button_Pannel_Back_Color WHITE//把手按钮的背景色#define Button_Pannel_Borad_Width 2//把手按钮的边框宽度#define Button_Pannel_Start_X 5//把手按钮在根窗口的第一个按钮的左边位置#define Button_Pannel_Start_Y 207//把手按钮在根窗口的高度位置#define Button_Pannel_Between 10////把手按钮的间距#define SET (0)#define SAVE (1)#define NONE (0)#define LINE (1)#define ROUNTD (2)#define STOP (0)#define START (1)#define ARRIVED (2)#define Real_x(a) (a)#define Real_y(b) (200-b)#define STEP_LENTGTH (0.031416)#define FORWARD (1)#define BACKWARD (0)#define LEFT_FORWARD (0xfc)#define LEFT_BACKWARD (0xf8)#define RIGHT_FORWARD (0xf3)#define RIGHT_BACKWARD (0xf2)#define ALL_FORWARD (0xff)#define ALL_BACKWARD (0xfa)#define ALL_DOWN (0xf0)#define LF_RB (0xfe)#define LB_RF (0xfb)#define DELAY_TIME (100)/********************************************************************************    Struct  Define Section*******************************************************************************//********************************************************************************    Prototype Declare Section*******************************************************************************/void  CM_gvGoTo(int X_Y_pos);void delay();/********************************************************************************    Global Variable Declare Section*******************************************************************************/static GR_WINDOW_ID WIN_Root;static GR_WINDOW_ID WIN_Screen;static GR_WINDOW_ID WIN_Control;static GR_WINDOW_ID WIN_Massage;static GR_WINDOW_ID WIN_Status;static GR_WINDOW_ID WIN_But_Pass;static GR_WINDOW_ID WIN_But_SetPass;static GR_WINDOW_ID WIN_But_Start;static GR_WINDOW_ID WIN_But_Stop;static GR_WINDOW_ID WIN_But_Line;static GR_WINDOW_ID WIN_But_Round;static GR_GC_ID Gid_MainWin;static GR_GC_ID Gid_WangGe;static GR_GC_ID Gid_ButtonDown;static GR_GC_ID Gid_Button;static GR_GC_ID Gid_Guiji;static GR_GC_ID Gid_CurrentSite;static GR_GC_ID Gid_Message;static GR_GC_ID Gid_ButtonName;static GR_GC_ID Gid_ButtonDownName;static GR_GC_ID Gid_Green_Green;static GR_GC_ID Gid_Red_Red;static GR_GC_ID Gid_Yellow_Yellow;static GR_GC_ID Gid_Black_Green;static GR_GC_ID Gid_Black_Red;static GR_GC_ID Gid_Black_Yellow;static GR_FONT_ID Gid_Font;GR_EVENT Event;//装载事件的结构unsigned short Mark_SetButStatus=0;//"设置"按钮状态unsigned short Mark_DrawButStatus=0;//画图状态标志unsigned short Mark_DrawButStaPause=0;//画图状态标志unsigned short Mark_OBStatus=0;int X_sit = -1;//存储鼠标点int Y_sit = -1;int Current_x = 0;//物体所在的坐标int Current_y = 0;char arry_x[8];char arry_y[8];int numberOfPoint=0;int X_Y_pos;struct QU_linkQueue_st astQueue;//队列结构体/********************************************************************************    File Static Variable Define Section*******************************************************************************//********************************************************************************    Function Define Section*******************************************************************************/void initDraw(){    //为显示轨迹窗口分配上下文    Gid_MainWin=GrNewGC();    GrSetGCForeground(Gid_MainWin,WHITE);    GrSetGCBackground(Gid_MainWin,WHITE);    /******************************************************/    //为显示窗口网格分配上下文    Gid_WangGe=GrNewGC();    GrSetGCForeground(Gid_WangGe,GRAY);    GrSetGCBackground(Gid_WangGe,GRAY);    /******************************************************/    //为按下的按钮分配上下文    Gid_ButtonDown=GrNewGC();    GrSetGCForeground(Gid_ButtonDown,GRAY);    GrSetGCBackground(Gid_ButtonDown,GRAY);    /******************************************************/    //为正常的按钮分配上下文    Gid_Button=GrNewGC();    GrSetGCForeground(Gid_Button,WHITE);    GrSetGCBackground(Gid_Button,WHITE);    /******************************************************/    //为轨迹分配上下文    Gid_Guiji=GrNewGC();    GrSetGCForeground(Gid_Guiji,GREEN);    GrSetGCBackground(Gid_Guiji,BLACK);    /******************************************************/    //为物体当前所处位置分配上下文    Gid_CurrentSite=GrNewGC();    GrSetGCForeground(Gid_CurrentSite,RED);    GrSetGCBackground(Gid_CurrentSite,BLACK);    /******************************************************/    //为坐标值显示分配上下文    Gid_Message=GrNewGC();    GrSetGCForeground(Gid_Message,GREEN);    GrSetGCBackground(Gid_Message,WHITE);    /******************************************************/    //为按钮名字分配上下文    Gid_ButtonName=GrNewGC();    GrSetGCForeground(Gid_ButtonName,BLACK);    GrSetGCBackground(Gid_ButtonName,WHITE);    /******************************************************/    //为按下按钮名字分配上下文    Gid_ButtonDownName=GrNewGC();    GrSetGCForeground(Gid_ButtonDownName,BLACK);    GrSetGCBackground(Gid_ButtonDownName,GRAY);    /******************************************************/    Gid_Green_Green=GrNewGC();    GrSetGCForeground(Gid_Green_Green,GREEN);    GrSetGCBackground(Gid_Green_Green,GREEN);    /******************************************************/    Gid_Red_Red=GrNewGC();    GrSetGCForeground(Gid_Red_Red,RED);    GrSetGCBackground(Gid_Red_Red,RED);    /******************************************************/    Gid_Yellow_Yellow=GrNewGC();    GrSetGCForeground(Gid_Yellow_Yellow,YELLOW);    GrSetGCBackground(Gid_Yellow_Yellow,YELLOW);    /******************************************************/    Gid_Black_Green=GrNewGC();    GrSetGCForeground(Gid_Black_Green,YELLOW);    GrSetGCBackground(Gid_Black_Green,GREEN);    /******************************************************/    Gid_Black_Red=GrNewGC();    GrSetGCForeground(Gid_Black_Red,WHITE);    GrSetGCBackground(Gid_Black_Red,RED);    /******************************************************/    Gid_Black_Yellow=GrNewGC();    GrSetGCForeground(Gid_Black_Yellow,RED);    GrSetGCBackground(Gid_Black_Yellow,YELLOW);    /******************************************************/    //创建字体    Gid_Font=GrCreateFont("HZKFONT",0,NULL);    GrSetFontSize(Gid_Font,16);    GrSetFontRotation(Gid_Font, 330);    GrSetFontAttr(Gid_Font, GR_TFKERNING | GR_TFANTIALIAS, 0);    /******************************************************/    //设置各上下文字体    GrSetGCFont(Gid_MainWin, Gid_Font);    GrSetGCFont(Gid_WangGe, Gid_Font);    GrSetGCFont(Gid_ButtonDown, Gid_Font);    GrSetGCFont(Gid_Button, Gid_Font);    GrSetGCFont(Gid_Guiji, Gid_Font);    GrSetGCFont(Gid_CurrentSite, Gid_Font);    GrSetGCFont(Gid_Message, Gid_Font);    GrSetGCFont(Gid_ButtonName, Gid_Font);    GrSetGCFont(Gid_ButtonDownName, Gid_Font);}int * CM_giDrawWindows(){    int i;    float X_cha;    float Y_cha;    float Cos;    float Sin;    float The_jiaodu;    float R_long;    if(GrOpen()<0)//连接图形服务器,失败返回-1    {        printf("Nano-X Server Error!\n");        printf("Please make sure your Nano-X Server is running,then retry!\n");        exit(-1);//非正常退出    }    initDraw();    //绘制各窗口    WIN_Root=GrNewWindow(GR_ROOT_WINDOW_ID,0,0,320,240,0,BLACK,WHITE);//绘制根窗口    GrMapWindow(WIN_Root);//显示根窗口    WIN_Screen=GrNewWindow(WIN_Root,80,0,161,201,1,WHITE,GRAY);//绘制波形显示窗口    GrMapWindow(WIN_Screen);//显示波形显示窗口    GrPoint(WIN_Screen,Gid_Red_Red,Real_x(Current_x),Real_y(Current_y));        WIN_Massage=GrNewWindow(WIN_Root,245,20,68,40,2,WHITE,GRAY);//坐标显示窗口    GrMapWindow(WIN_Massage);    GrFillRect(WIN_Massage,Gid_Button,0,0,40,20);//画填充矩形为按钮    GrText(WIN_Massage,Gid_Message,4,18,"X:",-1,GR_TFASCII);    GrText(WIN_Massage,Gid_Message,4,38,"Y:",-1,GR_TFASCII);        WIN_Status=GrNewWindow(WIN_Root,10,20,50,25,2,WHITE,GRAY);//状态显示窗口    GrMapWindow(WIN_Status);    GrFillRect(WIN_Status,Gid_Yellow_Yellow,0,0,50,25);//画填充矩形为按钮    GrText(WIN_Status,Gid_Black_Yellow,10,18,"停止",-1,GR_TFASCII);        /*在这里加入画网格的程序*/        WIN_Control=GrNewWindow(WIN_Root,0,200,320,40,2,RED,GRAY);//绘制控制面板窗口//x0,y240,320*40    GrMapWindow(WIN_Control);//显示控制面板窗口       //绘制路径设置按钮	WIN_But_SetPass=GrNewWindow(WIN_Control,Button_Start_X,Button_Start_Y,Button_Width,Button_High,Button_Borad_Width,Button_Back_Color_White,Button_Borad_Color);      	GrMapWindow(WIN_But_SetPass);    GrText(WIN_But_SetPass,Gid_ButtonName,9,18,"设定",-1,GR_TFASCII);	//绘制路径设置引发的子按钮		//画线   	WIN_But_Line=GrNewWindow(WIN_Control,Button_Start_X+1*(Button_Width+Button_Between),Button_Start_Y,Button_Width,Button_High,Button_Borad_Width,Button_Back_Color_White,Button_Borad_Color);//画线	//画圆	WIN_But_Round=GrNewWindow(WIN_Control,Button_Start_X+2*(Button_Width+Button_Between),Button_Start_Y,Button_Width,Button_High,Button_Borad_Width,Button_Back_Color_White,Button_Borad_Color);//画圆	//绘制开始/暂停按钮    WIN_But_Start=GrNewWindow(WIN_Control,Button_Start_X+1*(Button_Width+Button_Between),Button_Start_Y,Button_Width,Button_High,Button_Borad_Width,Button_Back_Color_White,Button_Borad_Color);    GrMapWindow(WIN_But_Start);    GrText(WIN_But_Start,Gid_ButtonName,9,18,"开始",-1,GR_TFASCII);    //绘制停止按钮    WIN_But_Stop=GrNewWindow(WIN_Control,Button_Start_X+2*(Button_Width+Button_Between),Button_Start_Y,Button_Width,Button_High,Button_Borad_Width,Button_Back_Color_White,Button_Borad_Color);    GrMapWindow(WIN_But_Stop);    GrText(WIN_But_Stop,Gid_ButtonName,9,18,"停止",-1,GR_TFASCII);        GrFillRect(WIN_But_Stop,Gid_ButtonDown,0,0,Button_Width,Button_High);//画填充矩形为按钮    GrText(WIN_But_Stop,Gid_ButtonDownName,9,18,"停止",-1,GR_TFASCII);    //绘制循迹按钮    WIN_But_Pass=GrNewWindow(WIN_Control,Button_Start_X+3*(Button_Width+Button_Between),Button_Start_Y,Button_Width,Button_High,Button_Borad_Width,Button_Back_Color_White,Button_Borad_Color);    GrMapWindow(WIN_But_Pass);    GrText(WIN_But_Pass,Gid_ButtonName,9,18,"循迹",-1,GR_TFASCII);    //结束面板的绘制	    /*****************************************************************/    //为个窗口(按钮)选择事件    //控制面板    GrSelectEvents(WIN_But_SetPass,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_UP | GR_EVENT_MASK_BUTTON_DOWN);    GrSelectEvents(WIN_But_Start,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_UP | GR_EVENT_MASK_BUTTON_DOWN);    GrSelectEvents(WIN_But_Stop,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_UP | GR_EVENT_MASK_BUTTON_DOWN);    GrSelectEvents(WIN_But_Pass,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_UP | GR_EVENT_MASK_BUTTON_DOWN);     //轨迹设置面板    GrSelectEvents(WIN_But_Line,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_UP | GR_EVENT_MASK_BUTTON_DOWN);    GrSelectEvents(WIN_But_Round,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_UP | GR_EVENT_MASK_BUTTON_DOWN);    //画图区    GrSelectEvents(WIN_Screen,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_DOWN | GR_EVENT_MASK_MOUSE_POSITION);    //-------------------------------------------------------------------------------------------------------------------------    //pthread_mutex_lock(&lock);//锁住互斥锁    //创建时钟    //timerId=GrCreateTimer(WIN_Screen,100,GR_TRUE);    //开始捕获事件的循环    while(1)    {       GrGetNextEventTimeout(&Event,30);//获取下一个事件       if(Event.type == GR_EVENT_TYPE_BUTTON_DOWN)//控制面板各个按钮的按下事件            {		        if(Event.button.wid==WIN_But_SetPass)		        {		            if(Mark_SetButStatus == SAVE)		            {		                GrFillRect(WIN_But_SetPass,Gid_ButtonDown,0,0,Button_Width,Button_High);//画填充矩形为按钮		                GrText(WIN_But_SetPass,Gid_ButtonDownName,9,18,"保存",-1,GR_TFASCII);		            }		            if(Mark_SetButStatus == SET)		            {		                GrFillRect(WIN_But_SetPass,Gid_ButtonDown,0,0,Button_Width,Button_High);//画填充矩形为按钮		                GrText(WIN_But_SetPass,Gid_ButtonDownName,9,18,"设定",-1,GR_TFASCII);		            }		        }		        if(Event.button.wid==WIN_But_Pass)		        {		            GrFillRect(WIN_But_Pass,Gid_ButtonDown,0,0,Button_Width,Button_High);//画填充矩形为按钮		            GrText(WIN_But_Pass,Gid_ButtonDownName,9,18,"循迹",-1,GR_TFASCII);		        }		        if(Event.button.wid==WIN_But_Start)		        {		            GrFillRect(WIN_But_Start,Gid_ButtonDown,0,0,Button_Width,Button_High);//画填充矩形为按钮		            GrText(WIN_But_Start,Gid_ButtonDownName,9,18,"开始",-1,GR_TFASCII);		        }		        if(Event.button.wid==WIN_But_Stop)		        {		            GrFillRect(WIN_But_Stop,Gid_ButtonDown,0,0,Button_Width,Button_High);//画填充矩形为按钮		            GrText(WIN_But_Stop,Gid_ButtonDownName,9,18,"停止",-1,GR_TFASCII);			    }		        if(Event.button.wid==WIN_But_Line)		        {		            GrFillRect(WIN_But_Line,Gid_ButtonDown,0,0,Button_Width,Button_High);//画填充矩形为按钮		            GrText(WIN_But_Line,Gid_ButtonDownName,9,18,"画线",-1,GR_TFASCII);		        }		        if(Event.button.wid==WIN_But_Round)		        {		            GrFillRect(WIN_But_Round,Gid_ButtonDown,0,0,Button_Width,Button_High);//画填充矩形为按钮		            GrText(WIN_But_Round,Gid_ButtonDownName,9,18,"画圆",-1,GR_TFASCII);		        }		         if(Event.button.wid==WIN_Screen)		        {		            if(Mark_DrawButStatus == LINE)		            {		                arry_x[0]='X';			            arry_x[1]=':';			            arry_x[2]=((Event.button.x)/2)/100+'0';			            arry_x[3]=(((Event.button.x)/2)%100)/10+'0';			            arry_x[4]=((Event.button.x)/2)%10+'0';			            arry_x[5]='C';                        arry_x[6]='M';			            arry_x[7]='\0';			    			            arry_y[0]='Y';			            arry_y[1]=':';			            arry_y[2]=((200-Event.button.y)/2)/100+'0';

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -