Weird Looking: some sign code

some sign code

October 3, 2008 11:54am (5 years, 10 months and 4 weeks ago)
So, what I’ve got here is my implementation of the favotech sign’s protocol in python.  As I’ve mentioned, it’s horrible.  From what I can tell, the sign supports basically the same protocol over TCP, UDP, and serial.  I’ve been using UDP over a crossover cable from a whitebox with two NICs, and that’s worked fine.

I’m using it inside a twisted app, mostly for all the batteries it includes.  I have a UDP server class that inherits from this class, but implements its own send_to_sign method.  This layout made reusing the code for different connection media a breeze.  Basic usage then looks something like this:

  self.test_reset()
  self.pause()
  self.time_sync()
  self.set_frame_count(3)
  self.set_text(0, '{y}OH HAI')
  self.set_text(1, 'I AM {f}THE{/f} SIGN')
  self.set_text(2, '{0}{ma} {dd}  {12}')
  self.resume()

To dumb down the interface, a frame count of n actually creates a playlist containing n two-letter filenames, 'AA’…’ZZ’.  Calling set_text with a frame ID then sets the text of the corresponding file.  The set_text method has a dead simple markup language it can use to set text colors and stuff.

More to come, probably…

Comments

Oct 31, 2008 2:46am
BTW, the corrected time_sync method is:

   def time_sync(self):
       loc = localtime()
       self.send_message((5, 2, 2), data=
           [int(str(loc[0] % 1000), 16), 32, int(str(loc[1]), 16),
            int(str(loc[2]), 16), int(str(loc[3]), 16), int(str(loc[4]), 16),
            2, 6])


It took me a couple tries to figure this out because it all looked completely sane in the hex dumps of packets.

Leave a comment


Accepts BBCode with a few enhancements.