Connect OSD as display to other devices

Fortunate community of this OSD owners are growing and growing, including FPV flyers but not only, even some universities and high schools for experimental use and other projects adaptations(even as satellite component) as well as some home designs .

So I have many questions similar to like that :

I like to use OSD in other use or with other project :

on combat plane (with graphics and sign only to aim enemy) ,

on boat ,

on U-boat ,

on RC-car ,

on real car with recording ,

on bicycle ,

on motorbike as parameter monitor ,

on my Video monitoring system cooperate with PC ,

on my personal Videos information stamp ,

on Video as frames counter (whatever that menas) ,

on my own top secret project , so can not tell you about ,

etc. etc.

It is possible to use OSD as slave unit displaying navigation data delivered by master unit .

In fact is possible to use OSD as display, and show on screen everything we can imagine and can be showed using font table .

All data are send to OSD by the RX line of hardware UART port . In this mode, OSD do NOT use GPS connected, as hardware UART port is occupied by "master" unit delivering data to OSD .

Master unit can be any microcontroller device or your whatever project or even PC(USB cable), delivering data to OSD by RX line .

All transmission data are buffered so in fact OSD do not loose even one character .

------------------------------------

To better understand how OSD display characters and fonts please read below .

To be possible custom screen configuration , need of understanding how it is work .

Screen is divided on net where the fonts/letters are wrote . The grid is 30x16 in PAL mode and 30x12 in NTSC mode .

Grid looks like that:

So when we made configuration we just tell to program where on the screen we want place first character(or graphic) of our information - up left corner is coordinates X,Y (1,1) , bottom right corner is X ,Y (30,16) - remember that NTSC mode Y must be no more than 12 .

How do we know what mode are currently in use ? - we will see in OSD init logo .

Now for those programmers who want to display anything using OSD connected to other device .

Data information delivered to OSD, display at location X,Y looks like that :

[Leading character][Text message][Ending character][ending space]

"ending space" is displayed always after complete message, it is character erasing any previous content, it gives transparency to place when is displayed.

When we need to display only text then we set Leading character and Ending character as 0 - so they are not displayed at all - even as transparency. When Leading and Ending characters are set as empty space but address other than zero (0), then transparent space will be displayed at that location.

When we need to display only graphical symbol(sprite, font) we set text as empty space ("").

This is exactly how is working this function in OSD.

Another advantage of this system when we define most significant bit of X coordinate(X as byte) for 1 then we choose small fonts for text message display (only capital letters in font table) - when is 0 then default big letters are displayed from characters table (capital and small letters) .

ex. in C

X |= (1<<7) ; // set 7 bit for small characters

X &= ~(1<<7) ; //reset 7 bit for big characters

in other word to show small fonts we do X=X+128 :)

Default font table is named 1_60, is programmed to every OSD unit and looks like that: