0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何创建Windows 10 Arduino应用程序

454398 来源:网络整理 作者:网络整理 2019-12-03 08:53 次阅读

Microsoft将全力投入Windows 10,最终实现了拥有可跨平台运行的应用程序的梦想。结合对Arduino的官方支持,您可以使用一个功能强大的新工具:能够轻松创建具有与现实世界硬件连接的通用Windows应用程序的功能。

即使在这种情况下,入门方法也是如此您以前从未编程过Windows应用。

在继续阅读之前,请查看我们将要制作的演示。

我应该注意,我还没有从大约10年前开始使用Visual Studio,甚至使用C#。我是从全新安装Visual Studio的角度来解决这个问题的,而忘记了我所知道的一切。

如果您已经对Windows应用程序编程非常有经验,或者正在寻找一种简单的方法来要开始在没有Arduino东西的情况下在Windows中进行编程,请尝试Ryan制作简单的Visual Basic应用程序的指南。绝对的编程初学者可能想先阅读我的Programming 101(第2部分)文章。

您应该熟悉一些初学者的Arduino项目(甚至可以阅读我们的Arduino指南),但这可能是您第一次尝试创建真正的计算机软件来与之交互。

下载

首先:您需要加入Windows Insider计划才能获取 Visual Studio 2015 的最新预览版和 Windows 10 Preview 的最新版本。立即执行-免费。 Windows 10是开发人员预览版,不应安装为主要操作系统

加入Windows Insider程序,然后下载Windows 10技术预览版

获取Visual Studio 2015 Community Edition的预览版[不再可用]。

Visual Studio 是Microsoft自己的开发环境,我们将使用它来创建C#Windows应用程序。

为什么要使用C#? 与Java极为相似,它是一种相对简单的编程语言,对于初学者来说,它可以启动并运行可运行的应用程序,但功能强大到足以继续创建一些令人惊叹的应用程序(甚至游戏:C#是Unity脚本语言)选择-请查看我们的免费电子书,《使用Unity编程游戏的初学者指南》。

如果尚未下载,请从官方Arduino.cc下载 Arduino IDE 。网站,然后将标准固件安装到板上。您可以在示例-》 Firmata -》 标准固件下找到它。这只是将其变成“哑”串行设备,它将执行我们的应用程序告诉它的所有操作–板上本身没有应用程序逻辑,只有我们的应用程序与连接到Arduino的任何传感器或输出设备之间的接口

就接线而言,您可以如下所示将LED直接粘贴到引脚13和GND,或者使用板载LED。您还需要将一个可变电阻器(我使用了10k线性电位计)接入A0(显然,相应的支脚也位于GND和+ 5v上)。

最后,从GitHub [不再可用]下载Remote Wiring软件包。这是我们需要添加的层,它将使我们的Windows应用程序能够与Arduino对话。

创建应用程序

继续并打开Visual Studio。如果这是您第一次运行它,则可以选择登录。如果愿意,请忽略它。选择 Visual C#作为开发选项,然后继续;无论哪种方式,都需要花费几分钟的时间来准备首次使用Visual Studio。

使用模板 Visual C#-》 空白应用程序(Windows Universal)创建一个新项目)。我称我为“ Arduino测试”,但这没关系。

这时,我遇到了有关必须将Windows 10切换到Windows 10的错误。开发人员模式(如果我想实际运行该应用程序)。继续执行此操作,尽管如果您发现Windows 10的构建在该设置下崩溃,则这是一个已知的错误,您将需要使用组策略编辑器启用开发人员模式。

下一步,右键单击解决方案资源管理器中的任意位置(在右侧),然后选择添加-》 现有项目。

导航至从Github下载Remote Wiring文件的位置-如果已解压缩,则应为名为 remote-wiring-develop 的文件夹。在其中可以找到 Microsoft.Maker.win10 ;在其中,您会发现另外3个文件夹。反过来,通过在这三个文件夹中导航并找到项目文件来添加每个文件。

如果收到有关“找不到XAML 8.2文件”的任何错误,则说明您使用的Visual Studio版本错误或没有还没有安装开发人员工具。返回本文开头,确保已下载并安装了两个链接的Visual Studio文件。

您刚刚添加的这3个项目只是Arduino界面的不同层。在解决方案资源管理器中,如果右键单击并选择 Dependencies -》 Build Dependencies ,则可以查看哪些层取决于哪个( Serial 》不依赖任何内容; Firmata 依赖于Serial; RemoteWiring 依赖于两者)。您需要在此处进行的唯一更改是从下拉列表中选择您的项目,然后选中每个框以表明您的项目依赖于所有其他项目。

