Announcement

Collapse
No announcement yet.

Winbutton1 not pressed

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Winbutton1 not pressed

    Hello,

    I'm using the FANCYBUTTONS example in my code for the Winbutton1.

    In my code the Winbutton1 cannot be pressed, the button properties are the same and it always stuck on "No" status. can someone please look on this ?

    "
    #platform "uLCD-28PTU"

    #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;

    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

    // 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) ;

    // 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
    // Spectrum1 1.0 generated 02/11/2017 13:01:23
    img_Show(hndl,iSpectrum1) ; // show initial spectrum
    // Image1 1.0 generated 02/11/2017 12:59:13
    img_Show(hndl,iImage1) ;

    //touch_Set(TOUCH_ENABLE); // enable the touch screen - I tried also without REM

    repeat
    //ch := serin();
    if(com_Count() > 1)

    ch := (serin() << 8 ) + serin();
    endif

    bar := ABS(ch % 24) ; // 24
    frame := ABS(ch % 1001) ; // 101

    img_SetWord(hndl, iiSpectrum1, IMAGE_XPOS, 53 + bar * 9) ; // where bar is 0 to 23
    img_SetWord(hndl, iiSpectrum1, IMAGE_INDEX, frame) ; // where frame is 0 to 100 (for a displayed 0 to 100)
    img_Show(hndl,iiSpectrum1) ;

    //if (ch != -1)
    gfx_MoveTo(0,0);
    //print( [CHR] ch ); // if a key was received from PC, print its ascii value

    numx := ch; //RAND() % 999 ;

    ledDigitsDisplay(numx, iLeddigits1+1, 20, 4, 1, 30, 0) ;
    ledDigitsDisplay(numx, iiCustomdigits1, 156, 4, 1, 9, 1) ;

    //-----------------------------------------------------------------------------------------
    if(state == TOUCH_RELEASED) // if there's a release
    if (n == iWinbutton1)
    if (Wbs1) Wbs1 := 0 ; else Wbs1 := 2 ; // toggle status
    img_SetWord(hndl, iWinbutton1, IMAGE_INDEX, Wbs1); // where state is 0 for up, 1 for down, 2 for 'on' up and 3 for 'on' down
    img_Show(hndl,iWinbutton1) ;
    print([DEC3ZB] 'a') ;
    // ASCII number written to the com port, or
    //serout(ch >> 8) ;
    serout('a') ;
    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 == iWinbutton1)
    img_SetWord(hndl, iWinbutton1, 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,iWinbutton1);
    endif
    endif

    endif

    forever
    endfunc

    "

    Thank you

  • #2
    Hello,

    You need to add this line at the start of your repeat forever loop

    state = touch_Get(TOUCH_STATUS);

    and this

    n := img_Touched(hndl,-1) ;

    I hope this helps

    Best regards

    Paul

    Comment


    • #3
      Hello Paul,

      You right, now it is working. thanks a lot.

      Comment

      Working...
      X