📄 hello.bak
字号:
#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,¤tPosition,&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 + -