最后一步:再次从解决方案资源管理器中,右键单击项目下的参考项目,然后选择添加参考。从左侧导航到 Windows Universal ,然后在 Microsoft Visual C ++ AppLocal Runtime Package 旁边打钩。

下一步导航到 Projects (也在同一对话框的列表中) (在左侧),并选中三个 Microsoft.Maker 项目中的每个项目旁边的框。

那很难超出了应有的程度,但是您只需要执行一次即可;现在我们可以从编程中获得乐趣–我保证这并不可怕。

编程

如果您在后续操作中遇到困难,可以在Pastebin上找到完整的代码。无论如何,我还是强烈建议您仔细阅读下面的说明,以便我可以解释代码的实际作用。

首先,我们需要添加一些代码,表明我们需要USB端口才能与Arduino通信。从解决方案资源管理器中找到 Package.appxmanifest 文件,然后双击进行编辑。我们需要在此处粘贴一些代码–从技术上讲,我们将“插入子节点”,因为它是一个XML文件,但是只需将整个部分替换为下面的代码即可,如下所示:

如果您使用的是蓝牙,或者针对的是Win8.1而不是10,则确切的代码会有所不同,但以下内容适用于Windows 10,USB连接。

转到构建菜单-》 重建解决方案,并确保没有收到任何错误。

从解决方案资源管理器中,展开 MainPage.xaml 节点。双击将加载表单设计器,稍后我们将返回,但现在打开 MainPage.xaml.cs ,其中包含我们应用程序背后的主要逻辑。

在第一部分中添加两行,以表明我们将“使用” Arduino位。

using Microsoft.Maker.serial;

using Microsoft.Maker.RemoteWiring;

我还添加了一行以表示我们将使用 System.Diagnostics; ,这使我们能够使用 Debug.WriteLine()函数将调试消息输出到IDE。

首先,让我们定义一些我们将始终使用的变量。在 public MainPage()函数声明之前添加这些行。

UsbSerial connection;

RemoteDevice arduino;

UInt16 lastvalue;

下一步,跳转到MainPage()函数–这称为构造函数,并且该函数会在创建我们的应用后立即被调用,因此我们使用它来设置所有内容。

首先,添加一行以建立到特定USB设备的USB串行连接(

connection =new UsbSerial(“VID_2341”, “PID_0043”);

注意,标准Arduino Uno的USB ID已被编码到模块中,但是您可以从设备管理器进行验证。 》-》 端口(COM和LPT)-》 Arduino Uno -》 详细信息选项卡-》 硬件ID 。

然后在其后添加以下几行。

arduino = new RemoteDevice(connection);

connection.ConnectionEstablished += OnConnectionEstablished;

connection.begin(57600, SerialConfig.SERIAL_8N1);

正在发生一些事情这里。首先,我们创建一个RemoteDevice对象-记住,这一层为我们提供了许多Arduino命令-并将其命名为“ arduino”。下一行附加到ConnectionEstablished事件,表示“一旦成功建立USB连接,请运行名为OnConnectionCreate()的函数。”。

最后一个命令使用8N1位模式通知连接已经以57600的波特率开始。

您还需要立即创建该OnConnectionEstablished()函数,因此将其移出MainPage()函数,只是制作一个空白函数,如下所示。

private void OnConnectionEstablished()

{

// LOGIC HERE

}

跳回到我前面提到的表单设计器(如果您忘记了如何:双击《解决方案资源管理器中的strong》 MainPage.xaml )。创建两个按钮。为此,请打开“工具箱”标签,该标签会垂直固定在屏幕左侧。将两个按钮拖到页面上,然后标记为 On 和一个 Off 。

选择第一个按钮,然后从右下角的“属性”框中将其命名为“ OnButton”。单击小图标-这是事件和操作列表,用于指定与表单元素进行交互时发生的情况。在 Click 字段中键入“ OnButtonClick”。

按Enter键时,它将自动为该特定按钮事件创建代码并加载标准代码视图。切换回现在是表单设计者,并且对“关闭”按钮执行相同的操作,但是这次将其称为“ OffButton”和“ OffButtonClick”。当您到达那里时,请继续并将其后面的主窗口表单命名为“页面”-我们稍后将使用它。现在,您应该具有类似于以下屏幕截图的内容:

再次切换回设计器片刻,然后再次对每个按钮进行设置 isEnabled 属性设置为 False 。您可以通过直接在XAML代码视图中键入属性来执行此操作,也可以在“属性”框中找到该复选框(如果仍在“动作”视图中,则单击“扳手”),该复选框位于展开的 Common

这不是必需的,但是禁用按钮是一个好习惯,直到我们确定已插入并连接了Arduino。

要重新启用它们,将以下内容添加到OnConnectionEstablished()函数。现在,不必太担心代码的确切含义,这只是您应该在现代Windows应用程序中处理表单更新以确保良好性能的方式。连接到Arduino之后,将按钮的 IsEnabled 属性设置为true。

private void OnConnectionEstablished()

{

// enable the on off buttons

var action = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler(() =》 {

OnButton.IsEnabled = true;

OffButton.IsEnabled = true;

}));

arduino.pinMode(14, PinMode.ANALOG);

arduino.AnalogPinUpdatedEvent += MyAnalogPinUpdateCallback;

Debug.WriteLine(arduino.analogRead(14));

}

