69 lines
1.8 KiB
Python
69 lines
1.8 KiB
Python
|
import socket
|
||
|
from multiprocessing import Process
|
||
|
|
||
|
import numpy as np
|
||
|
from PyQt5.QtWidgets import QApplication
|
||
|
|
||
|
from urh import settings
|
||
|
from urh.controller.MainController import MainController
|
||
|
from urh.controller.dialogs.SpectrumDialogController import SpectrumDialogController
|
||
|
from urh.util import util
|
||
|
from urh.util.ProjectManager import ProjectManager
|
||
|
|
||
|
def send_data(port):
|
||
|
num_samples = settings.SPECTRUM_BUFFER_SIZE
|
||
|
frequency = 0.1
|
||
|
divisor = 200
|
||
|
pos = 0
|
||
|
while True:
|
||
|
sock = open_socket(port)
|
||
|
result = np.zeros(num_samples, dtype=np.complex64)
|
||
|
result.real = np.cos(2 * np.pi * frequency * np.arange(pos, pos + num_samples))
|
||
|
result.imag = np.sin(2 * np.pi * frequency * np.arange(pos, pos + num_samples))
|
||
|
pos += num_samples
|
||
|
if pos / num_samples >= divisor:
|
||
|
frequency *= 2
|
||
|
if frequency >= 1:
|
||
|
frequency = 0.1
|
||
|
pos = 0
|
||
|
sock.sendall(result.tostring())
|
||
|
close_socket(sock)
|
||
|
|
||
|
|
||
|
def open_socket(port):
|
||
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||
|
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||
|
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
|
||
|
|
||
|
sock.connect(("127.0.0.1", port))
|
||
|
return sock
|
||
|
|
||
|
|
||
|
def close_socket(sock):
|
||
|
sock.shutdown(socket.SHUT_RDWR)
|
||
|
sock.close()
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
app = QApplication(["test"])
|
||
|
main = MainController()
|
||
|
port = util.get_free_port()
|
||
|
dialog = SpectrumDialogController(ProjectManager(main))
|
||
|
dialog.showMaximized()
|
||
|
dialog.ui.cbDevice.setCurrentText("Network SDR")
|
||
|
dialog.device.set_server_port(port)
|
||
|
dialog.ui.btnStart.click()
|
||
|
|
||
|
p = Process(target=send_data, args=(port,))
|
||
|
p.daemon = True
|
||
|
p.start()
|
||
|
|
||
|
num_samples = 32768
|
||
|
frequency = 0.1
|
||
|
divisor = 200
|
||
|
pos = 0
|
||
|
app.exec_()
|
||
|
p.terminate()
|
||
|
p.join()
|
||
|
|