Межпрограммное общение - PullRequest
0 голосов
/ 20 марта 2020

ЧТО Я ХОЧУ ДЕЛАТЬ

У меня есть два python файла с именем

1. gps_transmitter.py
2. data_uploader.py

gps_transmitter.py прост. У него бесконечное время, пока l oop. Он распознает данные gps от последовательного порта и передает данные через сокет через протокол UDP.
Загрузчик данных является головным. Он собирает много информации, делает некоторую математическую информацию и воспринимает их на сервере. Он получает данные GPS из сокета.


ЧТО ПРОБЛЕМА, КОТОРАЯ Я НАХОДИТСЯ

Suposse gps_transmitter воспринимает значение как 1,2,3,4,5 , 6,7,8,9,10 и data_uploader должны воспринимать каждое второе значение, значение, которое я фактически получаю, составляет 2,3,4,5 вместо 2,4,6. Я думаю, что проблема заключается в размере бифера. Поскольку я определил

        data, addr = sock.recvfrom(1024)
        data = data.decode("utf-8")

2,3,4,5 .., они хранятся в буфере и впоследствии (например, через каждые 10 секунд) очищаются. Существует ли какой-либо метод "гриппа sh", с помощью которого я могу буферизовать буфер sh и только что прочитать. Один метод грубой силы, который я применил для инициализации сокета каждый раз, когда l oop , Но я думаю, что это очень неэффективный метод.

while:
    sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    sock.bind((UDP_IP, UDP_PORT))
    data, addr = sock.recvfrom(1024)
    data = data.decode("utf-8")
    # do something..
    time.sleep(10)

Я новичок в реализации сокетов и underhood. Пожалуйста, предложите решение

...