Ejemplo n.º 1
0
def extractValidFrameFromUART(uart):
    timeout_count = 0
    while True:
        start_byte = uart.read(1)
        #print("start byte? {} timeout:{}".format(start_byte,timeout_count))
        timeout_count += 1
        if start_byte == b'\x76':
            #print("found start byte")
            break
        if timeout_count > 24 * 4:
            return None
    timeout_count = 0
    while True:
        timeout_count += 1
        if uart.any() >= 23:
            break
        elif timeout_count > 100:
            print("uart rx time out")
            return None
    data_frame = start_byte + uart.read(23)
    #print("data frame {}".format(ubinascii.hexlify(data_frame)))
    crc = crc16.crc(data_frame[:22])
    rx_crc = int.from_bytes(data_frame[22:24], 0)
    #print("rx_crc: {} crc:{}".format(rx_crc,crc))
    if (rx_crc == crc):
        return data_frame
    else:
        return None
Ejemplo n.º 2
0
def dataSendLoop(addData_callbackFunc, p):
    global MAX_FORCE_VALUE
    mySrc = Communicate()
    mySrc.data_signal.connect(addData_callbackFunc)
    n = np.linspace(0, 499, 500)
    y = 50 + 25 * np.sin(n / 8.3) + 10 * np.sin(n / 7.5) - 5 * np.sin(n / 1.5)
    i = 0
    adc_val = [0]
    while True:
        time.sleep(0.001)
        ind = 0
        wait_bytes = p.in_waiting
        coming_pack = ''
        crc_pack = ''
        if wait_bytes >= 7:
            f_byte = p.read(1)
            while chr(f_byte[0]).encode('utf-8') != '\x06':
                f_byte = p.read(1)

            s_byte = p.read(1)
            if s_byte == '\x85':
                coming_pack = p.read(3)
                crc_pack = p.read(2)
                calc_crc = crc16.crc(coming_pack)
                rec_crc = struct.unpack('H', crc_pack[0:2])
                if calc_crc == rec_crc[0]:
                    adc_val = struct.unpack('h', coming_pack[:2])
                    mySrc.data_signal.emit(-adc_val[0] * SCALE_GRAPH_VAL)
                    writeData.append((time.time() - start_time,
                                      -adc_val[0] * SCALE_GRAPH_VAL))
                    if int(-adc_val[0] * SCALE_GRAPH_VAL) > MAX_FORCE_VALUE:
                        MAX_FORCE_VALUE = -adc_val[0] * SCALE_GRAPH_VAL
Ejemplo n.º 3
0
def prepareacket(command, payload, parameters):
    packet = ['AA', 'AA', 'AA', command] + payload
    if len(parameters) > 0:
        packet += parameters
    checksum = crc16.crc(packet)
    hexPacket = b''
    for i in range(0, len(packet)):
        hexPacket += struct.pack(">B", packet[i])
    hexPacket += checksum
    return hexPacket
Ejemplo n.º 4
0
 def setDAC(self):
     sendData = b'\x03'
     heater = b'\x00\x01'
     sendData += self.spinBox.value().to_bytes(
         2, byteorder='big', signed=True) + heater + b'\x00\x00'
     calc_crc = crc16.crc(sendData)
     sendData = b'\x06\x85'+sendData + \
         calc_crc.to_bytes(2, byteorder='big', signed=False)
     print(sendData)
     self.p.write(sendData)
     DACfile = open('dac.txt', 'w')
     DACfile.write(str(self.spinBox.value()))
     DACfile.close()
