Bug i GETKEY (8151) - Printable Version +- HP Forums (https://www.hpmuseum.org/forum) +-- Forum: HP Calculators (and very old HP Computers) (/forum-3.html) +--- Forum: HP Prime (/forum-5.html) +--- Thread: Bug i GETKEY (8151) (/thread-4242.html) |
Bug i GETKEY (8151) - slawek39 - 06-27-2015 08:31 AM The following program should complete when you press any key. However, when during the operation touches 3 times the display a program can be terminated only by pressing the On. EXPORT TESTGETKEY() BEGIN LOCAL i,a; AAngle▶a; 2▶AAngle; REPEAT RECT_P(); ARC_P(G0,160,120,100); LINE_P(160,120,100*COS(i)+160,100*SIN(i)+120); i+5▶i; WAIT(.5) UNTIL GETKEY≥0; a▶AAngle END; RE: Bug i GETKEY (8151) - DrD - 06-27-2015 09:50 AM The "WAIT(.5)" command on line 11 is missing the ending semicolon, (posted program). Adding the semi, the program seems to terminate on any keypress, which is what, I think, you intended. Code:
RE: Bug i GETKEY (8151) - slawek39 - 06-27-2015 10:00 AM semicolon in line 11 is not needed RE: Bug i GETKEY (8151) - DrD - 06-27-2015 10:14 AM Well, then neither is the WAIT(.5) command, since it won't complete that command without it. Here is the revised program ... kinda cute!: Code:
RE: Bug i GETKEY (8151) - slawek39 - 06-27-2015 10:29 AM Please try 3 times to touch the screen while the program working and then a key RE: Bug i GETKEY (8151) - Thomas_Sch - 06-27-2015 10:59 AM (06-27-2015 10:00 AM)slawek39 Wrote: semicolon in line 11 is not neededWhy? The manual states on page 492: "Commands are separated by a semicolon ( ; ). " RE: Bug i GETKEY (8151) - DrD - 06-27-2015 11:05 AM (06-27-2015 10:29 AM)slawek39 Wrote: Please try 3 times to touch the screen while the program working and then a key OK, just to be clear: I was using the VC, not the HC. I didn't actually "touch" the screen ... only noticed the missing semi, and verified that the program would not exit on random key press without it, and that it does exit on random key press with the semi in place... My HC is not available right now, so perhaps you are right, and someone else may be able to help mitigate the issue. -Dale- RE: Bug i GETKEY (8151) - slawek39 - 06-27-2015 11:05 AM WAIT (.5) is the last command in the block REPEAT ... UNTIL so the semicolon is not needed RE: Bug i GETKEY (8151) - StephenG1CMZ - 10-12-2015 11:05 PM Tapping the screen three times on the Android, needs an ON with this code. RE: Bug i GETKEY (8151) - komame - 10-13-2015 12:28 PM It was discussed here: http://www.hpmuseum.org/forum/thread-4888.html RE: Bug i GETKEY (8151) - cyrille de brébisson - 10-14-2015 05:41 AM Hello, The root cause is the limited event stack of the Prime. Any event goes in the queue, Key presses, but also mouse messages. If you type on the screen 3 times, you have at least 9 messages in the queue: 3 times Down, Up and Click. Since nothing is consuming these messages, they stay there. Since the queue is 8 deep, any other messages are ignored (so, in fact the last click is not there). As a result, your key press never makes it into the queue and never triggers GetKey. The WAIT(-1) command does allow to get stuff from, and out of, the queue, but that is the only way at this point in time. Cyrille RE: Bug i GETKEY (8151) - hpfx - 10-14-2015 09:44 PM (10-14-2015 05:41 AM)cyrille de brébisson Wrote: The root cause is the limited event stack of the Prime.Hi, And why not two event queues ? one for keyboard, and another one for mouse events. WAIT(0) will consume key-queue events WAIT(-1) from key or mouse queue MOUSE() from mouse-queue that's the only way to avoid the queue to be fullfilled by event type not consumed that void pushing other event types. Increasing a unique queue is a workaround but not a good solution. RE: Bug i GETKEY (8151) - StephenG1CMZ - 10-17-2015 07:59 AM (10-14-2015 05:41 AM)cyrille de brébisson Wrote: Hello, This little program demonstrates a way of dealing with the mouse events. It might not be a perfect solution, but it certainly seems to improve the robustness of the code. Try tapping the screen 3 times with and without the mouse statement to see the difference. But if you need to keep checking the mouse, it would be better if the system could do that for you. Code:
|