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

📄 hello.bak

📁 PALM程序设计入门
💻 BAK
📖 第 1 页 / 共 5 页
字号:
#define False 0
#define True 1
#define FALSE 0
#define TRUE 1

#include <Pilot.h>
#include <SerialMgr.h>
#include <SysEvtMgr.h>

#include "hello.h"
#include "MCXfunc.h"

extern void CncSetup(void);
extern Word formsave(void);
extern Word formfield(void);

Boolean AbsFlag;

long BAUD;
unsigned short int XYZUOutValue;
long Xabs,Yabs,Zabs;

UInt gSerialRefNum;
char gSerialBuffer[900];  

int direction=1;      // 0,1,2,3 0-main,x-direction,y-direction,z-direction        
int xop=1,yop=1,zop=1;   // 1 or -1, positive or minus for x,y,z direction.
int speedx=0,speedy=0,speedz=0;   

#define CREATORID 'YUAN'
#define DBTYPE    'DATA'
#define DBNAME    "MyData-YUAN"           

DmOpenRef dbRef;
Boolean test=true;    /* if test=true, bypass the checking loop,
                         in normal operation, set it false. */

static FieldPtr SetFieldTextFromHandle(Word fieldID, Handle txtH)
{
    Handle          oldTxtH;
    FormPtr         frm=FrmGetActiveForm();
    FieldPtr        fldP;
    
    fldP =FrmGetObjectPtr(frm,FrmGetObjectIndex(frm,fieldID));
    ErrNonFatalDisplayIf(!fldP, "missing field");

    oldTxtH = FldGetTextHandle(fldP);

    FldSetTextHandle(fldP, txtH);
    FldDrawField(fldP);

    if (oldTxtH)
           MemHandleFree( (VoidHand) oldTxtH );

    return fldP;

}

static FieldPtr SetFieldTextFromStr(Word fieldID, CharPtr strP)
{
    Handle      txtH;

    txtH = (Handle) MemHandleNew(StrLen(strP)+1);
    if (!txtH)
       return NULL;

    StrCopy(MemHandleLock( (VoidHand) txtH),strP);

    MemHandleUnlock( (VoidHand) txtH);

    return SetFieldTextFromHandle(fieldID, txtH);
}

static void ClearFieldText(Word fieldID)
{
        SetFieldTextFromHandle(fieldID, NULL);
}

static void UpdateScrollbar (void)
{
    FormPtr      frm = FrmGetActiveForm();
    ScrollBarPtr scroll;
    FieldPtr     field;
    Word         currentPosition;
    Word         textHeight;
    Word         fieldHeight;
    Word         maxValue;

    field = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm,Field));
    FldGetScrollValues(field,&currentPosition,&textHeight,&fieldHeight);

    if (textHeight > fieldHeight)
    {
        maxValue=textHeight-fieldHeight;
        SndPlaySystemSound(sndInfo);
    }
    else if (currentPosition)
    {
        maxValue=currentPosition;
        SndPlaySystemSound(sndInfo);
    }
    else
    {
        SndPlaySystemSound(sndInfo);
        currentPosition=0;
        maxValue=1 ;  // if 0, no scrollbar
    }
 
    scroll=FrmGetObjectPtr(frm,FrmGetObjectIndex(frm,Scrollbar));

    SclSetScrollBar(scroll, currentPosition , 0, maxValue, fieldHeight-1);

}

static void ScrollLines(int numLinesToScroll, Boolean redraw)
{
    FormPtr       frm=FrmGetActiveForm();
    FieldPtr      field;
    CharPtr       s;

    field = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm,Field));
    if (numLinesToScroll < 0)
          FldScrollField(field, -numLinesToScroll, up);
    else
          FldScrollField(field, numLinesToScroll, down);

    if ((FldGetNumberOfBlankLines(field) && numLinesToScroll < 0 ) || redraw)
    {
       UpdateScrollbar();
    }    
}

static void PageScroll(DirectionType direction)
{
    FormPtr       frm=FrmGetActiveForm();
    FieldPtr      field;

    field=FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, Field));
    if (FldScrollable(field, direction))
    {
       int linesToScroll = FldGetVisibleLines(field)-1;
       if (direction==up)
          linesToScroll = -linesToScroll;
       ScrollLines(linesToScroll,true);
    }
}