Ejemplo n.º 5
0
    def data_frame(self, frame):
        crc_valid = None


        crc = crc16.crc(
            bytes(frame[0:22])
        )

        if((frame[22]<<8 | frame[23]) == crc):
            crc_valid = True
        else:
            crc_valid = False
        if(crc_valid):    
            self.Byte0 = frame[0]
            self.Len = frame[1]
            self.RunState = frame[2]
            self.ErrState = frame[3]
            self.SupplyV_MSB = frame[4]
            self.SupplyV_LSB = frame[5]
            self.FanRPM_MSB = frame[6]
            self.FanRPM_LSB = frame[7]
            self.FanVoltage_MSB = frame[8]
            self.FanVoltage_LSB = frame[9]
            self.HeatExchgTemp_MSB = frame[10]
            self.HeatExchgTemp_LSB = frame[11]
            self.GlowPlugVoltage_MSB = frame[12]
            self.GlowPlugVoltage_LSB = frame[13]
            self.GlowPlugCurrent_MSB = frame[14]
            self.GlowPlugCurrent_LSB = frame[15]
            self._ActualPumpFreq = frame[16]
            self._StoredErrorCode = frame[17]
            self._Unknown1 = frame[18]
            self._FixedPumpFreq = frame[19]
            self._Unknown2 = frame[20]
            self._Unknown3 = frame[21]
            self.CRC_MSB = frame[22]
            self.CRC_LSB = frame[23]

            return (bytes([self.Byte0, self.Len, self.RunState, self.ErrState, self.SupplyV_MSB,
                    self.SupplyV_LSB, self.FanRPM_MSB, self.FanRPM_LSB, self.FanVoltage_MSB, 
                    self.FanVoltage_LSB, self.HeatExchgTemp_MSB, self.HeatExchgTemp_LSB, 
                    self.GlowPlugVoltage_MSB, self.GlowPlugVoltage_LSB, self.GlowPlugCurrent_MSB, 
                    self.GlowPlugCurrent_LSB, self._ActualPumpFreq, self._StoredErrorCode, 
                    self._Unknown1, self._FixedPumpFreq, self._Unknown2, self._Unknown3, 
                    self.CRC_MSB, self.CRC_LSB]),crc_valid)
        else:
            return None
Ejemplo n.º 6
0
    def stopMoving(self):
        sendData = b'\x04'
        sendData += (0).to_bytes(2, byteorder='big', signed=True) + (
            0).to_bytes(2, byteorder='big', signed=True) + (0).to_bytes(
                2, byteorder='big', signed=True)
        calc_crc = crc16.crc(sendData)
        sendData = b'\x06\x85' + sendData + \
            calc_crc.to_bytes(2, byteorder='big', signed=False)
        self.p.write(sendData)
        print(sendData)
        fileData = open('DataSingle.txt', 'w')
        for elem in writeData:
            fileData.write(str(elem[0]) + ';' + str(elem[1]) + '\n')

        fileData.close()
        writeData.clear()
        self.labelTestFreq.setText('MAX VALUE: ' + str(MAX_FORCE_VALUE))
Ejemplo n.º 7
0
 def modeSelection(self):
     global SCALE_GRAPH_VAL
     global start_time
     up_limit = 5000
     down_limit = -22000
     count = 1
     sendData = b'\x02'
     recordData = True
     start_time = time.time()
     if self.cb_mode.currentText() == 'Cyclic':
         up_limit = -self.upLim.value() / SCALE_GRAPH_VAL
         down_limit = -self.downLim.value() / SCALE_GRAPH_VAL
         count = self.count.value()
         sendData = b'\x01'
         recordData = False
     sendData += int(up_limit).to_bytes(2, byteorder='big', signed=True)
     sendData += int(down_limit).to_bytes(2, byteorder='big', signed=True)
     sendData += int(count).to_bytes(2, byteorder='big', signed=True)
     calc_crc = crc16.crc(sendData)
     sendData = b'\x06\x85' + sendData + \
         calc_crc.to_bytes(2, byteorder='big', signed=False)
     print(sendData)
     self.p.write(sendData)
