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

📄 mytemp.c

📁 myTemp is used to connect PalmOS PDAs to Dallas Microlan(tm) Devices. It currently supports DS1820
💻 C
字号:
#include <PalmOS.h>#include "com.h"#include "mytemp.h"#include "mytempRsc.h"#include "temp.h"#include "log.h"#include "alarm.h"#include "viewport.h"UInt32 TempLogIntervalls[] = kTempLogIntervalls;static Boolean StartApplication(launchFlags) {	Err 		err;	UInt32		ftrRef;		gLogIntervallIndex = 2;	LogOpenOrCreateDatabase(&logDb, dmModeReadOnly);		if (FtrGet(kMyTempID, myTempFtrTempState, &ftrRef) == ftrErrNoSuchFeature)	{/*		SetAlarm(TimGetSeconds() + TempLogIntervalls[gLogIntervallIndex], 0);*/		err = FtrSet(kMyTempID, myTempFtrTempErr, 0);		err = FtrSet(kMyTempID, myTempFtrTempSerialRefNum, 0);		err= FtrSet(kMyTempID, myTempFtrTempState, OpenSerialState);/*	init to 10s*/				err = FtrSet(kMyTempID, myTempFtrTempLogIntervallIndex, gLogIntervallIndex);		err = FtrSet(kMyTempID, myTempFtrTempErrorCounter, 0);	}		FtrGet(kMyTempID, myTempFtrTempLogIntervallIndex, &gLogIntervallIndex);	gLogCheck = GetAlarm() == 0 ? false : true;	FtrGet(kMyTempID, myTempFtrFlags, &ftrRef);	gLogSound = ftrRef & myTempAlarmSndClick;		return false;}static void StopApplication(void) {	LogCloseDatabase(logDb);	FrmCloseAllForms();}static Err RomVersionCompatible (UInt32 requiredVersion, UInt16 launchFlags) {	UInt32 romVersion;/* 	See if we're on in minimum required version of the ROM or later.*/        	FtrGet(sysFtrCreator, sysFtrNumROMVersion, &romVersion);	if (romVersion < requiredVersion) {		if ((launchFlags & (sysAppLaunchFlagNewGlobals | sysAppLaunchFlagUIApp)) \			== (sysAppLaunchFlagNewGlobals | sysAppLaunchFlagUIApp)) {			FrmAlert (RomIncompatibleAlert);/* 	Pilot 1.0 will continuously relaunch this app unless we switch to 	another safe one. */			if (romVersion < 0x02000000) {				AppLaunchWithCommand(sysFileCDefaultApp, sysAppLaunchCmdNormalLaunch, NULL);			}		}		return (sysErrRomIncompatible);	}	return (0);}static void MainFormInit(void) {	ViewPortData	vp;	LogEntryT	minEntry;	LogEntryT	maxEntry;	FormPtr	frm = FrmGetActiveForm();	ControlPtr	logCheck = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, LogCheck));	ControlPtr	sndCheck = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, LogSnd));	ControlPtr	intervallPop = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, LogIntervallPop));	ListPtr		intervallList = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, LogIntervallList));	Char*		intervallText;			FrmDrawForm(frm);		LstSetSelection(intervallList, gLogIntervallIndex);	intervallText = LstGetSelectionText(intervallList, gLogIntervallIndex);	CtlSetLabel(intervallPop, intervallText);		CtlSetValue(logCheck, gLogCheck);	CtlSetValue(sndCheck, gLogSound);	LogGetMinMaxEntry(logDb, &minEntry, &maxEntry);	vp.frm = frm;	vp.gadgetID = TempGraphGadget;	vp.maxX = maxEntry.time;	vp.maxY = maxEntry.temp;	vp.offsetX = minEntry.time;	vp.offsetY = minEntry.temp;	ViewportInit(vp);	ViewportDraw();}static Boolean UpdateDisplay() {	Boolean	error = false;	LogEntryT	minEntry;	LogEntryT	maxEntry;	ViewPortData	vp;	FormPtr frm = FrmGetActiveForm();	LogEntryT	entry;	Char		buf[8];	LogGetMinMaxEntry(logDb, &minEntry, &maxEntry);	vp.frm = frm;	vp.gadgetID = TempGraphGadget;	vp.maxX = maxEntry.time;	vp.maxY = maxEntry.temp;	vp.offsetX = minEntry.time;	vp.offsetY = minEntry.temp;		ViewportInit(vp);	ViewportDraw();	LogGetLastEntry(logDb, &entry);	StrIToA (buf, entry.temp);		SetFieldTextFromString(TempField, buf);			return error;}static Boolean MainFormHandleEvent(EventPtr event) {	Boolean		handled = false;	UInt32		ftrRef;		switch (event->eType) {	case frmOpenEvent:		MainFormInit();		handled = true;		break;	case popSelectEvent:		gLogIntervallIndex = event->data.popSelect.selection;		FtrSet(kMyTempID, myTempFtrTempLogIntervallIndex, gLogIntervallIndex);		SetAlarm(TimGetSeconds(), 0);		break;	case ctlSelectEvent:		switch (event->data.ctlSelect.controlID){			case LogCheck:				FtrGet(kMyTempID, myTempFtrFlags, &ftrRef);				if (event->data.ctlSelect.on)				{					FtrSet(kMyTempID, myTempFtrFlags, ftrRef | myTempAlarmLog);					SetAlarm(TimGetSeconds(), 0);					gLogCheck = true;				} else {					if (AlarmStopLogging() == tempNoError)					{						if (ftrRef & myTempAlarmLog)						{							ftrRef ^= myTempAlarmLog;						}						FtrSet(kMyTempID, myTempFtrFlags, ftrRef);						SetAlarm(0, 0);						gLogCheck = false;					}				}				handled = true;				break;			case LogSnd:				FtrGet(kMyTempID, myTempFtrFlags, &ftrRef);				if (event->data.ctlSelect.on)				{					FtrSet(kMyTempID, myTempFtrFlags, ftrRef | myTempAlarmSndClick);				} else {					if (ftrRef & myTempAlarmSndClick)						ftrRef ^= myTempAlarmSndClick;					FtrSet(kMyTempID, myTempFtrFlags, ftrRef);				}				handled = true;				break;			case ClearButton:				LogClearLog();				handled = true;				break;		}		break;	default:		break;	}	return handled;}static Boolean ApplicationHandleEvent(EventPtr event) {	FormPtr frm;	UInt16	formId;	Boolean	handled = false;		if (event->eType == frmLoadEvent) {		formId = event->data.frmLoad.formID;		frm = FrmInitForm(formId);		FrmSetActiveForm(frm);				switch (formId) {		case MainForm:			FrmSetEventHandler(frm, MainFormHandleEvent);			break;		}		handled=true;	}	return handled;}static void EventLoop(void) {	EventType	event;	UInt16		error;	do {		EvtGetEvent(&event, evtWaitForever);		if (!SysHandleEvent(&event))			if (!MenuHandleEvent(0, &event, &error))				if (!ApplicationHandleEvent(&event))					FrmDispatchEvent(&event);	} while (event.eType != appStopEvent);}UInt32 PilotMain(UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags) {	Err	err;	Boolean appIsActive = launchFlags & sysAppLaunchFlagSubCall;		err = RomVersionCompatible (version20, launchFlags);	if (err) return err;		if (cmd == sysAppLaunchCmdNormalLaunch) 	{		if (!StartApplication(launchFlags)) 		{			FrmGotoForm(MainForm);			EventLoop();			StopApplication();		}	} else if (cmd == sysAppLaunchCmdAlarmTriggered) {		AlarmTriggered((SysAlarmTriggeredParamType*) cmdPBP);		if (appIsActive)			UpdateDisplay();	} else if (cmd == sysAppLaunchCmdDisplayAlarm) {		DisplayAlarm((SysDisplayAlarmParamType*) cmdPBP);	} else if (cmd == sysAppLaunchCmdNotify) {		CommandNotify((SysNotifyParamType*) cmdPBP);	}		return err;}

⌨️ 快捷键说明

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