示例#1
0
 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
示例#2
0
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)
示例#3
0
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.))
示例#4
0
 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)
示例#5
0
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.))