Ejemplo n.º 8
0
    def data_frame(self, frame=None, run_crc=True):
        crc_valid = None

        if frame:
            crc = crc16.crc(bytes(frame[0:22]))

            if ((frame[22] << 8 | frame[23]) == crc):
                crc_valid = True
            else:
                crc_valid = False

            if (crc_valid):
                self.Byte0 = frame[0]
                self.Len = frame[1]
                self.Command = frame[2]
                self._ActualTemperature = frame[3]
                self.DesiredDemand = frame[4]
                self._MinPumpFreq = frame[5]
                self._MaxPumpFreq = frame[6]
                self.MinFanRPM_MSB = frame[7]
                self.MinFanRPM_LSB = frame[8]
                self.MaxFanRPM_MSB = frame[9]
                self.MaxFanRPM_LSB = frame[10]
                self._OperatingVoltage = frame[11]
                self.FanSensor = frame[12]
                self.OperatingMode = frame[13]
                self.MinTemperature = frame[14]
                self.MaxTemperature = frame[15]
                self.GlowDrive = frame[16]
                self.Prime = frame[17]
                self.Unknown1_MSB = frame[18]
                self.Unknown1_LSB = frame[19]
                self.Altitude_MSB = frame[20]
                self.Altitude_LSB = frame[21]
                self.CRC_MSB = frame[22]
                self.CRC_LSB = frame[23]

        if run_crc:
            crc = crc16.crc(
                bytes([
                    self.Byte0, self.Len, self.Command,
                    self._ActualTemperature, self.DesiredDemand,
                    self._MinPumpFreq, self._MaxPumpFreq, self.MinFanRPM_MSB,
                    self.MinFanRPM_LSB, self.MaxFanRPM_MSB, self.MaxFanRPM_LSB,
                    self._OperatingVoltage, self.FanSensor, self.OperatingMode,
                    self.MinTemperature, self.MaxTemperature, self.GlowDrive,
                    self.Prime, self.Unknown1_MSB, self.Unknown1_LSB,
                    self.Altitude_MSB, self.Altitude_LSB
                ]))

            self.CRC_MSB = crc >> 8 & 0xFF
            self.CRC_LSB = crc & 0xFF
            crc_valid = True

        return (bytes([
            self.Byte0, self.Len, self.Command, self._ActualTemperature,
            self.DesiredDemand, self._MinPumpFreq, self._MaxPumpFreq,
            self.MinFanRPM_MSB, self.MinFanRPM_LSB, self.MaxFanRPM_MSB,
            self.MaxFanRPM_LSB, self._OperatingVoltage, self.FanSensor,
            self.OperatingMode, self.MinTemperature, self.MaxTemperature,
            self.GlowDrive, self.Prime, self.Unknown1_MSB, self.Unknown1_LSB,
            self.Altitude_MSB, self.Altitude_LSB, self.CRC_MSB, self.CRC_LSB
        ]), crc_valid)
Ejemplo n.º 9
0
    count = 100

else:
    extraCount = 100 - count

cursor.execute(
    'SELECT mii.initial, mii.miidata, artisan.miidata FROM mii, artisan WHERE mii.craftsno=artisan.craftsno ORDER BY mii.likes DESC LIMIT %s',
    [count])
popularMiis = cursor.fetchall()

cursor.execute(
    'SELECT mii.initial, mii.miidata, artisan.miidata FROM mii, artisan WHERE mii.permlikes < 25 AND mii.craftsno=artisan.craftsno ORDER BY mii.permlikes DESC LIMIT %s',
    [extraCount])
extraMiis = cursor.fetchall()

db.close()

ql = WSR().build(popularMiis + extraMiis)
with open('decfiles/wiisports.dec', 'wb') as file:
    file.write(ql)

path = config['miicontest_path']

with open('{}/dd/wiisports.dec'.format(path), 'wb') as file:
    file.write(crc(ql).to_bytes(2, "big") + ql)

#symlink all miidd country code files to wiisports.enc with its FULL directory path
system(
    "python ./sign_encrypt.py -t enc -in '{}/dd/wiisports.dec' -out '{}/dd/wiisports.enc' -key 91D9A5DD10AAB467491A066EAD9FDD6F -rsa /var/rc24/key/miidd.pem"
    .format(path, path))