C# 带有伺服电机的Arduino不响应Python中pySerial的串行输入

C# 带有伺服电机的Arduino不响应Python中pySerial的串行输入,c#,python,arduino,pyserial,C#,Python,Arduino,Pyserial,我是一个寻求帮助的笨蛋。这是我的问题。我有一个Arduino Uno,带有两个伺服电机;一个连接到针脚10,另一个连接到针脚11。我希望伺服系统根据通过串行端口从Windows上的Python发送到Arduino的指令独立移动。因此,我需要Arduino代码和Python代码。我使用了Python2.7和3.6,并安装了pySerial。到目前为止,我只能在使用C#将坐标发送到Arduino或从Arduino代码本身时移动伺服。这是代码。我不相信Arduino代码或C#代码 Arduino代码(

我是一个寻求帮助的笨蛋。这是我的问题。我有一个Arduino Uno,带有两个伺服电机;一个连接到针脚10,另一个连接到针脚11。我希望伺服系统根据通过串行端口从Windows上的Python发送到Arduino的指令独立移动。因此,我需要Arduino代码和Python代码。我使用了Python2.7和3.6,并安装了pySerial。到目前为止,我只能在使用C#将坐标发送到Arduino或从Arduino代码本身时移动伺服。这是代码。我不相信Arduino代码或C#代码

Arduino代码(归功于Michael Reeves)

此代码从窗体获取鼠标输入并将其发送到伺服。数据结构是一个类似“X90Y100”的字符串,其中字母对应伺服,数字是角度

它工作正常,伺服装置动作正常

下面是Python代码。这只是一个移动伺服的测试

import serial
port = serial.Serial("COM3", 9600)
port.write(b"X100Y70")
伺服系统不移动。有什么问题? 任何帮助都将不胜感激


谢谢。

答案在本页:

值得注意的是,上面的示例在Windows上不起作用 机器;Arduino串行设备需要一些时间来加载,当 串行连接建立后,将重置Arduino

在初始化设备之前发出的任何write()命令都将被删除 迷路的健壮的服务器端脚本将从串行端口读取,直到 Arduino声明自己已准备就绪,然后发出写入命令。 或者,也可以通过简单的 在串行连接和 打电话

我已经对其进行了测试,并添加了延迟:

import serial
import time

port = serial.Serial("COM3", 9600)
time.sleep(2)
port.write(b"X100Y70")
<>你应该考虑一种更健壮的消息格式。至少,它应该有一个终止符字符(如“\n”)<代码>串行.readString()依赖超时来确定何时收到完整的消息。这可能会导致错误。您可以将邮件格式更改为具有终止符(或固定大小):


非常感谢你!哦,我的天哪,它起作用了!明天我将尽最大努力实现对串行通信的更改。
import serial
port = serial.Serial("COM3", 9600)
port.write(b"X100Y70")
import serial
import time

port = serial.Serial("COM3", 9600)
time.sleep(2)
port.write(b"X100Y70")
void serialEvent() {
  static String serialData;
  while (Serial.available()) {
    char c = (char)Serial.read();
    if (c == '\n') {
       // Complete message, call a function to handle it
       serX.write(parseDataX(serialData));
       serY.write(parseDataY(serialData));
       // Reset for next message
       serialData = "";
    }
    else {
      // Otherwise keep building the message
      serialData += c;
    }
}