[英]Serial Writing c# windows forms Arduino
我正在尝试通过串行端口使用Windows窗体应用程序与我的Arduido通信,我没有收到错误,但由于某种原因它无法正常工作。
我知道它不是串行连接或arduino,因为我尝试了另一个VB代码来尝试打开和关闭LED灯并成功完成,所以问题出在我的C#代码中
我已经导入了正确的名称空间
using System.IO;
using System.IO.Ports;
我在表单类中定义了一个串行端口对象
partial class Form1 : Form
{
SerialPort sp = new SerialPort();
...
并在加载事件中对其进行配置
private void Form1_Load(object sender, EventArgs e)
{
sp.Close();
sp.PortName = "com7";
sp.BaudRate = 9600;
sp.DataBits = 8;
sp.Parity = Parity.None;
sp.StopBits = StopBits.One;
sp.Handshake = Handshake.None;
sp.Encoding = System.Text.Encoding.Default;
...
而且我已经使用keyPress事件来尝试写入串行端口
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Up)
{
sp.Open();
sp.Write("u");
sp.Close();
}
else if (e.KeyChar == (char)Keys.Down)
{
sp.Open();
sp.Write("d");
sp.Close();
}
else if (e.KeyChar == (char)Keys.Right)
{
sp.Open();
sp.Write("r");
sp.Close();
}
}
任何帮助,谢谢注意:在我的应用程序中,有一个对话框可以响应我正在使用的键(向上和向下),它是否与keypress事件冲突? 以及我该如何解决
我每次需要发送命令时都不会打开/关闭串行端口。
您最好使用以下流程:
使用它来打开您的串行端口(通常,一旦启动要打开端口的软件,即开始与arduino控制器或其他设备进行通信)
private void OpenButton_Click(object sender, EventArgs e) { try { if (sp.IsOpen == false) { sp.Open();
} else { MessageBox.Show("port 7 is already opened"); } } catch (UnauthorizedAccessException ex) { MessageBox.Show(ex.Message); } }
现在,只要您按一下按钮,就只需要发送命令(写到com端口),而无需打开/关闭:
私人void Form1_KeyPress(object sender,KeyPressEventArgs e){
if (e.KeyChar == (char)Keys.Up) { //sp.Open(); sp.Write("u"); //sp.Close(); } else if (e.KeyChar == (char)Keys.Down) { //sp.Open(); sp.Write("d"); //sp.Close(); } else if (e.KeyChar == (char)Keys.Right) { //sp.Open(); sp.Write("r"); //sp.Close(); }
}
现在,如果您这样做了,但仍然无法正常工作,则需要检查命令是否正确,可能是sp.Write("u");
什么也没做!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.