-1

嗨,我是一个完整的新手,我在问愚蠢的问题,所以谢谢你的时间......

我正在尝试向我拥有的设备发送一个字符串命令 - 我通过 USB -> 串行端口控制的“机器人”。该字符串应如下所示:01013100010010,它应该告诉某个步进电机执行特定数量的步数。每次我尝试发送这样的字符串:01013100010010 它什么都不做,但是如果我打开超级终端并像这样发送它,它会执行命令。

我需要将其转换为特殊的东西还是问题出在其他地方?

另一件事是如何分配字符串“:01013100010010”以在按下按钮时发送,因此如果有人可以向我展示如何执行此操作的示例代码,即在按钮单击时发送数据,我将不胜感激!

这是我现在拥有的代码,它是一个简单的 UI:

    private void button2_Click(object sender, EventArgs e)
    {
        if (!serialPort1.IsOpen)
        {
            serialPort1.PortName = "COM2";
            serialPort1.BaudRate = 9600;
            serialPort1.Parity = System.IO.Ports.Parity.None;
            serialPort1.DataBits = 8;
            serialPort1.StopBits = System.IO.Ports.StopBits.One;
            serialPort1.Handshake = System.IO.Ports.Handshake.None;
            serialPort1.ReadTimeout = 500;
            serialPort1.WriteTimeout = 500;
            serialPort1.DtrEnable = true;
            serialPort1.RtsEnable = true;
            serialPort1.Open();

            richTextBox1.Text = "Connected";
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if(serialPort1.IsOpen){
            string text = richTextBox1.Text;
                serialPort1.WriteLine(text);}
    }
}

}

4

2 回答 2

0

您需要在 SerialPort 上写入。要做到这一点,使用这样的东西

        serialPort1.Open();
        serialPort1.Write(@":01013100010010");
        Thread.Sleep(200);
        serialPort1.Close();

我在代码上使用 Thread.Sleep,因为在我的工作中,如果我们只是编写然后关闭端口,有时我们的设备不会收到完整的命令。

@edit:在客户端工作的示例代码

portaserial = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
portaserial.Open();
portaserial.Write(mensagem.ToString());
Thread.Sleep(500);
portaserial.Close();

来源:本人

于 2013-11-06T18:40:14.643 回答
0

添加:

serialPort1.NewLine = "\r\n";
于 2013-11-06T18:32:23.857 回答