from HexStrDataParser import HexStrDataParser, DataToHexStr parser = HexStrDataParser('b') assert(parser.stringToData('0A')[0] == 10) parser = HexStrDataParser('I') assert(parser.stringToData('0A000000')[0] == 10) parser = HexStrDataParser('I') assert(parser.stringToData('00000080')[0] == 2**31) parser = HexStrDataParser('I') assert(parser.stringToData('00010000')[0] == 256) parser = HexStrDataParser('Ib') assert(parser.stringToData('000100000A')[0] == 256) assert(parser.stringToData('000100000A')[1] == 10) parser = HexStrDataParser('fb') assert(parser.stringToData('0000803f0A')[0] == 1.0) assert(parser.stringToData('0000803f0A')[1] == 10) parser = HexStrDataParser('ff') assert(parser.stringToData('0000803f000080bf')[0] == 1.0) assert(parser.stringToData('0000803f000080bf')[1] == -1.0) packer = DataToHexStr('ffB') packedStr = packer.dataToString([1.0, -1.0, 255]) parser = HexStrDataParser('ffB') assert(parser.stringToData(packedStr)[0] == 1.0)
while True: sercom.readline() line = sercom.next() if not firstLine: firstLine = True continue dataOk = True if line[0] != chr(0x02) or line[-1] != chr(0x0A): dataOk = False break try: if dataOk: data = parser.stringToData(line[1:-1]) except Exception as e: dataOk = False currentDataWin.clear() if dataOk: timeTick = data[0] lineSensors = data[1] usedSensors = data[2] pidFeedback = data[4] leftPwm = data[9] rightPwm = data[10] pidU = data[8] pidP = data[5] pidI = data[6]