Skip to main content
Krautermann
Senior
September 10, 2023
Solved

Is it possible to display continuous data on scroll wheel container?

  • September 10, 2023
  • 2 replies
  • 2269 views

I have been trying to display continuous data on Scroll wheel container for the past 2 months but have been very unsuccessful. Could someone help or tell me if it's even possible to do that?? The example in the documentation does not help in that regard.

I would like to display a counter that goes from 0 to 255 on a scroll wheel but what I get is the exact same value on each row of the scroll updating in real time. What I want is each counter value displayed on each row, e.g

Krautermann_0-1694341254885.png

This is my customContainer setup:

void CustomContainer2::RX_UART(char* data)
{
	TX_BufferArea.setWideTextAction(touchgfx::WIDE_TEXT_WORDWRAP);
	sprintf(USART_Array, "%d", data);
	Unicode::strncpy(TX_BufferAreaBuffer, USART_Array, TX_BUFFERAREA_SIZE);
	TX_BufferArea.invalidate();
}

This is displayed via the View:

void Screen2View::scrollWheel2UpdateItem(CustomContainer2& item, int16_t itemIndex)
{
	item.RX_UART((char*)CounterTimer); //I feel itemIndex should be somehow added to this line here but I don't know how to do that codewise...Please help!!

	int indexOfitemAtTopOfTheList = scrollWheel2.getSelectedItem();
	scrollWheel2.animateToItem(indexOfitemAtTopOfTheList + 1);
}

In the main:

volatile uint8_t CounterTimer = 0;

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == TIM2)
	{
		CounterTimer++; //Incremented every 1 second
 }
}
 
This topic has been closed for replies.
Best answer by Osman SOYKURT

Hello @Krautermann ,

I created a small example you can get inspiration from. I started from the "Scroll Wheel and List example" from TouchGFX Designer and I removed the "List" part. Then I added a handleTickEvent for the counter and made the wheel animate each 60 ticks. You'll find my project in attachment. 

Hope it helps ;)

2 replies

Osman SOYKURT
Osman SOYKURTBest answer
ST Technical Moderator
September 10, 2023

Hello @Krautermann ,

I created a small example you can get inspiration from. I started from the "Scroll Wheel and List example" from TouchGFX Designer and I removed the "List" part. Then I added a handleTickEvent for the counter and made the wheel animate each 60 ticks. You'll find my project in attachment. 

Hope it helps ;)

ST Software Developer | TouchGFX
Krautermann
Senior
September 19, 2023

Solution provided accepted after several days of testing.

Although user needs to modify it according to his application. Here is my modified code if anyone is interested:

void Screen2View::handleTickEvent()
{
	if(tick%1==0)
	{
		snprintf(ActualBuffer, sizeof(ActualBuffer), "%s", (char*)currentBuffer);
		if (strcmp(ActualBuffer, PreviousBuffer)!=0)
		{
			snprintf(temporaryBuffer, sizeof(temporaryBuffer), "%s", (char*)currentBuffer);
			scrollWheel1.animateToItem(scrollWheel1.getSelectedItem()-1);
			flag2Scroll1 = 1;
			snprintf(PreviousBuffer, sizeof(PreviousBuffer), "%s", ActualBuffer);
		}

		int currentCounterTimer = CounterTimer;
		if (currentCounterTimer != previousCounterTimer)
		{
			flag2Scroll2 = 1;
			scrollWheel2.animateToItem(scrollWheel2.getSelectedItem()-1);
			previousCounterTimer = currentCounterTimer;
		}
	}
}

void Screen2View::scrollWheel1UpdateItem(CustomContainer1& item, int16_t itemIndex)
{
	if(flag2Scroll1==1)
	{
	item.RX_SPI((char*)temporaryBuffer);
	flag2Scroll1 = 0;
	}
}


void Screen2View::scrollWheel2UpdateItem(CustomContainer2& item, int16_t itemIndex)
{
	if(flag2Scroll2==1)
	{
	item.RX_UART((char*)TX_Buffer4);
	flag2Scroll2 = 0;
	}
}