1
1
import serial
2
+ import socket
3
+ import struct
2
4
3
5
dakSports = {
4
6
'auto racing' : {},
238
240
'wrestling' : {}
239
241
}
240
242
243
+ DAKUDP_IP = "224.51.105.104"
241
244
242
- class Daktronics (object ):
243
- def __init__ (self , sport , ser = None ):
244
- if ser is not None :
245
- self .Serial = ser
245
+
246
+ class DakSerial (object ):
247
+ def __init__ (self , data = None ):
248
+ if type (data ) is serial .Serial :
249
+ self .data = data
250
+ elif type (data ) is str :
251
+ self .data = serial .Serial (data , baudrate = 19200 , timeout = 1 )
246
252
else :
247
- self .Serial = serial .Serial ("COM1" , 19200 )
253
+ self .data = serial .Serial ("COM1" , baudrate = 19200 , timeout = 1 )
254
+
255
+ def read (self ):
256
+ rtd = b''
257
+ c = b''
258
+ while c != b'\x16 ' :
259
+ c = self .data .read ()
260
+ c = b'\x16 '
261
+ while c != b'\x17 ' :
262
+ c = self .data .read ()
263
+ rtd += c
264
+ return rtd
265
+
266
+
267
+ class DakUDP (object ):
268
+ def __init__ (self , data = 21000 ):
269
+ self .data = None
270
+ self .data = socket .socket (socket .AF_INET , socket .SOCK_DGRAM , socket .IPPROTO_UDP )
271
+ self .data .setsockopt (socket .SOL_SOCKET , socket .SO_REUSEADDR , 1 )
272
+ self .data .bind (('' , data ))
273
+ mreq = struct .pack ("=4sl" , socket .inet_aton (DAKUDP_IP ), socket .INADDR_ANY )
274
+ self .data .setsockopt (socket .IPPROTO_IP , socket .IP_ADD_MEMBERSHIP , mreq )
275
+
276
+ def read (self ):
277
+ return self .data .recv (1024 )
278
+
279
+
280
+ class Daktronics (object ):
281
+ def __init__ (self , sport , data ):
282
+ self .dakrtd = data
248
283
self .header = b''
249
284
self .code = b''
250
285
self .rtd = b''
@@ -254,14 +289,7 @@ def __init__(self, sport, ser=None):
254
289
self .dakString = " " * self .sport ['dakSize' ][1 ]
255
290
256
291
def update (self ):
257
- c = b''
258
- self .rtd = b''
259
- while c != b'\x16 ' :
260
- c = self .Serial .read ()
261
- c = b'\x16 '
262
- while c != b'\x17 ' :
263
- c = self .Serial .read ()
264
- self .rtd += c
292
+ self .rtd = self .dakrtd .read ()
265
293
266
294
self .header = self .rtd .partition (b'\x16 ' )[2 ].partition (b'\x01 ' )[0 ]
267
295
self .code = self .rtd .partition (b'\x01 ' )[2 ].partition (b'\x02 ' )[0 ].partition (b'\x04 ' )[0 ]
@@ -280,11 +308,13 @@ def __getitem__(self, gikey):
280
308
281
309
282
310
if __name__ == '__main__' :
283
- dak = Daktronics ("football" )
311
+ print ("UDP MULTICAST 21000" )
312
+ dakdata = DakUDP (21000 )
313
+ dak = Daktronics ("hockey/lacrosse" , dakdata )
284
314
while True :
285
315
dak .update ()
286
316
print ("--------------------------------------------------------------" )
287
- print (dak ['Main Clock Time [ mm:ss/ss.t] ' ])
317
+ print (dak ['Main Clock Time ( mm:ss/ss.t ) ' ])
288
318
print (dak ['Home Team Name' ], dak ['Home Team Score' ])
289
319
print (dak ['Guest Team Name' ], dak ['Guest Team Score' ])
290
320
print ("--------------------------------------------------------------" )
0 commit comments