你好,我是一个完整的新手,我问的是愚蠢的问题,所以感谢你的时间......
我正在尝试将一个字符串命令发送到我拥有的设备 - 我通过USB控制的“机器人” - >串行端口。这个字符串应该是这样的:01013100010010它应该告诉某个步骤电机做出特定的步骤。每次我尝试发送那样的字符串:01013100010010它什么都不做,但如果我打开超级终端并发送它就像它执行命令一样。
我需要将其转换为特殊内容还是其他问题?
另一件事是如何在按下按钮时分配要发送的字符串“:01013100010010”,以便有人可以向我显示如何执行此操作的示例代码,即在按钮单击时发送数据我将不胜感激!
以下是我现在的代码,它是一个简单的用户界面:
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);}
}
}
}
答案 0 :(得分:0)
添加:
serialPort1.NewLine = "\r\n";
答案 1 :(得分: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();
来源:我自己