首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows 10 IoT内核上访问Usb端口

在Windows 10 IoT内核上访问Usb端口
EN

Stack Overflow用户
提问于 2019-03-27 08:56:02
回答 1查看 1.2K关注 0票数 0

我正在运行一个IoT边缘模块的Windows 10 IoT核心上的一个Minnowboard。此模块需要从USB端口读取流。我们使用的是System.Io.Ports (与.net核心2.1代码兼容的.net标准版本)。

我在Windows10pro的笔记本电脑上看到了这种工作,但是它不工作IoT核心。我可以找到一些消息来源,说明由于System.Io.Ports端口的命名方案( SerialPort必须调用COM{x}才能正常工作),IoT核心上不支持SerialPort。SerialIOPrts示例来自IoT示例(https://go.microsoft.com/fwlink/?linkid=860459)的自述声明

“本示例使用标准的.NET核心System.IO.Ports API访问串行设备。这些API只适用于COM{x}的串行设备。因此,这种方法适用于Windows10 IoT企业,而不是Windows 10 IoT IoT。”

有人想办法绕过这件事吗?我可能可以让它在Windows10 IoT企业版上工作,但我真的想证明我们可以在最小的硬件/os上运行这个模块。

EN

回答 1

Stack Overflow用户

发布于 2019-03-27 10:01:40

在Windows上使用System.IO.Ports,您可以引用“IoT”。(注意:这些说明将在运行Windows10 IoT企业或Windows 17763的PC上工作。目前只支持x64体系结构。Arm32将来会来。)

(对于Azure IoT边缘模块而言)在Windows核心上访问没有端口名的串行设备(COMx),您可以使用Win32 API CreateFile。有一个用于为创建Win32控制台应用程序的项目模板。

在这里,我使用设备id创建一个示例来打开一个串行设备并进行读写:

代码语言:javascript
复制
#include <windows.h>
#include <iostream>
using namespace std;


int main()
{
    DWORD errCode = 0;
    LPCWSTR pDeviceId = L"\\\\?\\FTDIBUS#VID_0403+PID_6001+A50285BIA#0000#{86e0d1e0-8089-11d0-9ce4-08003e301f73}";

    HANDLE serialDeviceHdl = CreateFile(pDeviceId, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
    if (!serialDeviceHdl)
    {
        errCode = GetLastError();
        cout << "Open device failed. Error code: " << errCode << endl;
        return 0;
    }

    DWORD writenSize = 0;
    BOOL result = WriteFile(serialDeviceHdl, "hello", 5, &writenSize, NULL);
    if (FALSE == result)
    {
        errCode = GetLastError();
        cout << "Write to device failed. Error code: " << errCode << endl;
    }

    CHAR readBuf[5];
    DWORD readSize = 0;
    result = ReadFile(serialDeviceHdl, readBuf, 5, &readSize, NULL);
    if (FALSE == result)
    {
        errCode = GetLastError();
        cout << "Read from device failed. Error code: " << errCode << endl;
    }
}

例如,您可以通过官方示例"SerialUART“- "DeviceInformation.Id”找到设备Id。

如何在Windows上部署和调试win32 C++控制台,您可以参考这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55373166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档