Я пытаюсь говорить Arduino с сетевым экраном от клиента Python.Я получаю (что, кажется,) ненужные значения на стороне сервера Arduino, как только клиент Python пытается подключиться.Я получаю эти значения еще до того, как пытаюсь отправить какие-либо данные на стороне Python.
Я сделал минимальный пример, основанный на примере EthernetServer из документации Arduino.Единственное, что я изменил (кроме спецификаций сети), - я заставил сервер передавать данные, которые он получает, через последовательное соединение, а не обратно клиенту.
Код сервера Arduino:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = {0x90, 0xA2, 0xDA, 0x00, 0xCD, 0x38};
byte ip[] = {10, 1, 30, 210};
byte gateway[] = { 10, 1, 30, 0 };
byte subnet[] = { 255, 255, 0, 0 };
EthernetServer server = EthernetServer(50000);
void setup()
{
// initialize the ethernet device
Ethernet.begin(mac, ip, gateway, subnet);
// start listening for clients
server.begin();
Serial.begin(9600);
}
void loop()
{
// if an incoming client connects, there will be bytes available to read:
EthernetClient client = server.available();
if (client == true) {
// read bytes from the incoming client and write them back
// to any clients connected to the server:
Serial.write(client.read());
}
}
Клиентский код Python, который я запускаю после того, как Arduino было дано время для запуска:
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('10.1.30.210', 50000))
client_socket.close()
Я ничего не получаю в последовательном потоке до запуска кода Python.Как только он запустится, я получаю (казалось бы) бесконечный поток байтов по последовательному каналу.Вот пример:
j!ðé¸Xta¼#ò´çÈÂlÊC`»\S513ÙCJèÙÒ Í([Ôø#Q_$(Ìs.)RlO&BÏ$6êçÁFøå¨ÝõVé]üEº_Tà*4V[¡¬íÆVÓñÿpQDÒÐþoñ«.çbþÐS-8&ÓÒøHüZ¡ª£¸öÙ ÂÛÖ¨{R{&<(]$¿*PXøMÃ>i]Û¿Ãké2E)¢4WuKÕÎ%CsÉ9ïÓàä-fZàH5N6ºÞ¹A¬}CaY,Ä]Dîj!ðé¸Xta¼#ò´çÈÂlÊC`»\S513ÙCJèÙÒ Í([Ôø#Q_
Кто-нибудь знает, что может вызвать это?Откуда Arduino читает эти значения?Как я могу заставить это прекратить делать это и начать читать то, что я посылаю с client_socket.send()
вместо этого?