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
    +关注

    关注

    4

    文章

    3615

    浏览量

    91601
  • 应用程序
    +关注

    关注

    38

    文章

    3338

    浏览量

    59143
  • Arduino
    +关注

    关注

    190

    文章

    6499

    浏览量

    192661
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用Windows Mesh客户端应用程序来观看CYBT-213043-MESH的环境温度信息,如何保存温度数据并将其传输到excel吗?

    现在我正在使用Windows Mesh客户端应用程序来观看CYBT-213043-MESH的环境温度信息。 我的问题是有什么方法可以保存温度数据并将其传输到excel吗?
    发表于 07-04 08:16

    请问是否可以在通用Windows平台中构建OpenVINO? GenAI C++ 应用程序

    无法在通用 Windows 平台中构建OpenVINO? GenAI C++ 应用程序
    发表于 06-24 07:35

    如何使用CYUSB3KIT-003使用GPIO访问SRAM的应用程序

    你好。我是CYUSB3的初学者。 我想创建一个使用 CYUSB3KIT-003 使用 GPIO 访问 SRAM 的应用程序。 目前我已经在我的电脑上安装了SDK,但是有什么参考资料吗?
    发表于 05-14 06:51

    基于HPM_SDK_ENV开发应用程序的升级处理

    基于HPM_SDK_ENV开发应用程序的方式HPM_SDK_ENV是先楫半导体MCU的Windows集成开发环境,其包含HPM_SDK,工具链,依赖工具(cmake,ninja,openocd等
    的头像 发表于 02-08 13:38 ?1073次阅读
    基于HPM_SDK_ENV开发<b class='flag-5'>应用程序</b>的升级处理

    TAS2521应用程序参考指南

    电子发烧友网站提供《TAS2521应用程序参考指南.pdf》资料免费下载
    发表于 12-10 13:49 ?0次下载
    TAS2521<b class='flag-5'>应用程序</b>参考指南

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

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

    AWTK-WEB 快速入门(2) - JS 应用程序

    导读AWTK可以使用相同的技术栈开发各种平台的应用程序。有时我们需要使用Web界面与设备进行交互,本文介绍一下如何使用JS语言开发AWTK-WEB应用程序。用AWTKDesigner新建一个应用程序先安装AWTKDesigner
    的头像 发表于 12-05 01:04 ?528次阅读
    AWTK-WEB 快速入门(2) - JS <b class='flag-5'>应用程序</b>

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

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

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

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

    arduino 6轴同步电机驱动程序

    arduino 6轴同步电机驱动程序。含加加减速。
    发表于 11-09 14:09 ?0次下载

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

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

    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次下载

    PCM2912应用程序的操作环境

    电子发烧友网站提供《PCM2912应用程序的操作环境.pdf》资料免费下载
    发表于 10-21 09:33 ?0次下载
    PCM2912<b class='flag-5'>应用程序</b>的操作环境

    使用OpenVINO GenAI API在C++中构建AI应用程序

    许多桌面应用程序是使用 C++ 开发的,而将生成式AI(GenAI)功能集成到这些应用程序中可能会很具有挑战性,尤其是因为使用像 Hugging Face 这样的 Python 库的复杂性。C++
    的头像 发表于 10-12 09:36 ?1188次阅读
    使用OpenVINO GenAI API在C++中构建AI<b class='flag-5'>应用程序</b>

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

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