Python 클라이언트에서 이더넷 실드로 Arduino를 사용하려고합니다. Python 클라이언트가 연결을 시도하자마자 Arduino 서버 측에서 정크 값을 얻고 있습니다. 파이썬 측에서 데이터를 보내기 전에이 값을받습니다.Python 클라이언트에서 예기치 않은 값을 수신하는 Arduino EthernetServer
나는 Arduino 문서의 EthernetServer example을 기반으로 최소한의 예를 만들었습니다. 내가 (클라이언트가 아닌) 직렬 연결을 통해 수신 한 데이터를 서버로 전송하도록 변경 한 것은 (네트워크 사양 이외의) 유일한 변경 사항입니다.
아두 이노 서버 코드 :#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());
}
}
파이썬 클라이언트 코드, 나는 아두 이노가 시작하는 시간이 주어진 후에 실행
는import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('10.1.30.210', 50000))
client_socket.close()
내가이 프로그램을 실행하기 전에 직렬 스트림에 아무것도 얻지을 파이썬 코드. 그것이 실행하자마자, 나는 연속적으로 (끝없이) 끊임없이 바이트 스트림을 얻는다. 다음은 샘플입니다.
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()
으로 보내는 내용을 읽기 시작할 수 있습니까?
텔넷 클라이언트에서 서버에 연결할 때 일정한 스트림의 정크 출력도 발생합니다. – Topher