def my_page_handler_sim(data): global cur_pos tacx_misc.tacx_data=get_tacx_data(str(data),tacx_misc.offset) if (tacx_misc.tacx_data.new_data): cur_pos=goto_pos(gpx_list,tacx_misc.tacx_data.distance+tacx_misc.guivars.add_dist) if (tacx_misc.man_roadsurface): cur_pos.RoadSurface=tacx_misc.man_roadsurface_type cur_pos.RoadSurface_intensity=tacx_misc.man_roadsurface_intensity cur_pos.slope=tacx_misc.man_slope
def reset_dist(gpx_list): from gtacx import show_pos global cur_pos,sim_dist,dsel dsel=False sim_dist=0 dsel=False get_tacx_data.pdist=0 get_tacx_data.ndist=0 get_tacx_data.startdist=0 get_tacx_data.reset=True tacx_misc.tacx_data.distance=0 cur_pos=goto_pos(gpx_list,tacx_misc.tacx_data.distance+tacx_misc.guivars.add_dist) show_pos(tacx_misc.tacx_data,cur_pos)
async def tacx_real(address, gpx_list): global cur_pos from bleak import BleakClient from pycycling2.tacx_trainer_control import TacxTrainerControl from gtacx import set_entry tacx_misc.running = True get_tacx_data.pdist = 0 get_tacx_data.ndist = 0 get_tacx_data.startdist = 0 get_tacx_data.reset = True # goto start position cur_pos = goto_pos(gpx_list, tacx_misc.offset) if (cur_pos): tacx_misc.man_roadsurface_type = cur_pos.RoadSurface tacx_misc.man_roadsurface_intensity = 20 set_entry(tacx_misc.guivars.w20, "Tacx Try to connect") async with BleakClient(address, timeout=20.0) as client: set_entry(tacx_misc.guivars.w20, "Tacx Connecting") await client.is_connected() set_entry(tacx_misc.guivars.w20, "Tacx Connected") trainer = TacxTrainerControl(client) ###################################################### # handle commands from tacx; get current position: def my_page_handler(data): global cur_pos tacx_misc.tacx_data = get_tacx_data(str(data), tacx_misc.offset) if (tacx_misc.tacx_data.new_data): cur_pos = goto_pos( gpx_list, tacx_misc.tacx_data.distance + tacx_misc.guivars.add_dist) if (tacx_misc.man_roadsurface): cur_pos.RoadSurface = tacx_misc.man_roadsurface_type cur_pos.RoadSurface_intensity = tacx_misc.man_roadsurface_intensity cur_pos.slope = tacx_misc.man_slope trainer.set_specific_trainer_data_page_handler(my_page_handler) trainer.set_general_fe_data_page_handler(my_page_handler) await trainer.enable_fec_notifications() #set fixed parameters await trainer.set_user_configuration(user_weight=75, bicycle_weight=10, bicycle_wheel_diameter=0.7, gear_ratio=1) set_entry(tacx_misc.guivars.w20, "Tacx Running") #print("Ready") ###################################################### # Loop: send commands to tacx, check regularly if data from tacx changes while (tacx_misc.running): if (tacx_misc.tacx_data.new_data): if (cur_pos.end_track): break from gtacx import show_pos show_pos(tacx_misc.tacx_data, cur_pos) await put_tacx_data(trainer, "set_track_resistance", cur_pos.slope, 0.002) await put_tacx_data(trainer, "set_RoadSurface", cur_pos.RoadSurface, int(cur_pos.RoadSurface_intensity)) tacx_misc.tacx_data.new_data = False await asyncio.sleep(0.2) await trainer.disable_fec_notifications() if (cur_pos.end_track): set_entry(tacx_misc.guivars.w20, "End-of-track") else: set_entry(tacx_misc.guivars.w20, "Stopped @ gpx={:.3f} km".format(cur_pos.dist / 1000.))
def val_dist_changed(dummy=0): guivars.add_dist=int(value_dist.get()) cur_pos=goto_pos(gpx_list,tacx_misc.tacx_data.distance+tacx_misc.guivars.add_dist) show_pos(tacx_misc.tacx_data,cur_pos)
async def tacx_sim(address,gpx_list): from gtacx import set_entry global cur_pos,sim_dist if (gpx_list == None): return sim_dist=0 tacx_misc.running=True get_tacx_data.pdist=0 get_tacx_data.ndist=0 get_tacx_data.startdist=0 get_tacx_data.reset=True # goto start position cur_pos=goto_pos(gpx_list,tacx_misc.offset) tacx_misc.man_roadsurface_type=cur_pos.RoadSurface ############################################################# #Als gpx via menu: # gpx_list=None, niet overgenomen van menu. # # tacx_misc.man_roadsurface_type=cur_pos.RoadSurface # AttributeError: 'NoneType' object has no attribute 'RoadSurface' ############################################################# tacx_misc.man_roadsurface_intensity=20 set_entry(tacx_misc.guivars.w20,"Simulating") if (True): # set_entry(tacx_misc.guivars.w20,"Tacx Connecting") # await client.is_connected() # set_entry(tacx_misc.guivars.w20,"Tacx Connected") sim_trainer = 1 ###################################################### # handle commands from tacx; get current position: def my_page_handler_sim(data): global cur_pos tacx_misc.tacx_data=get_tacx_data(str(data),tacx_misc.offset) if (tacx_misc.tacx_data.new_data): cur_pos=goto_pos(gpx_list,tacx_misc.tacx_data.distance+tacx_misc.guivars.add_dist) if (tacx_misc.man_roadsurface): cur_pos.RoadSurface=tacx_misc.man_roadsurface_type cur_pos.RoadSurface_intensity=tacx_misc.man_roadsurface_intensity cur_pos.slope=tacx_misc.man_slope ###################################################### # Loop: simulate commands to tacx, check each sec, if tacxi.cmd changes while (tacx_misc.running): if (tacx_misc.tacx_data.new_data): if (cur_pos.end_track): break from gtacx import show_pos show_pos(tacx_misc.tacx_data,cur_pos) await put_tacxsim_data(sim_trainer,"set_track_resistance",cur_pos.slope,0.002) await put_tacxsim_data(sim_trainer,"set_RoadSurface",cur_pos.RoadSurface,cur_pos.RoadSurface_intensity) tacx_misc.tacx_data.new_data=False await asyncio.sleep(0.01) my_page_handler_sim(gen_data()) # if heardEnter(): # break # await trainer.disable_fec_notifications() if (cur_pos.end_track): set_entry(tacx_misc.guivars.w20,"End-of-track") else: set_entry(tacx_misc.guivars.w20,"Stopped @ gpx={:.3f} km".format(cur_pos.dist/1000.))