static Boolean HelloFormEventHandler(EventPtr event)
{
	Boolean handled = false;
 
	switch (event->eType)
   {

      case ctlSelectEvent:

           if (event->data.ctlSelect.controlID==Buttonmain)
           {
              FormPtr frm = FrmGetActiveForm();
 
              FrmHideObject(frm,FrmGetObjectIndex(frm,Labelop));
              FrmCopyLabel(frm, Labelop, " ");
              FrmShowObject(frm,FrmGetObjectIndex(frm,Labelop));

              FrmCopyLabel(frm, Labelxyz, "main");
              direction =0;
           }
           if (event->data.ctlSelect.controlID==Buttonx)
           {
              FormPtr frm = FrmGetActiveForm();  
              ScrollBarPtr  scroll;
              Char s[5];
              FrmHideObject(frm,FrmGetObjectIndex(frm,Labelxyz));
              FrmCopyLabel(frm, Labelxyz, "X");
              FrmShowObject(frm,FrmGetObjectIndex(frm,Labelxyz));

              scroll = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm,MyScrollbar));
              SclSetScrollBar(scroll, speedx, 0, 1000, 10);
              FrmHideObject(frm,FrmGetObjectIndex(frm,Labelbar));
              FrmCopyLabel(frm, Labelbar, StrIToA(s,speedx));
              FrmShowObject(frm,FrmGetObjectIndex(frm,Labelbar));

              direction=1;
              if (xop == 1)
              {
                 FrmCopyLabel(frm, Labelop, "+");
              }
              else
              {
                 FrmCopyLabel(frm, Labelop, "-");
              }
           }
           if (event->data.ctlSelect.controlID==Buttony)
           {
              FormPtr frm = FrmGetActiveForm();
              ScrollBarPtr  scroll;
              Char s[5];
              FrmHideObject(frm,FrmGetObjectIndex(frm,Labelxyz));
              FrmCopyLabel(frm, Labelxyz, "Y");
              FrmShowObject(frm,FrmGetObjectIndex(frm,Labelxyz));
              
              scroll = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm,MyScrollbar));
              SclSetScrollBar(scroll, speedy, 0, 1000, 10);
              FrmHideObject(frm,FrmGetObjectIndex(frm,Labelbar));
              FrmCopyLabel(frm, Labelbar, StrIToA(s,speedy));
              FrmShowObject(frm,FrmGetObjectIndex(frm,Labelbar));

              direction=2;
              if (yop == 1)
              {
                 FrmCopyLabel(frm, Labelop, "+");
              }
              else
              {
                 FrmCopyLabel(frm, Labelop, "-");
              }
  
           }
           if (event->data.ctlSelect.controlID==Buttonz)
           {
              FormPtr frm = FrmGetActiveForm();
              ScrollBarPtr  scroll;
              Char s[5];
              FrmHideObject(frm,FrmGetObjectIndex(frm,Labelxyz));
              FrmCopyLabel(frm, Labelxyz, "Z");
              FrmShowObject(frm,FrmGetObjectIndex(frm,Labelxyz));
              
              scroll = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm,MyScrollbar));
              SclSetScrollBar(scroll, speedz, 0, 1000, 10);
              FrmHideObject(frm,FrmGetObjectIndex(frm,Labelbar));
              FrmCopyLabel(frm, Labelbar, StrIToA(s,speedz));
              FrmShowObject(frm,FrmGetObjectIndex(frm,Labelbar));

              direction=3;
              if (zop == 1)
              {
                 FrmCopyLabel(frm, Labelop, "+");
              }
              else
              {
                 FrmCopyLabel(frm, Labelop, "-");
              }
  
           }
           if (event->data.ctlSelect.controlID==Buttonplus)
           {
              FormPtr frm = FrmGetActiveForm();
              char str[10];

              if (direction == 1)
              {
                 xop=1;
                 XMovR(xop*speedx);
                 while(!Idle());

                 RdXYZP(&Xabs,&Yabs,&Zabs);              
                 StrPrintF(str,"x=%ld",Xabs);

                 FrmHideObject(frm,FrmGetObjectIndex(frm,Labelx));
                 FrmCopyLabel(frm, Labelx, str);
                 FrmShowObject(frm,FrmGetObjectIndex(frm,Labelx));
              }
              if (direction == 2)
              {
                 yop=1;
                 YMovR(yop*speedy);
                 while(!Idle());

                 RdXYZP(&Xabs,&Yabs,&Zabs);              
                 StrPrintF(str,"y=%ld",Yabs);

                 FrmHideObject(frm,FrmGetObjectIndex(frm,Labely));
                 FrmCopyLabel(frm, Labely, str);
                 FrmShowObject(frm,FrmGetObjectIndex(frm,Labely));
              }
              if (direction == 3)
              {
                 zop=1;
                 ZMovR(zop*speedz);
                 while(!Idle()); 

                 RdXYZP(&Xabs,&Yabs,&Zabs);              
                 StrPrintF(str,"z=%ld",Zabs);

                 FrmHideObject(frm,FrmGetObjectIndex(frm,Labelz));
                 FrmCopyLabel(frm, Labelz, str);
                 FrmShowObject(frm,FrmGetObjectIndex(frm,Labelz));
              }
 
              if (direction !=0)
              {
                 FrmCopyLabel(frm, Labelop, "+");
              }
           }
           if (event->data.ctlSelect.controlID==Buttonminus)
           {
              FormPtr frm = FrmGetActiveForm();
              char str[10];
 
              if (direction == 1)
              {
                 xop=-1;
                 XMovR(xop*speedx);
                 while(!Idle());

                 RdXYZP(&Xabs,&Yabs,&Zabs);              
                 StrPrintF(str,"x=%ld",Xabs);

                 FrmHideObject(frm,FrmGetObjectIndex(frm,Labelx));
                 FrmCopyLabel(frm, Labelx, str);
                 FrmShowObject(frm,FrmGetObjectIndex(frm,Labelx));
              }
              if (direction == 2)
              {
                 yop=-1;

                 YMovR(yop*speedy);
                 while(!Idle());

                 RdXYZP(&Xabs,&Yabs,&Zabs);              
                 StrPrintF(str,"y=%ld",Yabs);

                 FrmHideObject(frm,FrmGetObjectIndex(frm,Labely));
                 FrmCopyLabel(frm, Labely, str);
                 FrmShowObject(frm,FrmGetObjectIndex(frm,Labely));
              }
              if (direction == 3)
              {
                 zop=-1;
                 ZMovR(zop*speedz);
                 
					  while(!Idle());

                 RdXYZP(&Xabs,&Yabs,&Zabs);              
                 StrPrintF(str,"z=%ld",Zabs);

                 FrmHideObject(frm,FrmGetObjectIndex(frm,Labelz));
                 FrmCopyLabel(frm, Labelz, str);
                 FrmShowObject(frm,FrmGetObjectIndex(frm,Labelz));
              }
 
              if (direction !=0)
              {
                 FrmCopyLabel(frm, Labelop, "-");
              }
           }
           if (event->data.ctlSelect.controlID==Buttonhome)
           {
              FormPtr frm = FrmGetActiveForm();
              char str[10];

              HomePara(200,100, 0, 0);              
              ZHome();
              while (!IsZHome());
              XHome();
              YHome();
              while (!IsXHome());
				  while (!IsYHome());
              
              CncSetup();

              RdXYZP(&Xabs,&Yabs,&Zabs);              
              StrPrintF(str,"x=%ld",Xabs);

              FrmHideObject(frm,FrmGetObjectIndex(frm,Labelx));
              FrmCopyLabel(frm, Labelx, str);
              FrmShowObject(frm,FrmGetObjectIndex(frm,Labelx));
              
              StrPrintF(str,"y=%ld",Yabs);

              FrmHideObject(frm,FrmGetObjectIndex(frm,Labely));
              FrmCopyLabel(frm, Labely, str);
              FrmShowObject(frm,FrmGetObjectIndex(frm,Labely));
              
              StrPrintF(str,"z=%ld",Zabs);

              FrmHideObject(frm,FrmGetObjectIndex(frm,Labelz));
              FrmCopyLabel(frm, Labelz, str);
              FrmShowObject(frm,FrmGetObjectIndex(frm,Labelz));
           }
           if (event->data.ctlSelect.controlID==Buttonsave)
           {
              Word hitbutton;

              hitbutton=formsave();

              if (hitbutton == Buttonsavexyz)
              {
                 Err err =DmCreateDatabase(0, DBNAME, CREATORID, DBTYPE, false);

                 if ( err == 0)
                 {
                    UInt  mode = dmModeReadWrite;
                    UInt at=0; // 0:beginning , end:dmMaxRecordIndex

                    long *mem,value;
                    VoidHand h;

                    dbRef = DmOpenDatabaseByTypeCreator(DBTYPE,CREATORID,mode);
         
                    value=1;

                    h=DmNewRecord(dbRef, &at, sizeof(value));
               
                    mem=(long *)MemHandleLock(h);

                    DmWrite(mem,0,&value,sizeof(value));

                    MemHandleUnlock(h);
                    DmReleaseRecord(dbRef, at, true); // clears busy bit
                     
                    RdXYZP(&Xabs,&Yabs,&Zabs);              

                    if (test==true)
                    {
                       Xabs=8;
                       Yabs=88;
                       Zabs=888;
                    }

                    at=1;
                    h=DmNewRecord(dbRef, &at, sizeof(Xabs));
                    mem=(long *)MemHandleLock(h);
                    DmWrite(mem,0,&Xabs,sizeof(Xabs));
                    MemHandleUnlock(h);
                    DmReleaseRecord(dbRef, at, true); // clears busy bit
                    
                    at=1;
                    h=DmNewRecord(dbRef, &at, sizeof(Yabs));
                    mem=(long *)MemHandleLock(h);
                    DmWrite(mem,0,&Yabs,sizeof(Yabs));
                    MemHandleUnlock(h);
                    DmReleaseRecord(dbRef, at, true); // clears busy bit                    
 
                    at=1;
                    h=DmNewRecord(dbRef, &at, sizeof(Zabs));
                    mem=(long *)MemHandleLock(h);
                    DmWrite(mem,0,&Zabs,sizeof(Zabs));
                    MemHandleUnlock(h);
                    DmReleaseRecord(dbRef, at, true); // clears busy bit

                    DmCloseDatabase(dbRef);
                 }

                 if ( err == dmErrAlreadyExists)
                 {
                    UInt  mode = dmModeReadWrite;
                    UInt at=0; // 0:beginning , end:dmMaxRecordIndex

                    long *mem,value;
                    VoidHand h;

                    dbRef = DmOpenDatabaseByTypeCreator(DBTYPE,CREATORID,mode);
         
                    RdXYZP(&Xabs,&Yabs,&Zabs);              

                    if (test==true)
                    {
                       Xabs=9;
                       Yabs=99;
                       Zabs=999;
                    }

                    h=DmQueryRecord(dbRef,at);
                    mem=(long *)MemHandleLock(h);
                    value=*mem;
                    MemHandleUnlock(h);
                    
                    value++;
                    h=DmGetRecord(dbRef, at);
                    mem=(long *)MemHandleLock(h);
                    DmWrite(mem,0,&value,sizeof(value));
                    MemHandleUnlock(h);
                    DmReleaseRecord(dbRef, at, true); 
                    
                    at=1;
                    h=DmNewRecord(dbRef, &at, sizeof(Xabs));
                    mem=(long *)MemHandleLock(h);
                    DmWrite(mem,0,&Xabs,sizeof(Xabs));
                    MemHandleUnlock(h);
                    DmReleaseRecord(dbRef, at, true); // clears busy bit
                    
                    at=1;
                    h=DmNewRecord(dbRef, &at, sizeof(Yabs));
                    mem=(long *)MemHandleLock(h);
                    DmWrite(mem,0,&Yabs,sizeof(Yabs));
                    MemHandleUnlock(h);
                    DmReleaseRecord(dbRef, at, true); // clears busy bit                    
 
                    at=1;
                    h=DmNewRecord(dbRef, &at, sizeof(Zabs));
                    mem=(long *)MemHandleLock(h);
                    DmWrite(mem,0,&Zabs,sizeof(Zabs));
                    MemHandleUnlock(h);
                    DmReleaseRecord(dbRef, at, true); // clears busy bit

                    DmCloseDatabase(dbRef);
                 }
              }

              
              if (hitbutton == Buttonshow)
              {
                 Word hitbutton1;
                 hitbutton1=formfield();
              }
              if (hitbutton == Buttondelete)
              {
                 LocalID id=DmFindDatabase(0, DBNAME);  // card, name

                 DmDeleteDatabase(0, id);
              } 
           }

           handled=true;
           break;

      case sclExitEvent:
           
           {
              FormPtr frm = FrmGetActiveForm();
              CharPtr s;
              FrmHideObject(frm,FrmGetObjectIndex(frm,Labelbar));
              if (direction == 1)
              {

⌨️ 快捷键说明

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