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上有一个interwetten与威廉的赔率体系 输入(有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

    文章

    3544

    浏览量

    88664
  • 应用程序
    +关注

    关注

    37

    文章

    3268

    浏览量

    57699
  • Arduino
    +关注

    关注

    188

    文章

    6469

    浏览量

    187016
收藏 人收藏

    评论

    相关推荐

    android手机上emulate应用程序的方法

    在Android手机上模拟(emulate)应用程序的方法通常涉及到使用Android模拟器(Emulator)或类似的工具来模拟Android环境,以便在没有实际物理设备的情况下运行和测试应用程序
    的头像 发表于 12-05 15:33 258次阅读

    AWTK-WEB 快速入门(1) - C 语言应用程序

    导读AWTK可以使用相同的威廉希尔官方网站 栈开发各种平台的应用程序。有时我们需要使用Web界面与设备进行交互,本文介绍一下如何使用C语言开发AWTK-WEB应用程序。用AWTKDesigner新建一个应用程序
    的头像 发表于 11-27 11:46 202次阅读
    AWTK-WEB 快速入门(1) - C 语言<b class='flag-5'>应用程序</b>

    使用OpenVINO™ ElectronJS中创建桌面应用程序

    的用户体验。 1 应用程序概览:一种简单的背景虚化方法 这个演示展示了如何在 Node.js 环境中使用 OpenVINO 工具包实现背景虚化,并通过 Electron.js 创建的直观桌面界面进行
    的头像 发表于 11-25 11:35 167次阅读
    使用OpenVINO™ ElectronJS中<b class='flag-5'>创建</b>桌面<b class='flag-5'>应用程序</b>

    Windows 10将于2025年终止免费更新,微软力推Windows 11

    近日,微软在其官方网站上发布了一则通知,宣布自2025年10月14日起,将正式停止为Windows 10操作系统提供来自Windows更新的免费软件更新、威廉希尔官方网站 支持以及安全修复
    的头像 发表于 11-05 10:35 367次阅读

    ADL-GPIB IEEE 488命令集函数参考手册

    使用 Microsoft Visual C/C++ 创建一个 Windows 2000/NT/98 ADL-GPIB 应用程序 通过使用 ADL-GPIB 和 Microsoft Visual C/C++ 来
    发表于 11-04 17:43 2次下载

    创通联达Snapdragon Dev Kit for Windows上市开售

    日前,创达联达宣布Snapdragon Dev Kit for Windows 正式在Arrow电子商城面向全球范围上市开售,售价为899美元。该开发套件是一款搭载骁龙X Elite的小型PC,旨在助力开发者面向下一代AI PC创建或优化
    的头像 发表于 08-20 09:25 510次阅读

    CYW20829从Eclipse为Modustoolbox创建\"新应用程序时出现错误\"的原因?

    CYW20829]从 Eclipse 为 Modustoolbox 创建\"新应用程序时出现错误\"
    发表于 05-22 06:12

    AIROC客户端控制应用程序不起作用的原因?

    正常,但当启动客户端控制应用程序并打开串行端口时,却什么也没发生--所有控件都是灰色的。 然后,我还按照说明中的建议从 Windows 10 PC 上运行 BTSpy 并进行连接 - 客户端控制
    发表于 05-21 06:56

    【从0开始创建AWTK应用程序】编译应用到RTOS平台

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

    应用程序中的服务器错误怎么解决?

    在使用应用程序时,可能会遇到服务器错误的问题。这种错误通常会导致应用程序无法正常运行 ,给用户带来不便。下面将介绍应用程序中的服务器错误及其解决方法,帮助您快速解决这一问题。
    的头像 发表于 03-12 15:13 6218次阅读

    微软Windows 10/11系统自带OneDrive卸载功能

    若您仅希望停止使用OneDrive,首先应取消与之的链接。若决心完全移除该软件,Windows 10/11用户可以点击开始菜单中的“程序”选项,并搜寻“添加或删除程序”。
    的头像 发表于 03-11 10:19 844次阅读

    如何使用Arduino设置热敏电阻来创建温度计

    在本教程中,我们将指导您如何使用Arduino设置热敏电阻以创建基本温度计。提供的原理图、试验板图和示例代码将使热敏电阻工作变得简单明了。
    的头像 发表于 02-11 10:37 2510次阅读
    如何使用<b class='flag-5'>Arduino</b>设置热敏电阻来<b class='flag-5'>创建</b>温度计

    如何将增量旋转编码器与Arduino连接

    在本教程中,您将学习如何将增量旋转编码器与Arduino连接,以读取旋钮的运动。这对于在机器人和其他应用程序创建用户界面或读取机械位置非常有用。
    的头像 发表于 02-11 10:00 1435次阅读
    如何将增量旋转编码器与<b class='flag-5'>Arduino</b>连接

    使用modustoolBox为psoc4 4100S Max Pioneer Kit创建演示应用程序失败了的原因?

    不确定这是否是最好的去处。 正在尝试使用 modustoolBox 为 psoc4 4100S Max Pioneer Kit 创建演示应用程序。 具体来说,是演示 CSD 触摸板应用程序。 在构建
    发表于 01-31 08:15

    通过实时加速器威廉希尔官方网站 实现实时应用程序Windows

    时功能应用程序。这是通过专门为实时应用程序保留一个或多个CPU来实现的,设置 Windows 适当的参数化并利用 acontis 内核驱动程序进行精确定时和直接硬件
    的头像 发表于 01-29 16:03 868次阅读
    通过实时加速器威廉希尔官方网站
实现实时<b class='flag-5'>应用程序</b>的 <b class='flag-5'>Windows</b>