我的步进电机有问题。我编写了arduino代码,当从串行终端或tera术语发送命令时,它可以工作。当我按下“ R”时,步进电机连续旋转,当我按下“ P”时,电机停止旋转。我的问题是,为什么这些命令从C#应用程序发送时不起作用?当我尝试步进电机时,它只会旋转一步。从串行监视器和C#应用程序发送命令之间有什么区别吗?

void loop()
{
   if (Serial.available() > 0)
   {
      int command = Serial.read();
   {

   if (command == 'R')
   {
      do {
         stepper.runSpeed();
      } while (Serial.available() == 0);
      Serial.read();
   }
   else if (command == 'P')
   {
      stepper.stop();
   }
}


C#代码:

private void button5_Click(object sender, EventArgs e)
{
    serialPort.WriteLine("R");
}

private void button6_Click(object sender, EventArgs e)
{
    serialPort.WriteLine("P");
}

最佳答案

SerialPort.WriteLine()添加"\r\n"\r将立即在接收端终止您的do{ ... }while()循环。

所以用

 private void button5_Click(object sender, EventArgs e)
 {
     //serialPort.WriteLine("R");
     serialPort.Write("R");
 }

关于c# - 由C#控制的步进电机,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25342642/

10-10 15:07