您还将看到更加熟悉的pinMode()语句,说我们在引脚14上有一个模拟输入(有13个数字引脚,所以A0从14开始计数)。然后,我们有了另一个事件声明–当模拟引脚值更新时,调用函数MyAnalogPinUpdateCallback。

最后,我们需要编辑按钮单击事件,并确定模拟输入更改时会发生什么。让我们从按钮开始。我们可以使用与常规Arduino代码类似的函数名称来与Arduino交互,如下所示:

arduino.digitalWrite(13, PinState.HIGH);

将其粘贴到onButton事件中,并将其粘贴到offButton中:

arduino.digitalWrite(13, PinState.LOW);

简单。来自Arduino的模拟输入有些棘手,但这就是我的想法。

public void MyAnalogPinUpdateCallback(byte pin, UInt16 value)

{

if(value-lastvalue 》5 || lastvalue-value 》 5){ Debug.WriteLine(“Pin A” + pin + “ is now ” + value);

var action = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler(() =》 {

byte num = Convert.ToByte(value / 4);

Page.Background = new SolidColorBrush(Windows.UI.Color.FromArgb(255, num, num, Convert.ToByte(255 -num)));

}));

}

lastvalue = value;

}

请注意,我正在存储我们从引脚接收到的先前值(称为lastValue);这使我们能够检查该值有多少变化,并且仅在差异显着时才作出反应(一种信号平滑)。如果它在任一方向上的变化都超过5(值的整个范围是024,那么我们将通过更改Page元素的RGB背景颜色值来做出反应。

因为我们只有一个数字和我一起工作时,我很着急,在这里用制作R,G和B所需的3个数字对事情稍作改动。您可能会想出一些更漂亮的东西。

完成

就是这样–运行代码,您应该会看到类似于上面的屏幕截图的内容。这些按钮将打开和关闭LED,可变电阻器将改变背景。如果遇到问题,请不要忘记完整的代码。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • WINDOWS
    +关注

    关注

    3

    文章

    3438

    浏览量

    87140
  • 应用程序
    +关注

    关注

    37

    文章

    3133

    浏览量

    56364
  • Arduino
    +关注

    关注

    184

    文章

    6426

    浏览量

    184801
收藏 人收藏

    评论

    相关推荐

    【从0开始创建AWTK应用程序创建应用程序并在模拟器运行

    AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何从0开始创建AWTK应用程序,包括搭建开发调试环境、使用AWTK创建Hello工程并在模拟器上运行、将AWTK应用程序移植
    的头像 发表于 12-01 08:24 217次阅读
    【从0开始<b class='flag-5'>创建</b>AWTK<b class='flag-5'>应用程序</b>】<b class='flag-5'>创建</b><b class='flag-5'>应用程序</b>并在模拟器运行

    【从0开始创建AWTK应用程序】开发及调试环境搭建

    AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何从0开始创建AWTK应用程序,包括搭建开发调试环境、使用AWTK创建Hello工程并在模拟器上运行、将AWTK应用程序移植
    的头像 发表于 11-11 10:00 286次阅读
    【从0开始<b class='flag-5'>创建</b>AWTK<b class='flag-5'>应用程序</b>】开发及调试环境搭建

    OneInstall Windows驱动和应用程序工具包

    电子发烧友网站提供《OneInstall Windows驱动和应用程序工具包.exe》资料免费下载
    发表于 08-03 11:26 0次下载
    OneInstall <b class='flag-5'>Windows</b>驱动和<b class='flag-5'>应用程序</b>工具包

    OneInstall驱动程序应用程序工具包为Windows

    电子发烧友网站提供《OneInstall驱动程序应用程序工具包为Windows.exe》资料免费下载
    发表于 08-02 14:58 0次下载
    OneInstall驱动<b class='flag-5'>程序</b>和<b class='flag-5'>应用程序</b>工具包为<b class='flag-5'>Windows</b>

    如何创建一个简单但完整的原生WoA WinUI3应用程序

    在本指南中,您可以学习如何创建一个简单但完整的原生WoA WinUI3应用程序。 微软最近发布了WinUI3.0,它运行在.NET 5.0上,运行在配备AArch64处理器(ARM64)、英特尔
    发表于 08-02 09:57

    OneInstall Windows驱动程序应用程序工具

    电子发烧友网站提供《OneInstall Windows驱动程序应用程序工具.exe》资料免费下载
    发表于 07-28 16:44 0次下载
    OneInstall <b class='flag-5'>Windows</b>驱动<b class='flag-5'>程序</b>和<b class='flag-5'>应用程序</b>工具

    OneInstall Windows驱动程序应用程序

    电子发烧友网站提供《OneInstall Windows驱动程序应用程序.exe》资料免费下载
    发表于 07-28 14:25 0次下载
    OneInstall <b class='flag-5'>Windows</b>驱动<b class='flag-5'>程序</b>和<b class='flag-5'>应用程序</b>

    OneInstall Windows驱动程序应用程序工具包分享

    电子发烧友网站提供《OneInstall Windows驱动程序应用程序工具包分享.exe》资料免费下载
    发表于 07-27 09:29 0次下载
    OneInstall <b class='flag-5'>Windows</b>驱动<b class='flag-5'>程序</b>和<b class='flag-5'>应用程序</b>工具包分享

    OneInstall Windows驱动程序应用程序工具包

    电子发烧友网站提供《OneInstall Windows驱动程序应用程序工具包.exe》资料免费下载
    发表于 07-26 17:34 0次下载
    OneInstall <b class='flag-5'>Windows</b>驱动<b class='flag-5'>程序</b>和<b class='flag-5'>应用程序</b>工具包

    Arduino做一个语音应用程序来打开和关闭警报

    电子发烧友网站提供《用Arduino做一个语音应用程序来打开和关闭警报.zip》资料免费下载
    发表于 07-10 10:46 0次下载
    用<b class='flag-5'>Arduino</b>做一个语音<b class='flag-5'>应用程序</b>来打开和关闭警报

    使用Arduino和处理Android应用程序DIY车速表

    电子发烧友网站提供《使用Arduino和处理Android应用程序DIY车速表.zip》资料免费下载
    发表于 07-06 11:23 0次下载
    使用<b class='flag-5'>Arduino</b>和处理Android<b class='flag-5'>应用程序</b>DIY车速表

    适用于古老的Windows 3.1 PC的ChatGPT应用程序WinGPT

    有人为Windows 3.1 PC创建了一个ChatGPT应用程序。WinGPT将OpenAI的ChatGPT非常基本的版本引入了一个可以在古老的386芯片上运行的应用程序中。它是由W
    的头像 发表于 07-03 16:40 548次阅读
    适用于古老的<b class='flag-5'>Windows</b> 3.1 PC的ChatGPT<b class='flag-5'>应用程序</b>WinGPT

    用于控制Arduino 10开关的PC应用程序

    电子发烧友网站提供《用于控制Arduino 10开关的PC应用程序.zip》资料免费下载
    发表于 06-28 15:30 0次下载
    用于控制<b class='flag-5'>Arduino</b> <b class='flag-5'>10</b>开关的PC<b class='flag-5'>应用程序</b>

    使用Arduino Nano 33构建嵌入式语音识别应用程序

    电子发烧友网站提供《使用Arduino Nano 33构建嵌入式语音识别应用程序.zip》资料免费下载
    发表于 06-28 14:50 1次下载
    使用<b class='flag-5'>Arduino</b> Nano 33构建嵌入式语音识别<b class='flag-5'>应用程序</b>

    带有RT-Thread的Arduino应用程序

    电子发烧友网站提供《带有RT-Thread的Arduino应用程序.zip》资料免费下载
    发表于 06-14 11:22 5次下载
    带有RT-Thread的<b class='flag-5'>Arduino</b><b class='flag-5'>应用程序</b>