Jump to content

Recommended Posts

Posted

Hi all,

I'd like to have some realtime messages (+ why not char animations) appear briefly on the screen, so that when they dissapear, the content that was initially displayed on the screen (overwritten by the message) gets back. So I had the idea to develop some kind of "generic" function that would do MIOS_LCD_CursorSet + MIOS_LCD_PrintCString + eventually MIOS_LCD_PrintBCD3 for instance if an int is also passed as a parameter, well you got the idea  ;)

In the meanwhile, this function could store a copy of what's been written on the screen (typically a screen dump), so that it can easily refresh original screen when I want to get rid properly of that realtime messages. The problem is it seems impossible to do this without the use of string functions + other C functions (like itoa to display the number).

Does any of you already worked on that subject ?

Posted

Hey why not  :D ;D but I could never understand the meaning of that function ...  ::)

Tried it a few times but could never get the written msg to dissapear ...  ???

+ what's the use of MessageStop() ?

Does that code has to be in a specific location within code lines ?

Thanks anyway I'll give it a try asap !

8)

Posted

Okay, I've tested the function a little deeper than the last time  ;)

As far as I can see, I've two remarks :

- You must have the entire LCD content written previously (I mean over every single location on the LCD), otherwise the chars generated with MessageStart( ) will not dissapear  ???

- If you try to deal with counters & cycles to have a nice animation (lets say I want to have an animated worm running on the screen  ;D (good old times)) I can't say for instance "MIOS_LCD_MessageStart(50);" for each char because it doesn't care about your counters : all the chars vanish at the same time ... (but perhaps have I done something wrong ?)

What's the use of MessageStop( ) ?

Thank you guys

Posted

Hi Olivier,

I just noticed that the description in the function overview is a bit misleading.

in principle it's very (very) simple:

You should call this code not from within the LCD_Tick() routine, but from somewhere else - though of course you can call it from LCD_Tick(), but the point is:

MIOS_LCD_Message_Start() does nothing but preventing MIOS_LCD_Tick() from being called for the given amount of time.

So the use of MessageStop() gets pretty clear; you can immediately abort the message if the delay is still active, so that Tick() is going to be called again. In both cases MIOS_LCD_Init() is called before continuing the Ticks.

As I said, very simple:

MIOS_LCD_MessageStart

C_DECLARATION void MIOS_LCD_MessageStart(unsigned char delay)

DESCRIPTION a replacement for MIOS_LCD_PrintMessage which allows to start a message without calling "MIOS_LCD_PrintString"

C_IN message delay in <delay>

C_OUT -

C_EXAMPLE

  // print message on LCD for 2 seconds

  MIOS_LCD_CursorSet(0x00 + 0);

  MIOS_LCD_PrintCString("Pot value: ");

  MIOS_LCD_PrintHex2(MIOS_AIN_Pin7bitGet(0));

  MIOS_LCD_MessageStart(255);

So, it would help you in the question you asked first, cause you don't need to care about what was previously on the screen.

By using the delay within a custom timer routine, I think there should also be nice (simple) animations possible. But remember that you have to use your own timer, 'cause StartMessage prevents the LCD_Tick() routine ;)

Cheers,

Michael

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...