繁体   English   中英

串行编写C#Windows窗体Arduino

[英]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事件冲突? 以及我该如何解决

我每次需要发送命令时都不会打开/关闭串行端口。

您最好使用以下流程:

  1. 添加另一个按钮,例如说“打开”按钮。
  2. 使用它来打开您的串行端口(通常,一旦启动要打开端口的软件,即开始与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); } }

  3. 现在,只要您按一下按钮,就只需要发送命令(写到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(); } 

    }

  4. 现在,如果您这样做了,但仍然无法正常工作,则需要检查命令是否正确,可能是sp.Write("u"); 什么也没做!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM