96a32a9f07d2fcc7389a6c8b796552c707de7d63
Stefan Schuermans example PoSy receiver

Stefan Schuermans authored 10 years ago

1) #! /usr/bin/env python
2) 
3) # Stage Director receiver
4) # Copyright 2014 Stefan Schuermans <stefan@schuermans.info>
5) # Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html
6) 
7) import datetime
8) import fcntl
9) import os
10) import select
11) import socket
12) import struct
13) import sys
14) import time
15) 
16) scriptdir = os.path.dirname(os.path.abspath(__file__))
17) 
18) class Receiver:
19) 
20)   def __init__(self):
21)     """construct a Stage Director Receiver object"""
22)     # set constants
23)     self.select_timeout = 0.1 # timeout (s) for select syscall
24)     # create member variables
25)     self.sock = None
26)     # startup
27)     self.sockSetup()
28) 
29)   def __del__(self):
30)     """deconstruct object"""
31)     self.sockClose()
32) 
33)   def posyParse(self, data):
34)     """parse received PoSy packet"""
35)     if len(data) < 76 or data[0:4] != "PoSy":
36)       return False
37)     flags, name, pos_ms = struct.unpack("!I64sI", data[4:76])
38)     name_end = name.find("\0")
39)     if name_end >= 0:
40)       name = name[:name_end]
41)     if flags & 1:
42)       pause = True
43)     else:
44)       pause = False
45)     # store info from PoSy packet
Stefan Schuermans typo

Stefan Schuermans authored 10 years ago

46)     print("name=%s pos=%.3fs pause=%s" % (name, pos_ms * 1e-3, pause))