Home AMX User Forum NetLinx Studio

Looking for LED Ticker Sign with Serial Input


Could anyone suggest a source for inexpensive LED "Ticker" signs with serial inputs?

I need a few do do some basic message display from a control system.



  • Options
    Joe HebertJoe Hebert Posts: 2,159
    Check out the BetaBrite

    Hi TurnipTruck,

    I?ve got just the ticket for you. It?s called the BetaBrite and you can pick them up at most Sam?s Clubs for about $160. It comes with an IR remote control, some messaging software, and a 25 ft. serial cable but the real power comes from the ability to control it yourself via the Alpha Sign Communications Protocol.

    The 123 page protocol document can be daunting at first glance and it took me several reads to get the hang of it but it?s not as bad as it looks. The feature set is incredible. There are quite a few special effects and animations built into the protocol and you can program your own custom animations also.

    One thing to note is that the sign will keep accurate time once the time is set unless it loses power, however, the sign will not change the date automatically. If you want to use the date function you?ll have to set the date each day.

    Here is a link to the BetaBrite and a link to the protocol.



    I bought my BetaBrite a couple of years ago and it?s one of the best $160 toys I?ve ever invested in. If you do decide to pick one of these puppies up, let me know and I?d be happy to post a few lines of code that will get you up and running.

    Hope this helps,
  • Options
    TurnipTruckTurnipTruck Posts: 1,485
    I will go buy one this afternoon. Any jump start that you could give on the protocol would be appreciated.
  • Options
    Joe HebertJoe Hebert Posts: 2,159
    Hi TurnipTruck.

    As promised, here is the code with a few examples on how to manipulate the BetaBrite. Just plug in the supplied cable directly into port 1 of an NI series serial port, no crossover or adapter is needed.

    This only scratches the surface but hopefully this will help you hit the ground running. The BetaBrite can hold multiple text files (messages) and you can schedule when you want them to run and what sequence to run in along with an assortment of other options.

    I use mine to display the current time and temp, daily trivia, today?s events (Jimmy is 16 today. Happy Birthday!), upcoming events (It?s a full moon next Monday. Beware!), stock quotes, and caller ID. I?m a geek, I know. What can I say? :)

    What type of application are you looking at for the ticker?
    dvBetaBrite		= 5001:1:0	//RS-232 1	BetaBrite	9600, N, 8, 1
    dvTP			= 10001:1:0	//touch panel 
    //refer to pages 10,11,80,87-89
    CHAR	cSync[5]	= {$00,$00,$00,$00,$00} //packet synchronization
    CHAR	cSOH		= {$01}			//start of header
    CHAR	cSignType	= 'Z'			//all sign types
    CHAR	cAddress[2]	= '00'			//broadcast to all addresses
    CHAR	cSTX		= {$02}			//start of text
    CHAR	cETX		= {$03}			//end of text
    CHAR	cEOT		= {$04}			//end of transmission
    CHAR	cModeCenter[2]	= {$1B,' '} 		//start of mode field, center text
    CHAR	cSetTime[]	= 'E '			//set time command code
    CHAR	cShowTime	= {$13}			//show time control code
    CHAR	cSlots[2]	= 'n9'			//slot machine animation
    CHAR	cCherryBomb[2]	= 'nZ'			//cherry bomb animation
    CHAR	cAutoMode	= 'o'			//let betabrite decide how to display
    CHAR	cScroll	= 't'			//compressed rotate mode
    CHAR	cCR		= {$0D}			//forces a line break between messages
    CHAR	cHeader[10]	//holds a standard header packet
    DEFINE_FUNCTION fnBetaBriteSetTime () {
       //set the current time on the BetaBrite
       //refer to page 21
       CHAR		cHours[2]
       CHAR 	cMinutes[2]
       cHours 	= FORMAT('%02d',TIME_TO_HOUR(TIME))
       cMinutes 	= FORMAT('%02d',TIME_TO_MINUTE(TIME))
       SEND_STRING dvBetaBrite, "cHeader,cSetTime,cHours,cMinutes,cEOT"
    cHeader	= "cSync,cSOH,cSignType,cAddress,cSTX"
    DATA_EVENT[dvBetaBrite] {
       ONLINE: {
          fnBetaBriteSetTime ()
    BUTTON_EVENT[dvTP,1] {
       PUSH: {
          fnBetaBriteSetTime ()     
    BUTTON_EVENT[dvTP,2] {
       PUSH: {
          //clear memory
          //refer to page 21 for memory allocation of text file storage slots
          SEND_STRING dvBetaBrite, "cHeader,'E$',cEOT"      
    BUTTON_EVENT[dvTP,3] {
       PUSH: {
          //just show the time
          SEND_STRING dvBetaBrite, "cHeader,'A0',cShowTime,cEOT"
    BUTTON_EVENT[dvTP,4] {
       PUSH: {
          //show the time and let's throw in a slot machine animation.
          //we will set this as a priority test file 'A0'
          //i use a priority text file to display caller id because
          //it stops all other running text files until the priority
          //text file is stopped.
          //refer to pages 18-21, 80, 88-89
          SEND_STRING dvBetaBrite, "cHeader,'A0',cShowTime,cModeCenter,cSlots,cEOT"
    BUTTON_EVENT[dvTP,5] {
       PUSH: {
          //another priority text file but with a couple of more lines to display				 
          SEND_STRING dvBetaBrite, "cHeader,'A0',cShowTime,
    			cModeCenter,cAutoMode,' AMX Rocks!',cCR,
    			cModeCenter,cScroll,' Is this thing cool or what?',
    BUTTON_EVENT[dvTP,6] {
       PUSH: {
          //stop running the A0 priority text file,
          //since we have no other text files scheduled to run
          //the display will just go blank
          SEND_STRING dvBetaBrite, "cHeader,'A0',cEOT"
    (*                     END OF PROGRAM                      *)
    (*        DO NOT PUT ANY CODE BELOW THIS COMMENT           *)
    (*      OR IT'S THE END OF THE WORLD AS WE KNOW IT         *)

    Have fun! And let me know how it turns out.

Sign In or Register to comment.