Changeset 35:9451e75788ea in xplra
- Timestamp:
- 02/09/13 13:00:42 (12 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
src/client/python/xplra.py
r34 r35 131 131 """Create a new multi-dataref getter for this X-Plane object.""" 132 132 return MultiGetter(self) 133 134 def createMultiSetter(self): 135 """Create a new multi-dataref setter for this X-Plane object.""" 136 return MultiSetter(self) 133 137 134 138 def getInt(self, name): … … 251 255 if arr is not None and length>0: 252 256 arr.fromstring(self._stream.read(length*elementSize)) 253 return arr257 return None if arr is None else arr.tolist() 254 258 255 259 def _setSingle(self, name, type, value, offset = None): … … 524 528 self.finalize() 525 529 type = self._dataRefs[id][1] 530 length = self._dataRefs[id][2] 526 531 if type==TYPE_INT: 527 532 self._values[id] = int(value) 528 elif type==TYPE_FLOAT :533 elif type==TYPE_FLOAT or type==TYPE_DOUBLE: 529 534 self._values[id] = float(value) 530 elif type==TYPE_DOUBLE:531 self._values[id] = double(value)532 535 elif type==TYPE_FLOAT_ARRAY: 536 if len(value)!=length: 537 raise ValueError("xplra.MultiBuffer: expected a list of length %d" % (length,)) 533 538 self._values[id] = [float(x) for x in value] 534 539 elif type==TYPE_INT_ARRAY: 540 if len(value)!=length: 541 raise ValueError("xplra.MultiBuffer: expected a list of length %d" % (length,)) 535 542 self._values[id] = [int(x) for x in value] 536 543 elif type==TYPE_BYTE_ARRAY: 537 if instanceof(value, str): 538 self._values[id] = [ord(x) for x in value] 544 if isinstance(value, str): 545 lst = [ord(x) for x in value[:length]] 546 if len(lst)<length: 547 lst += [0] * (length-len(lst)) 548 self._values[id] = lst 539 549 else: 550 if len(value)!=length: 551 raise ValueError("xplra.MultiBuffer: expected a list of length %d" % (length,)) 540 552 self._values[id] = [int(x) for x in value] 541 553 … … 578 590 579 591 #------------------------------------------------------------------------------- 592 593 class MultiSetter(MultiBuffer): 594 """Multi-dataref buffer for setting.""" 595 def __init__(self, xplane): 596 """Construct the getter.""" 597 super(MultiSetter, self).__init__(xplane, 598 COMMAND_REGISTER_SET_MULTI, 599 COMMAND_UNREGISTER_SET_MULTI) 600 601 def _executeRegistered(self): 602 """Execute the query if the buffer is registered.""" 603 self._xplane._writeU8(COMMAND_EXECUTE_SET_MULTI) 604 self._xplane._writeU32(self._registeredID) 605 for i in range(0, len(self._dataRefs)): 606 self._xplane._writeValue(self._dataRefs[i][1], self._values[i]) 607 self._xplane._flush() 608 609 self._xplane._checkResult() 610 611 def _executeUnregistered(self): 612 """Execute the query if the buffer is not registered.""" 613 self._xplane._writeU8(COMMAND_SET_MULTI) 614 615 numDataRefs = len(self._dataRefs) 616 self._xplane._writeU32(numDataRefs) 617 618 for i in range(0, numDataRefs): 619 (name, type, length, offset) = self._dataRefs[i] 620 value = self._values[i] 621 622 self._xplane._writeString(name) 623 self._xplane._writeType(type) 624 if length is not None and offset is not None: 625 self._xplane._writeS32(len(value)) 626 self._xplane._writeS32(offset) 627 self._xplane._writeValue(type, value) 628 629 self._xplane._flush() 630 self._xplane._checkResult() 631 632 #------------------------------------------------------------------------------- -
test/basictest.py
r32 r35 46 46 print "Querying the aircraft's description..." 47 47 result = xplane.getByteArray("sim/aircraft/view/acf_descrip") 48 print "The description:", result .tolist()48 print "The description:", result 49 49 print 50 50 … … 57 57 print "Querying the aircraft's engine types..." 58 58 result3 = xplane.getIntArray("sim/aircraft/prop/acf_en_type") 59 print "Got:", result3 .tolist()59 print "Got:", result3 60 60 print 61 61 62 62 print "Querying the aircraft's propeller directions..." 63 63 result5 = xplane.getFloatArray("sim/aircraft/prop/acf_prop_dir") 64 print "Got:", result5 .tolist()64 print "Got:", result5 65 65 print 66 66 … … 87 87 print 88 88 89 numBlades = xplane.getFloatArray("sim/aircraft/prop/acf_num_blades") .tolist()89 numBlades = xplane.getFloatArray("sim/aircraft/prop/acf_num_blades") 90 90 print "Setting the number of blades" 91 91 print " from:", numBlades … … 94 94 xplane.setFloatArray("sim/aircraft/prop/acf_num_blades", numBlades) 95 95 96 numBlades = xplane.getFloatArray("sim/aircraft/prop/acf_num_blades") .tolist()96 numBlades = xplane.getFloatArray("sim/aircraft/prop/acf_num_blades") 97 97 print "The result:", numBlades 98 98 print 99 99 100 batteryArrayOn = xplane.getIntArray("sim/cockpit/electrical/battery_array_on") .tolist()100 batteryArrayOn = xplane.getIntArray("sim/cockpit/electrical/battery_array_on") 101 101 print "Setting the batteries" 102 102 print " from:", batteryArrayOn … … 104 104 print " to:", batteryArrayOn 105 105 xplane.setIntArray("sim/cockpit/electrical/battery_array_on", batteryArrayOn) 106 batteryArrayOn = xplane.getIntArray("sim/cockpit/electrical/battery_array_on") .tolist()106 batteryArrayOn = xplane.getIntArray("sim/cockpit/electrical/battery_array_on") 107 107 print "The result:", batteryArrayOn 108 108 print -
test/multigettest.py
r34 r35 96 96 print "altimeter: %f, qnh: %f" % \ 97 97 (getter[altimeterID], getter[qnhID]); 98 print "NAV types:", getter[navTypesID] .tolist()99 print "bus voltages:", getter[busVoltsID] .tolist()98 print "NAV types:", getter[navTypesID] 99 print "bus voltages:", getter[busVoltsID] 100 100 print 101 101 time.sleep(1.0)
Note:
See TracChangeset
for help on using the changeset viewer.