wiki:Docs/Prog/Manual/ApplicationLibraries/lib825ev/Weight

Version 15 (modified by Don Wilson, 4 years ago) ( diff )

--

Weighing Functions

Minimal Weight Indicator Sample Program

This is an example of a very simple weight indicator program to display the gross weight. "Zero" and "Quit" buttons are provided. This is a minimal program for demonstration purposes. An application to be used in a production environment should have additional code to display scale status such as "Motion" and blank weight display on over capacity or weight error.

Screen image of simple_ind program

simple_ind.h:

#ifndef SIMPLE_IND_H_
#define SIMPLE_IND_H_

EVENT(MainScreenShow);
EVENT(Zero);
EVENT(Quit);

BACKGROUND_EVENT(Comm);

MNBD_EVENT(MultiRcv);
EVENT(Exit);



#endif /* SIMPLE_IND_H_ */

simple_ind.cpp:

#include "cardinal825.h"

#include "simple_ind.h"

int main()
{
	InitLCD();

	SetCurColor(COLOR_ATTENTION);
	DisplayText(0, 0, "Simple Indicator Example");

	ReadTouchCal();
	OpenBeeper();
	OpenTouch();

	MnBdStartup();

	MnBdSetEvent(MNBD_REQ_REP_MULTI, MnBdEventMultiRcv);
        
	SetBackgroundEvent(BackgroundEventComm);

	if(StartRepeatMulti(100) != OK)
	{
		DisplayText(0, FONT_HEIGHT, "Error starting repeat multi");
		return 0;
	}

	FORM_INIT(Main, EventMainScreenShow, NULL, NULL, NULL, nFormFlgNone);

	FORM_ADD_BUTTON(Main, Exit, 0, FONT_HEIGHT * 12, " Exit ", 'X', EventExit, FORM_BUTTON_INVERT);
	FORM_ADD_BUTTON(Main, Zero,    0,   120,  "Zero",  'Z', EventZero,  FORM_BUTTON_OUTLINE);
	FORM_ADD_BUTTON(Main, Quit,    0,   200,  "Quit",  'Q', EventQuit,  FORM_BUTTON_OUTLINE);

	FORM_SHOW(Main);
	FORM_RUN(Main);
	FORM_HIDE(Main);

        MnBdClearCommEvent();

	StopRepeatMulti();
	SetBackgroundEvent(NULL);

	MnBdShutdown();

	return 0;
}

EVENT(MainScreenShow)
{
	ClearLCD();
	SetCurColor(COLOR_ATTENTION);
	DisplayText(0, 0, "Simple Weight Indicator");

	ResetPrevGrossWt();
	return 0;
}

EVENT(Exit)
{
	return 1; // return non-zero to exit form
}

MNBD_EVENT(MultiRcv)
{
	int n;
	for(n = 1; n <= GetNumScales(); n++)
	{
		if(IsGrossWtChanged(n))
		{
			DisplayText(0, (FONT_HEIGHT * n) + FONT_HEIGHT, GetChangedGrossWt(n));
		}
	}
	return 0;
}

BACKGROUND_EVENT(Comm)
{
	// This gets called every few milliseconds or so. MnBdRead must be called to process any messages received from
        // from the mainboard. MnBdRead will call event MultiRcv that we registered previously when scale and DIO status status is 
        // received.

	int n;
	// in case we have more I/O cards than scales change this
	for(n = 0; n <= GetNumScales(); n++)
	{
		// 0 = MNBD_DEV, 1 .. Scales and I/O cards
		MnBdRead(n);
	}

	return 0;
}

EVENT(Zero)
{
	ZeroScale(1);
	return 0;
}

EVENT(Quit)
{
	// Return non-zero to exit the form
	return 1;
}

Attachments (1)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.