X-Git-Url: http://git.droids-corp.org/?p=aversive.git;a=blobdiff_plain;f=projects%2Fmicrob2010%2Fmicrob_cmd%2Fmicrobcmd.py;h=2a559cb23d694c50aba0c1f40fce84ec84d26923;hp=555141f868e9fb5dd5161bb91bf0d856fdc622b7;hb=4872fe91ffcc459a56e45cb213eec2a8660075e1;hpb=9fa8975e7eff1095c2766a34605048b46b3ae880 diff --git a/projects/microb2010/microb_cmd/microbcmd.py b/projects/microb2010/microb_cmd/microbcmd.py index 555141f..2a559cb 100755 --- a/projects/microb2010/microb_cmd/microbcmd.py +++ b/projects/microb2010/microb_cmd/microbcmd.py @@ -107,7 +107,7 @@ def prog_page(ser, addr, buf): def prog_metadata(ser, addr, buf): length = len(buf) crc = do_crc(buf) - page = struct.pack("LL", length, crc) filename = os.path.join(MICROB_PATH, "binaries/%x_%x.bin"%(length, crc)) print "saving in %s"%(filename) f = open(filename, "w") @@ -116,13 +116,8 @@ def prog_metadata(ser, addr, buf): return prog_page(ser, addr, page) def get_same_bin_file(ser): - # hack because dump32 does not work - l1 = read32(ser, METADATA_ADDR) & 0xFFFF - l2 = read32(ser, METADATA_ADDR + 2) & 0xFFFF - c1 = read32(ser, METADATA_ADDR + 4) & 0xFFFF - c2 = read32(ser, METADATA_ADDR + 6) & 0xFFFF - l = l1 + l2 << 16 - c = c1 + c2 << 16 + l = read32(ser, METADATA_ADDR) + c = read32(ser, METADATA_ADDR + 4) filename = os.path.join(MICROB_PATH, "binaries/%x_%x.bin"%(l, c)) print filename @@ -334,8 +329,8 @@ class Interp(cmd.Cmd): addr = 0 - #old_buf = get_same_bin_file(self.ser) - old_buf = None + old_buf = get_same_bin_file(self.ser) + #old_buf = None while addr < len(buf): if addr > METADATA_ADDR and old_buf != None and \ @@ -378,12 +373,36 @@ class Interp(cmd.Cmd): filename = os.path.join(MICROB_PATH, "../ballboard/main.bin") self.bootloader(filename, 3) + def do_centrifugal(self, args): + try: + sa, sd, aa, ad = [int(x) for x in shlex.shlex(args)] + except: + print "args: speed_a, speed_d, acc_a, acc_d" + return + print sa, sd, aa, ad + time.sleep(10) + self.ser.write("traj_speed angle %d\n"%(sa)) + time.sleep(0.1) + self.ser.write("traj_speed distance %d\n"%(sd)) + time.sleep(0.1) + self.ser.write("traj_acc angle %d\n"%(aa)) + time.sleep(0.1) + self.ser.write("traj_acc distance %d\n"%(ad)) + time.sleep(0.1) + self.ser.write("goto da_rel 800 180\n") + time.sleep(3) + self.ser.flushInput() + self.ser.write("position show\n") + time.sleep(1) + print self.ser.read() + def do_toto(self, args): - for i in range(10): - time.sleep(1) - self.ser.write("pwm s3(3C) 200\n") - time.sleep(1) - self.ser.write("pwm s3(3C) 250\n") + print args + time.sleep(1) + self.ser.write("position set 0 0 0\n") + time.sleep(1) + self.ser.write("pwm s3(3C) 250\n") + if __name__ == "__main__": try: