hi all membres i want draw on the lcd of stm32f429Zit two point and after that i want draw a uniline between this two point i try with this code but i got only 1 point can anyone help me ?
void drawtwopoint() { TP_STATE* TP_State; int i=0; int xx[2],yy[2] ; while (1) { TP_State = IOE_TP_GetState(); if((!TP_State->TouchDetected) && ((TP_State->Y < 245) && (TP_State->Y >= 3))) {TP_State = IOE_TP_GetState(); if((TP_State->X >= 237) || (TP_State->X < 3)) {} else { while (i!=2) { xx[i]= TP_State->X; yy[i] = TP_State->Y; LCD_DrawFullCircle(xx[i] ,yy[i], 6); i=i+1; } LCD_DrawUniLine(xx[0] ,yy[0],xx[1],yy[1]); } } } }
Does it matter if I can write the code, when it's your task? You ask for help with your shoelaces too?
i only ask u the code of this two step - then run a loop while you wait for touch no longer detected - use the new coordinate as second coordinate and draw
Why not buffer each touch as you get it. And then plot a line between the last and current points?
Please try to use whole words, you're not texting and there's not a per letter charge.
"Put your heart, mind, and soul into even your smallest acts. This is the secret of success."
Swami Sivananda
ok i ptut my mind and my eyes and my hair also this code work and i get two different point but i want get the uniline between the two point can u help me only in this step
int i=0; while(i!=2) { TP_State = IOE_TP_GetState(); if(TP_State->TouchDetected) { if((TP_State->X >= 237) || (TP_State->X < 3)) {} else { LCD_DrawFullCircle( TP_State->X, TP_State->Y ,6); i=i+1; } } if (!TP_State->TouchDetected) continue; }
So you still haven't figured out how you can use variables to store a coordinate pair while you wait for a second coordinate pair? So that when you get that second coordinate pair you now have access to two coordinate pairs and then have the ability to draw a line between (x0,y0) and (x1,y1)?
it is ok i will share the code to all membres
int i=0; int xx[2],yy[2] ; while(i!=2) { TP_State = IOE_TP_GetState(); if(TP_State->TouchDetected) { xx[i]=TP_State->X; yy[i]=TP_State->Y; if((TP_State->X >= 237) || (TP_State->X < 3)) {} else { LCD_DrawFullCircle( TP_State->X, TP_State->Y ,6); i=i+1; } } if (!TP_State->TouchDetected) continue; } LCD_DrawUniLine( xx[0],yy[0] ,xx[1],yy[1]);
int i=0; int xx[2],yy[2]; while (i!=2) { TP_State = IOE_TP_GetState(); if (TP_State->TouchDetected) { xx[i]=TP_State->X; yy[i]=TP_State->Y; if ((TP_State->X >= 237) || (TP_State->X < 3)) { } else { LCD_DrawFullCircle(TP_State->X, TP_State->Y ,6); i=i+1; } } if (!TP_State->TouchDetected) <=== what use is this for? continue; } LCD_DrawUniLine(xx[0],yy[0],xx[1],yy[1]);
Notice that the part with the continue doesn't do anything - remove the two lines and the while statement will still repeat.
And why do you have your "negated" logic where the if statement leads to a dummy empty block with the real code in the else block? Why check if x is too close to the border - why not instead if x is not too close to the border? Then the if block will do the job and no else part will be needed. If the goal is to test "should I draw", then it's obviously better to test for that, instead of testing for "should I not draw"...