我的步进电机出现问题。我编写了arduino代码,它可以在从串行终端或tera术语发送命令时起作用。当我按下“R”步进电机连续旋转时,当我按“P”时,电机停止旋转。我的问题是为什么这些命令在从C#应用程序发送时不起作用?当我尝试步进电机只需转一步。从串行监视器发送命令和C#app之间有什么区别吗?
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");
}
答案 0 :(得分:1)
SerialPort.WriteLine()
添加"\r\n"
。 \r
将立即终止接收端的do{ ... }while()
循环。
所以使用
private void button5_Click(object sender, EventArgs e)
{
//serialPort.WriteLine("R");
serialPort.Write("R");
}
答案 1 :(得分:0)
使用命令serial.parseInt();
代替serial.read
并从c#发送字符串。