-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathset-ntkey.py
More file actions
80 lines (57 loc) · 2.06 KB
/
set-ntkey.py
File metadata and controls
80 lines (57 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import logging
import sys
import time
import argparse
from networktables import NetworkTables
#https://docs.python.org/3.3/library/argparse.html
parser = argparse.ArgumentParser(description='Set the value of a variable on the Preferences NetworkTable')
# store flag value
parser.add_argument('key')
parser.add_argument('value')
parser.add_argument('-d', '--debug', action='store_true')
parser.add_argument('-p', '--persistent', action='store_true')
parser.add_argument('-s', '--server', default='10.2.79.2')
parser.add_argument('-nt', '--table', default='Preferences')
#see putvalue http://robotpy.readthedocs.io/projects/pynetworktables/en/stable/api.html#networktables-api
#PutValue Types
#bool EntryTypes.BOOLEAN
#int EntryTypes.DOUBLE
#float EntryTypes.DOUBLE
#str EntryTypes.STRING
#bytes EntryTypes.RAW Doesn’t work in Python 2.7
#list Error Use putXXXArray methods instead
#tuple Error Use putXXXArray methods instead
#parser.add_argument('-t', '--type', required=True, choices=['bool', 'int', 'float', 'str', 'bytes'])
args = parser.parse_args(sys.argv[1:len(sys.argv)])
if args.debug:
print('Setting value')
print('Server: ' + str(args.server))
print('Table: ' + str(args.table))
print('Key: ' + str(args.key))
print('Value: ' + str(args.value))
#print('Type: ' + str(args.type))
print('Debug: ' + str(args.debug))
logging.basicConfig(level=logging.DEBUG)
NetworkTables.initialize(server=str(args.server))
while NetworkTables.isConnected() == False:
time.sleep(0.1)
nt = NetworkTables.getTable(str(args.table))
setPersist = False
if str(args.table) == 'Preferences':
setPersist = True
else:
if nt.containsKey(str(args.key)):
if nt.isPersistent(str(args.key)):
setPersist = True
if setPersist:
nt.clearPersistent(str(args.key))
res = nt.putValue(str(args.key), args.value)
if args.persistent:
nt.setPersistent(str(args.key))
NetworkTables.flush()
val = nt.getValue(str(args.key))
if val:
print("Value set: " + str(args.table) + "/" + str(args.key) + " = " + str(val))
else:
print("Error - did not set key correctly!")
NetworkTables.shutdown()