Я пытаюсь собрать данные с датчиков, подключенных к Raspberry Pi, и отправить их на свой ноутбук для некоторой обработки. Я написал очень простой сервер Matlab (для моего ноутбука)
t = tcpip('127.0.0.1', 42069, 'NetworkRole', 'server');
fopen(t);
flag = true;
while flag
if t.BytesAvailable > 0
t.BytesAvailable
raw_data = fread(t, t.BytesAvailable);
data = typecast(uint8(raw_data), 'double');
current_x = data(1);
current_y = a.cell_size*a.rows - data(2);
current_th = -data(3);
flag = false;
end
end
.
.
.
fclose(t)
В моем PI я написал следующий класс для обработки отправки данных.
class LocalizationClient():
#TCP_IP = '127.0.0.1'
TCP_IP = '192.168.1.5'
TCP_PORT = 42069
BUFFER_SIZE = 1000
# MESSAGE = "Hello, World!"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
def __init__(self):
self.s.connect((self.TCP_IP, self.TCP_PORT))
print("connected to server")
def sendData(self,MESSAGE):
try:
self.s.send(MESSAGE)
except BrokenPipeError as e:
print(e)
self.close()
raise RuntimeError()
В моем коде драйвера я создаю объект и пытаюсь отправить сообщение следующим образом:
lo_c = lc.LocalizationClient()
lo_c.sendData(np.array([float(x), float(y), float(th)]))
.
.
.
for x in range(50):
measures = lidar.measures
measures = np.append([float(dx), float(dy), float(dth)], measures)
lo_c.sendData(measures)
time.sleep(.2)
Все это работало нормально и денди, пока я просто тестировал петлю на своем ноутбуке, но когда я попытался поместить его на пи, я получаю следующую ошибку на стороне клиента python:
подключен к серверу [Errno 32] Неисправность канала
Traceback (most recent call last):
File "/home/pi/Desktop/EXAMPLES/LocalizationClient.py", line 21, in sendData
self.s.send(MESSAGE)
BrokenPipeError: [Errno 32] Broken pipe
Вроде подключение еще работает, но при попытке отправить на сервер клиент выдает ошибку. Сервер выглядит нормально, и я пока не пытаюсь отправить какие-либо данные обратно клиенту. Я уже некоторое время ломаю голову над этим, и любая помощь будет оценена по достоинству.
ps некоторые подробности о настройке сети, если это поможет, я перевел pi в режим ad-hoc с IP-адресом, статически назначенным как 192.168.1.1, и подключил свой macbook к созданной сети. Моему Mac назначен статический IP-адрес 192.168.1.5.