Changeset 35:9451e75788ea in xplra for src/client/python
- Timestamp:
- 02/09/13 13:00:42 (12 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 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 #-------------------------------------------------------------------------------
Note:
See TracChangeset
for help on using the changeset viewer.