Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- import win32ui
- import dde
- import time
- import recorder
- # Автоматическое включение и выключение записи звука для орбитрона.
- # Проверена работа с python 2.7 и pywin32-214. С другими версиями может не работать.
- # Для использования создать экзешник с помощью pyinstaller.
- # recorder брать отсюда: https://gist.github.com/sloria/5693955
- # В конфиге орбитрона добавить:
- # [Drivers]
- # WavDDE=путь\к\программе\dde_client.exe
- # После чего на вкладке "Rotor/Radio" орбитрона выбрать драйвер WavDDE,
- # выбрать интересующий спутник и нажать "Run" (кнопка справа от выпадающего списка).
- def get_tracking_data(response):
- if len(response.split()) != 5:
- return False, None
- result = {}
- result_status = False
- for record in response.split():
- if len(record) < 2:
- return status, {}
- field = record[0:2]
- val = record[2:]
- if field == "SN":
- result.update({field: val})
- else:
- result.update({field: float(val)})
- result_status = ("SN" in result) and ("AZ" in result) and ("EL" in result) and ("DN" in result) and (
- "UP" in result)
- return result_status, result
- s = dde.CreateServer()
- s.Create("WavDDE")
- c = dde.CreateConversation(s)
- c.ConnectTo("Orbitron", "Tracking")
- connect_status = c.Connected()
- elevation_perv = False
- rec = recorder.Recorder(channels=2, rate=44100)
- while True:
- data_response = c.Request("TrackingData")
- if data_response.isspace():
- break
- else:
- status, data = get_tracking_data(data_response)
- if not status:
- break
- else:
- if (not elevation_perv) and (data["EL"] > 0):
- filename = time.strftime("%d_%m_%Y--%H_%M_%S.wav")
- recfile = rec.open(filename, "wb")
- recfile.start_recording()
- print("start record", filename)
- if elevation_perv and data["EL"] <= 0:
- print("stop record")
- recfile.stop_recording()
- elevation_perv = data["EL"] > 0
- time.sleep(0.5)
- s.Shutdown()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement