如何使用C#打开单个Arduino端口?

3
我有一款 Arduino Duemilanove USB。我只是将一个单独的LED连接到了其中一个端口上。我想使用C#来控制这个LED。是否有一个简单的示例可以做到这一点?我只需要最基本的开/关代码。

另外,我知道有一些用于.NET与Arduino通信的库。我找到的所有库都使用Firmata,但我无法让Firmata库与我的Arduino正常工作,所以我正在寻找一个使用原始串行命令的简单示例。


为什么使用C#?你在使用哪个编译器?为什么不直接使用它自带的基础语言(一种C变体)? - Dan
因为我想将它与我的现有.NET应用程序集成。我不想依赖于Arduino IDE或语言。 - user165480
我非常确定你可以在.NET和Arduino语言之间进行接口,这非常容易。你以前编写过微控制器程序吗? - Dan
5个回答

5

1

尝试将波特率设置为57600,而不是默认的115200,这样就可以希望使用Duemilanove使Firmata正常工作。老实说,我仍在努力研究Python的Firmata库,以了解它如何使用协议,以便在一个不仅仅使用Arduino作为接口的项目中使用直接串行通信。

与此同时,这个方法可以让Firmata正常工作(最简单的方法)。


0
在PC端,与COM端口通信非常简单。你所需要的只有:
System.IO.Ports.SerialPort port = new SerialPort("COM4"); //COM4 is my port. You can use yours.
port.Write(new byte[]{1},0,1);
port.Close();

然后在Arduino上:

    if (Serial.available() > 0)
    {
        val = Serial.read();
        if(val==1)
        {
            //LED ON
        }
        if(val==0)
        {
            //LED OFF
        }
    }

因此,当您向端口写入1时,LED将会亮起,如果是0,则LED将关闭。


0
视频C#与Arduino正在做这件事情,可能会有所帮助,并且它提供了源代码。

-2

我认为Firmata项目就是你一直在寻找的。

Firmata是一个用于与微控制器从主机计算机上的软件进行通信的通用协议。它旨在与任何主机计算机软件包配合使用。现在有许多语言中都有相应的对象匹配。很容易添加对象来使其他软件使用此协议。基本上,此固件建立了一种与主机软件交互的协议,以便与Arduino进行通信。目的是允许人们从主机计算机上的软件完全控制Arduino。

更多资源:

Firmata.Net项目

Arduino/firmata库为Visual C# .NET


这是自动生成的回复还是什么?我记得OP说Firmata根本不能在他的Arduino上工作... - mrduclaw
Firmata被提到,但只是因为OP无法使其工作,并不否定解决方案。我的答案仅供参考,如果不是为了mrduclaw,也可能对其他人有用。 - Andrew
1
@Andrew,所以你并没有尝试回答OP的问题,只是为了效果而重复了他已经提到过的东西? 对不起,我仍然看不出这个答案的有用性,因为OP实际上已经提到它作为解决这个问题的常规方法。 因此,如果其他人遇到类似的问题,他们已经从他的问题中得到了这个答案。 此外,它甚至没有试图回答这里的问题。 - mrduclaw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接