User Tools

Site Tools


quadricone-python-zurich-noservo

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Last revision Both sides next revision
quadricone-python-zurich-noservo [2012/11/24 20:38]
85.218.109.130 created
quadricone-python-zurich-noservo [2013/03/14 08:31]
217.13.237.34 dhEeEzeOk
Line 1: Line 1:
-====== quadricone zurich noservo py ====== +lWlyv9 ​, [url=http://​bcdqcebxxsme.com/]bcdqcebxxsme[/url], [link=http://qvvhkksrxtib.com/]qvvhkksrxtib[/link], http://​ugdgedsvoxgw.com/
- +
-<code python>​ +
-import subprocessglob, time, csv, random +
- +
-'''​ some naming clarifications:​ +
-Servo is a class for motors, where movement is defined +
-Servos is a dictionary of servo names and positions +
-servo is used in the while loop to refer to an item of the Servos dictionary +
-'''​ +
- +
-### the moving part ------------------- +
- +
-class Servo: +
-    def __init__(self,​ servoID): +
-        self.servoID=servoID +
-        self.startPos() # when initiated, go to zero +
-  +
-    def move(self, position):​ +
-        self.position=position +
-        print self.servoID,​ "​\'​s given position is", self.position +
-        if (10 <= self.position <= 120): +
-            print "​everything OK, will write",​ self.position +
-        elif 120 < self.position < 170: +
-            print "will adjust to 160", self.position +
-            self.position=160 +
-        elif self.position > 170: +
-            print "​MAX",​ self.servoID,​ "is in maximum position"​ +
-            self.position=180 +
-            print "MAX: Servo will now go to", self.position +
-        elif self.position<​10:​ +
-            print "​MIN",​ self.servoID,​ "is in minimum position"​ +
-            self.position=0 +
-            print "MIN: Servo will now go to", self.position +
-        else: +
-            print "how did this happen?"​ +
-  +
-         +
-    def startPos(self):​ +
-        self.move(0) +
- +
- +
-## initiate the morots and put them all in the start (0) position +
-## alternative +
- +
-Servos={"​raja":​0,​ "​gaja":​0,​ "​vlaja":​0,​ "​zlaja":​0} +
-for i,servo in enumerate(Servos):​ +
-    globals()[servo]=Servo(i+1) +
-    globals()[servo].startPos() +
- +
-#​key_pos=[0,​ 0, 0, 0] +
- +
-### the scanning part ----------------- +
- +
-# airodump-ng is running and logging the results into a csv file +
-# with the following commandsudo airodump-ng -o csv -w manuf mon0 +
-# subprocess looks for the last edited csv file in current folder +
-# this file is parsed by the csv module to find the number of data packets that have passed through the network since the last check  +
- +
-csvs=subprocess.Popen("​ls -t1 *csv | head -1", shell=True, stdout=subprocess.PIPE,​ stderr=subprocess.PIPE) +
-csv_last=csvs.communicate()[0].strip() +
- +
-key_value=('​ # IV') # look up this value in the scan dump +
- +
-def lookup(dump):​ +
-    datas=[] +
-    results=[] +
-    scan=open(dump"​rU"​) +
-    next(scan) +
-    scanDict=csv.DictReader((line.replace('​\0',''​) for line in scan), delimiter=','​) +
-    for adict in scanDict: +
-        if adict.has_key(key_value) and adict.get(key_value)!=None:​ +
-            try: +
-                datas.append(int(adict.get(key_value))) +
-            except: +
-                pass +
-    datas.sort(reverse=True) +
-    for i in range(4): +
-        results.append(datas[i])     +
-    return results +
-     +
-### the main loop ---------------------- +
-     +
-packet_list=lookup(csv_last) +
-print '​packet_list',​ packet_list +
-#​random.shuffle(servo_list) +
-#print '​servo_list',​ servo_list +
-time.sleep(3) +
- +
-while True: +
-    new_packet_list=lookup(csv_last) +
-    print "//////////////////////"​ +
-    print "​..."​ +
-    print '​new_packet_list',​ new_packet_list +
-    print '​calculating the movements...'​ +
-    print "​starting key positions: ", Servos +
-    for i,servo in enumerate(Servos):​ +
-        print "​i!!!!i!!!!i!!!!!"​ +
-        print '​servo:',​ servo +
-        pos=Servos.get(servo) +
-        packet_diff=new_packet_list[i]-packet_list[i] +
-        print '​packet_diff:'​packet_diff +
-        if packet_diff==0: +
-            new_pos=pos-10 +
-            print 'go down', new_pos +
-            globals()[servo].move(new_pos) +
-            time.sleep(0.2) +
-            if new_pos<​0:​ +
-                Servos[servo]=0 +
-            else: +
-                Servos[servo]=new_pos +
-        elif 12 > packet_diff >= 1: +
-            new_pos=Servos.get(servo)+5 +
-            if new_pos < 10: +
-                new_pos=10 +
-            print 'go up very small',​ new_pos +
-            globals()[servo].move(new_pos) +
-            time.sleep(0.2) +
-            Servos[servo]=new_pos # update key position for the next round +
-        elif 36 > packet_diff >= 12: +
-            new_pos=Servos.get(servo)+8 +
-            if new_pos < 10: +
-                new_pos=10 +
-            print 'go up small',​ new_pos +
-            globals()[servo].move(new_pos) +
-            time.sleep(0.2) +
-            Servos[servo]=new_pos # update key position for the next round +
-        elif 80 > packet_diff >= 36: +
-            new_pos=Servos.get(servo)+10 +
-            print 'go up middle',​ new_pos +
-            globals()[servo].move(new_pos) +
-            time.sleep(0.2) +
-            Servos[servo]=new_pos # update key position for the next round +
-        elif 180 > packet_diff >= 80: +
-            new_pos=Servos.get(servo)+20 +
-            print 'go up big', new_pos +
-            globals()[servo].move(new_pos) +
-            time.sleep(0.2) +
-            if new_pos > 180: +
-                Servos[servo]=180 +
-            else: +
-                Servos[servo]=new_pos # update key position for the next round +
-        elif packet_diff >= 180: +
-            new_pos=Servos.get(servo)+50 +
-            print 'go up very big', new_pos +
-            globals()[servo].move(new_pos) +
-            time.sleep(0.2) +
-            if new_pos > 180: +
-                Servos[servo]=180 +
-            else: +
-                Servos[servo]=new_pos # update key position for the next round +
-        else: +
-            print '​key_pos:',​ Servos.get(servo) , '​packet_diff:',​ packet_diff,​ 'and i am out of options'​ +
-    print "​!!!!!!!!!!!!!!!!!!!!"​ +
-    print "new list of key pos", Servos +
-    packet_list=new_packet_list # update packet list +
-    time.sleep(10) +
- +
-</code>+
quadricone-python-zurich-noservo.txt · Last modified: 2013/04/22 17:05 by zoza