port = 'COM5' if len(sys.argv) > 4: port = sys.argv[4] iface = SerialIface("test", port) # set output file name fn = 'measmtrx.txt' if len(sys.argv) > 5: fn = sys.argv[5] # write out measurements wrt = FileWriter(angle='DEG', dist='.3f', fname=fn) if wrt.GetState() != wrt.WR_OK: sys.exit(-1) # open error ts = TotalStation(stationtype, mu, iface, wrt) ts.SetATR(0) # turn ATR off ts.SetEDMMode('RLSTANDARD') # reflectorless distance measurement ts.SetRedLaser(1) # turn red laser on w = raw_input("Target on lower left corner and press Enter") w1 = ts.GetAngles() w = raw_input("Target on upper right corner and press Enter") w2 = ts.GetAngles() dh = (w2['hz'].GetAngle() - w1['hz'].GetAngle()) / dh_nr dv = (w2['v'].GetAngle() - w1['v'].GetAngle()) / dv_nr # measurement loops for i in range(dh_nr + 1): # horizontal loop measdir = i % 2 # check modulo hz = Angle(w1['hz'].GetAngle() + i * dh, 'RAD') for j in range(dv_nr + 1): # vertical loop if measdir == 0: # move downward at odd steps to right
mode='a', sep=';') ts = TotalStation(stationtype, mu, iface) ts.SetEDMMode('RLSTANDARD') # reflectorless distance measurement ts.Measure() # initial measurement for startpoint startp = ts.GetMeasure() if ts.measureIface.state != ts.measureIface.IF_OK or 'errorCode' in startp: print 'FATAL Cannot measure startpoint' exit(1) act = Angle(0) # actual angle from startpoint # height of startpoint above the horizontal axis height0 = math.cos(startp['v'].GetAngle()) * startp['distance'] w = True try: ts.SetRedLaser(1) except: pass while act.GetAngle() < maxa: # go around the whole circle ts.Measure() # measure distance0 if ts.measureIface.state != ts.measureIface.IF_OK: ts.measureIface.state = ts.measureIface.IF_OK ts.MoveRel(stepinterval, Angle(0)) continue nextp = ts.GetMeasure() # get observation data if ts.measureIface.state != ts.measureIface.IF_OK: ts.measureIface.state = ts.measureIface.IF_OK ts.MoveRel(stepinterval, Angle(0)) continue if not 'v' in nextp or not 'distance' in nextp or not 'hz' in nextp: