我的步进电机有问题。我编写了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/