Hello,
The LedDigits are flickering even if the number is constant and not received by serin. what is the problem?
"
#platform "uLCD-32PTU"
#inherit "VisualConst.inc"
#inherit "NegDigitsConst.inc"
#inherit "ledDigitsDisplay-ve.inc"
#inherit "VisualConst.inc"
//#inherit "spectrumConst.inc"
func main()
var numx, ch;
var combuf[10] ;
var bar, frame ;
var i, x, y, state, n, Wbs1, Wbs3to5, WHITE, BLACK, FUCHSIA ;
putstr("Mounting...\n");
if (!(file_Mount()))
while(!(file_Mount()))
putstr("Drive not mounted...");
pause(200);
gfx_Cls();
pause(200);
wend
endif
hndl := file_LoadImageControl("NEGDIG~1.dat", "NEGDIG~1.gci", 1);
Wbs1 := 0 ; // up, set to non zero (specifically 2) when down
snd_BufSize(3);
snd_Volume(127);
file_PlayWAV("bl16k.wav");
while(snd_Playing());
gfx_Set(SCREEN_MODE,LANDSCAPE_R);
com_SetBaud(COM0, 960); //9600 / 10
//gfx_Set(CONTRAST,5) ;
//txt_Set(TEXT_OPACITY, OPAQUE);
//gfx_TransparentColour(0x0020);
//gfx_Transparency(ON);
// Label1 1.0 generated 05/11/2017 20:42:07
//txt_FGcolour(WHITE) ;
//txt_BGcolour(BLACK) ;
gfx_MoveTo(248, 80) ;
putstr("Fan") ;
// Label3 1.0 generated 05/11/2017 19:13:09
//txt_FGcolour(WHITE) ;
//txt_BGcolour(BLACK) ;
gfx_MoveTo(64, 72) ;
putstr("Counts ppm") ;
txt_Opacity(OPAQUE) ;
// Label2 1.0 generated 04/11/2017 01:31:54
//txt_FGcolour(WHITE) ;
//txt_BGcolour(BLACK) ;
gfx_MoveTo(244, 164) ;
putstr ("Reset") ;
pin_Set(OUTPUT, AUDIO_ENABLE);
pin_HI(AUDIO_ENABLE);
// Winbutton1 generated 20/12/2011 3:55:28 PM
// img_SetWord(hndl, iWinbutton1, IMAGE_FLAGS, (img_GetWord(hndl, iWinbutton1, IMAGE_FLAGS) | I_STAYONTOP) & ~I_TOUCH_DISABLE); // set to enable touch, only need to do this once
//serout('Test') ; // SERIAL TEST
to(COM0); print("serial input test:\n");
//trout('\n');OM1); print("serial input test:\n");
com_Init(combuf, 10, 0);
img_SetWord(hndl, iWinbutton1, IMAGE_FLAGS, (img_GetWord(hndl, iWinbutton1, IMAGE_FLAGS) | I_STAYONTOP) & ~I_TOUCH_DISABLE); // set to enable touch, only need to do this once
//img_SetWord(hndl, iWinbutton1, IMAGE_INDEX, 0); // where state is 0 for up and 1 for down
img_Show(hndl,iWinbutton1) ;
img_ClearAttributes(hndl, i4Dbutton1, I_TOUCH_DISABLE); // set to enable touch, only need to do this once
img_SetWord(hndl, i4Dbutton1, IMAGE_INDEX, 0); // where state is 0 for up and 1 for down
img_Show(hndl,i4Dbutton1) ;
img_ClearAttributes(hndl, i4Dbutton2, I_TOUCH_DISABLE); // set to enable touch, only need to do this once
img_SetWord(hndl, i4Dbutton2, IMAGE_INDEX, 0); // where state is 0 for up and 1 for down
img_Show(hndl,i4Dbutton2) ;
// Leddigits1 1.0 generated 18/12/2014 3:37:40 PM
img_Show(hndl, iLeddigits1); // show all digits at 0, only do this once
// Customdigits1 1.1 generated 18/12/2014 3:37:43 PM
img_Show(hndl, iCustomdigits1); // show all digits at 0, only do this once
// Image1 1.0 generated 02/11/2017 12:59:13
img_Show(hndl,iImage1) ;
touch_Set(TOUCH_ENABLE); // enable the touch screen
repeat
txt_FGcolour(WHITE) ;
//ch := serin();
if(com_Count() > 1)
ch := (serin() << 8 ) + serin();
endif
state := touch_Get(TOUCH_STATUS); // get touchscreen status
n := img_Touched(hndl,-1) ;
//if (ch != -1)
gfx_MoveTo(0,0);
//print( [CHR] ch ); // if a key was received from PC, print its ascii value
numx := 999; //RAND() % 999 ;
// Customdigits1 1.1 generated 04/11/2017 01:09:05
img_Show(hndl, iCustomdigits1); // show all digits at 0, only do this once
ledDigitsDisplay(numx, iiCustomdigits1, 132, 4, 1, 9, 1) ;
// Leddigits1 1.0 generated 04/11/2017 01:09:28
img_Show(hndl, iLeddigits1); // show all digits at 0, only do this once
ledDigitsDisplay(numx, iLeddigits1+1, 37, 4, 1, 35, 0) ;
//-----------------------------------------------------------------------------------------
if(state == TOUCH_RELEASED) // if there's a release
if (n == i4Dbutton1)
if (Wbs1) Wbs1 := 0 ; else Wbs1 := 2 ; // toggle status
img_SetWord(hndl, i4Dbutton1, IMAGE_INDEX, Wbs1); // where state is 0 for up, 1 for down, 2 for 'on' up and 3 for 'on' down
img_Show(hndl,i4Dbutton1) ;
print([DEC3ZB] 'a') ;
// ASCII number written to the com port, or
//serout(ch >> 8) ;
serout('a') ;
snd_BufSize(30);
snd_Volume(30);
file_PlayWAV("bleep1.wav");
while(snd_Playing());
endif
if (n == i4Dbutton2)
if (Wbs1) Wbs1 := 0 ; else Wbs1 := 2 ; // toggle status
img_SetWord(hndl, i4Dbutton2, IMAGE_INDEX, Wbs1); // where state is 0 for up, 1 for down, 2 for 'on' up and 3 for 'on' down
img_Show(hndl,i4Dbutton2) ;
print([DEC3ZB] 'f') ;
// ASCII number written to the com port, or
//serout(ch >> 8) ;
serout('f') ;
snd_BufSize(30);
snd_Volume(30);
file_PlayWAV("beep.wav");
while(snd_Playing());
endif
//-----------------------------------------------------------------------------------------
if(state == TOUCH_MOVING) // if it's moving
x := touch_Get(TOUCH_GETX);
y := touch_Get(TOUCH_GETY);
endif
state := touch_Get(TOUCH_STATUS); // get touchscreen status
n := img_Touched(hndl,-1) ;
//-----------------------------------------------------------------------------------------
if(state == TOUCH_PRESSED) // if there's a press
x := touch_Get(TOUCH_GETX);
y := touch_Get(TOUCH_GETY);
if (n == i4Dbutton1)
img_SetWord(hndl, i4Dbutton1, IMAGE_INDEX, Wbs1+1); // where state is 0 for up, 1 for down, 2 for 'on' up and 3 for 'on' down
img_Show(hndl,i4Dbutton1);
print([DEC3ZB] 's') ;
// ASCII number written to the com port, or
//serout(ch >> 8) ;
serout('s') ;
endif
endif
endif
forever
endfunc
"
The LedDigits are flickering even if the number is constant and not received by serin. what is the problem?
"
#platform "uLCD-32PTU"
#inherit "VisualConst.inc"
#inherit "NegDigitsConst.inc"
#inherit "ledDigitsDisplay-ve.inc"
#inherit "VisualConst.inc"
//#inherit "spectrumConst.inc"
func main()
var numx, ch;
var combuf[10] ;
var bar, frame ;
var i, x, y, state, n, Wbs1, Wbs3to5, WHITE, BLACK, FUCHSIA ;
putstr("Mounting...\n");
if (!(file_Mount()))
while(!(file_Mount()))
putstr("Drive not mounted...");
pause(200);
gfx_Cls();
pause(200);
wend
endif
hndl := file_LoadImageControl("NEGDIG~1.dat", "NEGDIG~1.gci", 1);
Wbs1 := 0 ; // up, set to non zero (specifically 2) when down
snd_BufSize(3);
snd_Volume(127);
file_PlayWAV("bl16k.wav");
while(snd_Playing());
gfx_Set(SCREEN_MODE,LANDSCAPE_R);
com_SetBaud(COM0, 960); //9600 / 10
//gfx_Set(CONTRAST,5) ;
//txt_Set(TEXT_OPACITY, OPAQUE);
//gfx_TransparentColour(0x0020);
//gfx_Transparency(ON);
// Label1 1.0 generated 05/11/2017 20:42:07
//txt_FGcolour(WHITE) ;
//txt_BGcolour(BLACK) ;
gfx_MoveTo(248, 80) ;
putstr("Fan") ;
// Label3 1.0 generated 05/11/2017 19:13:09
//txt_FGcolour(WHITE) ;
//txt_BGcolour(BLACK) ;
gfx_MoveTo(64, 72) ;
putstr("Counts ppm") ;
txt_Opacity(OPAQUE) ;
// Label2 1.0 generated 04/11/2017 01:31:54
//txt_FGcolour(WHITE) ;
//txt_BGcolour(BLACK) ;
gfx_MoveTo(244, 164) ;
putstr ("Reset") ;
pin_Set(OUTPUT, AUDIO_ENABLE);
pin_HI(AUDIO_ENABLE);
// Winbutton1 generated 20/12/2011 3:55:28 PM
// img_SetWord(hndl, iWinbutton1, IMAGE_FLAGS, (img_GetWord(hndl, iWinbutton1, IMAGE_FLAGS) | I_STAYONTOP) & ~I_TOUCH_DISABLE); // set to enable touch, only need to do this once
//serout('Test') ; // SERIAL TEST
to(COM0); print("serial input test:\n");
//trout('\n');OM1); print("serial input test:\n");
com_Init(combuf, 10, 0);
img_SetWord(hndl, iWinbutton1, IMAGE_FLAGS, (img_GetWord(hndl, iWinbutton1, IMAGE_FLAGS) | I_STAYONTOP) & ~I_TOUCH_DISABLE); // set to enable touch, only need to do this once
//img_SetWord(hndl, iWinbutton1, IMAGE_INDEX, 0); // where state is 0 for up and 1 for down
img_Show(hndl,iWinbutton1) ;
img_ClearAttributes(hndl, i4Dbutton1, I_TOUCH_DISABLE); // set to enable touch, only need to do this once
img_SetWord(hndl, i4Dbutton1, IMAGE_INDEX, 0); // where state is 0 for up and 1 for down
img_Show(hndl,i4Dbutton1) ;
img_ClearAttributes(hndl, i4Dbutton2, I_TOUCH_DISABLE); // set to enable touch, only need to do this once
img_SetWord(hndl, i4Dbutton2, IMAGE_INDEX, 0); // where state is 0 for up and 1 for down
img_Show(hndl,i4Dbutton2) ;
// Leddigits1 1.0 generated 18/12/2014 3:37:40 PM
img_Show(hndl, iLeddigits1); // show all digits at 0, only do this once
// Customdigits1 1.1 generated 18/12/2014 3:37:43 PM
img_Show(hndl, iCustomdigits1); // show all digits at 0, only do this once
// Image1 1.0 generated 02/11/2017 12:59:13
img_Show(hndl,iImage1) ;
touch_Set(TOUCH_ENABLE); // enable the touch screen
repeat
txt_FGcolour(WHITE) ;
//ch := serin();
if(com_Count() > 1)
ch := (serin() << 8 ) + serin();
endif
state := touch_Get(TOUCH_STATUS); // get touchscreen status
n := img_Touched(hndl,-1) ;
//if (ch != -1)
gfx_MoveTo(0,0);
//print( [CHR] ch ); // if a key was received from PC, print its ascii value
numx := 999; //RAND() % 999 ;
// Customdigits1 1.1 generated 04/11/2017 01:09:05
img_Show(hndl, iCustomdigits1); // show all digits at 0, only do this once
ledDigitsDisplay(numx, iiCustomdigits1, 132, 4, 1, 9, 1) ;
// Leddigits1 1.0 generated 04/11/2017 01:09:28
img_Show(hndl, iLeddigits1); // show all digits at 0, only do this once
ledDigitsDisplay(numx, iLeddigits1+1, 37, 4, 1, 35, 0) ;
//-----------------------------------------------------------------------------------------
if(state == TOUCH_RELEASED) // if there's a release
if (n == i4Dbutton1)
if (Wbs1) Wbs1 := 0 ; else Wbs1 := 2 ; // toggle status
img_SetWord(hndl, i4Dbutton1, IMAGE_INDEX, Wbs1); // where state is 0 for up, 1 for down, 2 for 'on' up and 3 for 'on' down
img_Show(hndl,i4Dbutton1) ;
print([DEC3ZB] 'a') ;
// ASCII number written to the com port, or
//serout(ch >> 8) ;
serout('a') ;
snd_BufSize(30);
snd_Volume(30);
file_PlayWAV("bleep1.wav");
while(snd_Playing());
endif
if (n == i4Dbutton2)
if (Wbs1) Wbs1 := 0 ; else Wbs1 := 2 ; // toggle status
img_SetWord(hndl, i4Dbutton2, IMAGE_INDEX, Wbs1); // where state is 0 for up, 1 for down, 2 for 'on' up and 3 for 'on' down
img_Show(hndl,i4Dbutton2) ;
print([DEC3ZB] 'f') ;
// ASCII number written to the com port, or
//serout(ch >> 8) ;
serout('f') ;
snd_BufSize(30);
snd_Volume(30);
file_PlayWAV("beep.wav");
while(snd_Playing());
endif
//-----------------------------------------------------------------------------------------
if(state == TOUCH_MOVING) // if it's moving
x := touch_Get(TOUCH_GETX);
y := touch_Get(TOUCH_GETY);
endif
state := touch_Get(TOUCH_STATUS); // get touchscreen status
n := img_Touched(hndl,-1) ;
//-----------------------------------------------------------------------------------------
if(state == TOUCH_PRESSED) // if there's a press
x := touch_Get(TOUCH_GETX);
y := touch_Get(TOUCH_GETY);
if (n == i4Dbutton1)
img_SetWord(hndl, i4Dbutton1, IMAGE_INDEX, Wbs1+1); // where state is 0 for up, 1 for down, 2 for 'on' up and 3 for 'on' down
img_Show(hndl,i4Dbutton1);
print([DEC3ZB] 's') ;
// ASCII number written to the com port, or
//serout(ch >> 8) ;
serout('s') ;
endif
endif
endif
forever
endfunc
"
Comment