Arduino EthernetServer从Python客户端接收到意外值

Arduino EthernetServer从Python客户端接收到意外值,python,sockets,arduino,ethernet,Python,Sockets,Arduino,Ethernet,我正试图从Python客户机使用以太网屏蔽与Arduino对话。只要Python客户机尝试连接,我就会在Arduino服务器端获得(似乎是)垃圾值。在Python端发送任何数据之前,我都会收到这些值 根据Arduino文档中的数据,我给出了一个最小的示例。我唯一改变的事情(除了网络规格)是我让服务器通过串行连接而不是返回到客户端来推送它接收的数据 Arduino服务器代码: #include <SPI.h> #include <Ethernet.h> byte mac[

我正试图从Python客户机使用以太网屏蔽与Arduino对话。只要Python客户机尝试连接,我就会在Arduino服务器端获得(似乎是)垃圾值。在Python端发送任何数据之前,我都会收到这些值

根据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代码之前,我在串行流中没有得到任何信息。它一运行,我就得到了一个(似乎)永无止境的串行字节流。以下是一个示例:

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_
j!本校自2014年10月18日日以来,该校的一名校方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方第二,第三,第四,第五,第五,第五,第五,第五,第五,第五,第五_

有人知道这是什么原因吗?Arduino从哪里读取这些值?我如何让它停止这样做,并开始读取我用
客户端\u socket.send()发送的内容?

您是否尝试过发送串行数据包而不是使用以太网

还要检查波特率

##set to your serial port
ser = serial.Serial('/dev/ttyUSB0', 19200)

## check serial port
def checkokay():
  ser.flushInput()
  time.sleep(3)
  line = ser.readline()
  time.sleep(3)

ser.write('1')
另请看这篇文章:


您是否尝试过发送串行数据包而不是使用以太网

还要检查波特率

##set to your serial port
ser = serial.Serial('/dev/ttyUSB0', 19200)

## check serial port
def checkokay():
  ser.flushInput()
  time.sleep(3)
  line = ser.readline()
  time.sleep(3)

ser.write('1')
另请看这篇文章:


事实证明,Fedora软件包管理器中的Arduino开发环境版本存在问题。我试图从源代码更新到最新版本,但由于构建过程中Java部分的一些错误而受阻。最后,我将在Windows VM中编译后使用的相同代码加载到Arduino上;在完美地


虽然不是最好的解决方案,但它完成了任务。

这是Fedora软件包管理器中Arduino开发环境版本的问题。我试图从源代码更新到最新版本,但由于构建过程中Java部分的一些错误而受阻。最后,我将使用的代码加载到Ardui上在Windows虚拟机中编译后没有问题;它工作得非常好


这不是最好的解决方案,但它完成了任务。

当从telnet客户端连接到服务器时,我也会收到源源不断的垃圾输出。当从telnet客户端连接到服务器时,我也会收到源源不断的垃圾输出。