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

📄 totaldraw.c

📁 在博创的44B0开发板上做的一个电机控制的程序
💻 C
字号:
/******************************************************************
//Microwindows绘图演示程序.total 2006.3.29
*******************************************************************/
short k=1;
#define MWINCLUDECOLORS
#define mykey MWKEY_KP0
#define INPUTBYTE 20 
#include <stdio.h>
#include "nano-X.h"
#include "mwtypes.h"
#include "setmotor.c"
#include "pthread.h"
#include "stdlib.h"
static GR_WINDOW_ID mainwindow;
static GR_WINDOW_ID exitbutton;
static GR_WINDOW_ID drawbutton;
static GR_WINDOW_ID inputtext;
static GR_EVENT event;
static GR_GC_ID gc;
static GR_GC_ID gc2;
int num=0;
void * pth;
void * mortorrun(){
  setmotor(num,0);  
}

int main(int ac,char **av){
  int i=2,j=0;
  short  key=0,flag=1;
  pthread_t th_a;
  if (GrOpen()<0){
    printf("Can't open graphics!\n");
    return 0;
  }
  mainwindow=GrNewWindow(GR_ROOT_WINDOW_ID,10,10,300,200,3,GREEN,BLUE);
  gc=GrNewGC();
  gc2=GrNewGC();
  GrMapWindow(mainwindow);
  GrSetGCForeground(gc2,RED);
  
  drawbutton=GrNewWindow(mainwindow,220,180,30,20,2,YELLOW,BLUE);
  GrMapWindow(drawbutton);
  GrSetGCForeground(gc,GREEN);
  GrSetGCBackground(gc,YELLOW);
  GrText(drawbutton,gc,2,15,"ENTER",-1,GR_TFASCII);
  GrSelectEvents(drawbutton,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_DOWN);
  
  exitbutton=GrNewWindow(mainwindow,260,180,30,20,2,YELLOW,BLUE);
  GrMapWindow(exitbutton);
  GrSetGCForeground(gc,GREEN);
  GrSetGCBackground(gc,YELLOW);
  GrText(exitbutton,gc,2,15,"EXIT",-1,GR_TFASCII);
  GrSelectEvents(exitbutton,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_DOWN);

  inputtext=GrNewWindow(mainwindow,100,60,100,20,2,YELLOW,BLUE);
  GrMapWindow(inputtext);
  GrSetGCForeground(gc,GREEN);
  GrSetGCBackground(gc,YELLOW);
  GrSelectEvents(inputtext,GR_EVENT_MASK_EXPOSURE|GR_EVENT_MASK_KEY_DOWN);
  
  for(;;){
    GrCheckNextEvent(&event);
    switch(event.type){
      case GR_EVENT_TYPE_BUTTON_DOWN:
        if(event.button.wid==exitbutton){
          if(k!=0){
            k=0;
            pthread_join(th_a,&pth);
            GrClearArea(mainwindow,20,20,200,100,1);
          }
          else{
          //  exit_MotorPort();
            GrClose();
            return 0;
          }

        }
        if(event.button.wid==drawbutton){
        //  GrSetGCForeground(gc,YELLOW);
          key=num%100;
          GrClearArea(mainwindow,20,key,200,100,1);
          GrFillRect(mainwindow,gc2,120,20,key,20);
         // setmotor(num,0);
          k=1;
         pthread_create(&th_a,NULL,mortorrun,0);
       //  pthread_join(th_a,&pth);          
        }
        break;
      case GR_EVENT_TYPE_KEY_DOWN:
        i+=6;
        j=i;
        if(i>INPUTBYTE){
          i-=6;
        }
        switch(event.keystroke.ch){ 
          case mykey+0:
            GrText(inputtext,gc,i,15,"0",-1,GR_TFASCII);
            break;
          case mykey+1:
            GrText(inputtext,gc,i,15,"1",-1,GR_TFASCII);
            break;
          case mykey+2:
            GrText(inputtext,gc,i,15,"2",-1,GR_TFASCII);
            break;
          case mykey+3:
            GrText(inputtext,gc,i,15,"3",-1,GR_TFASCII);
            break;
          case mykey+4:
            GrText(inputtext,gc,i,15,"4",-1,GR_TFASCII);
            break;
          case mykey+5:
            GrText(inputtext,gc,i,15,"5",-1,GR_TFASCII);
            break;
          case mykey+6:
            GrText(inputtext,gc,i,15,"6",-1,GR_TFASCII);
            break;
          case mykey+7:
            GrText(inputtext,gc,i,15,"7",-1,GR_TFASCII);
            break;
          case mykey+8:
            GrText(inputtext,gc,i,15,"8",-1,GR_TFASCII);
            break;
          case mykey+9:
            GrText(inputtext,gc,i,15,"9",-1,GR_TFASCII);
            break;
          case MWKEY_KP_PERIOD:
            if(i>=8){
              if(j<INPUTBYTE+6){
                i-=6;
              }
                num-=num%10;
                num/=10;
                GrClearArea(inputtext,i,5,6,15,0); 
              if(i>=8){
                i-=6;
              }
            }
            break;
          case MWKEY_KP_ENTER:
            GrText(inputtext,gc,2,15,"E",-1,GR_TFASCII);
            break;
          case MWKEY_KP_MINUS:
            if(flag==-1){
              GrText(inputtext,gc,2,15,"+",-1,GR_TFASCII);
            }
            if(flag==1){
              GrClearArea(inputtext,2,5,6,15,0);
              GrText(inputtext,gc,2,15,"-",-1,GR_TFASCII);
            }
            num=-num;
            flag=-flag;
            if(j<=INPUTBYTE){
              i-=6;
            }
            break;
          case MWKEY_KP_PLUS:
            GrText(inputtext,gc,2,15,"+",-1,GR_TFASCII);
            if(num<=0){
              num=-num;
              flag=1; 
            }
            if(j<=INPUTBYTE){ 
              i-=6;
            }
        }
        if((event.keystroke.ch>=mykey)&&(event.keystroke.ch<=mykey+9)){
            if(j<=INPUTBYTE)
              num=num*10+(event.keystroke.ch-mykey);
            else{
              num -= num%10;
              num += (event.keystroke.ch-mykey);
            }
        }
        break;
    }
  }

  GrClose();
  return 0;
}

⌨️ 快捷键说明

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