CreateFile()串行通信问题[重复]

2023-12-31

我试图通过 USB 端口(名为 COM15)进行一些串行通信,但出现错误。这是发生错误的代码:

HANDLE myPortHandle = CreateFile("COM15",
                                  GENERIC_READ | GENERIC_WRITE,
                                  0,
                                  NULL,
                                  OPEN_EXISTING,
                                  0,
                                  NULL);

if (myPortHandle == INVALID_HANDLE_VALUE)
{
    DWORD lastError = GetLastError();
    cout<<"ERROR HERE! = "<<lastError<<endl;
}

每次编译程序时,打开的串行端口的句柄== INVALID_HANDLE_VALUE。我在 CreateFile() msdn 文档中阅读了如何使用 GetLastError() 来获取“扩展错误信息”。现在...当我运行代码时,GetLastError() 返回值:2

在 GetLastError() 的 msdn 文档中,它说:

“设置最后一个错误代码的每个函数的文档的返回值部分注明了该函数设置最后一个错误代码的条件。”

我尝试在 CreateFile() msdn 文档的返回值部分中查找“2”的含义,但在任何地方都找不到其含义。

问题:

1)为什么会发生这种情况:myPortHandle == INVALID_HANDLE_VALUE?

2)另外,如果有人可以指导我在 msdn 文档中查找 GetLastError() 返回的“2”的含义,那就太棒了!


Windows 错误代码记录如下:http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382.aspx http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382.aspx

您的错误代码是ERROR_FILE_NOT_FOUND。意思就是COM15找不到。根据本文 https://support.microsoft.com/kb/115831/en-gb?wa=wsignin1.0您需要使用名称:"\\\\.\\COM15".

CreateFile()可用于获取串行端口的句柄。这 “Win32 程序员参考”条目中的“CreateFile()”提到了这一点 共享模式必须为0,创建参数必须为OPEN_EXISTING, 并且模板必须为 NULL。

当您使用“COM1”到“COM9”作为创建文件时,CreateFile() 成功。 文件名;然而,该消息INVALID_HANDLE_VALUE是 如果您使用“COM10”或更高版本,则返回。

如果端口的名称是\\.\COM10,指定的正确方法 调用CreateFile()时的串口如下:

CreateFile(
  "\\\\.\\COM10",     // address of name of the communications device
  fdwAccess,          // access (read-write) mode
  0,                  // share mode
  NULL,               // address of security descriptor
  OPEN_EXISTING,      // how to create
  0,                  // file attributes
  NULL                // handle of file with attributes to copy
);

注意:此语法也适用于端口 COM1 到 COM9。某些主板会让您自己选择端口名称。这 语法也适用于这些名称。

或者从文档到CreateFile http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858.aspx itself:

CreateFile函数可以创建一个通信句柄 资源,例如串口COM1。对于通信资源, dwCreationDisposition 参数必须为 OPEN_EXISTING, dwShareMode 参数必须为零(独占访问),并且 hTemplateFile 参数必须为 NULL。读、写或读/写 可以指定访问,并且可以打开句柄进行重叠 输入/输出。

要指定大于 9 的 COM 端口号,请使用以下语法:\\.\COM10。此语法适用于所有端口号和硬件 允许指定 COM 端口号。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CreateFile()串行通信问题[重复] 的相关文章

随机推荐

  • 如何在 C# 中比较两个 JSON 并忽略某些键?

    我有两个需要比较的 JSON 对象 但是我想排除某些属性 有没有一种有效的方法可以做到这一点 而无需迭代所有键 我正在使用 JSON NET 它具有 JToken DeepEquals 并且非常出色 但它不允许我排除某些键 Thanks 好
  • 如何在qt中通过QSignalMapper传递参数

    我想用Qt制作一个下载器 我在使用 QSignalMapper 时遇到问题 QNetworkReply中有信号 downloadProgress qint64 qint64 我有很多下载任务 所以我使用 QSignalMapper 来处理信
  • _CRTDBG_MAP_ALLOC 不显示文件名

    我正在尝试检测内存泄漏 并且使用 make CRTDBG MAP ALLOC 宏来定位泄漏区域 所以我定义 MACRO 如下 ifdef DEBUG define CRTDBG MAP ALLOC include
  • Tomcat自行关闭

    我在 CentOS 6 5 64 位和 OpenJDK 1 7 64 上运行 Tomcat 7 0 53 我有几台服务器 偶尔 例如每周随机一次 Tomcat 会正常关闭自己 我已经研究这个问题几个月了 但找不到原因 唯一的模式似乎是很长一
  • 命名元组错误[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试使用namedtuple 将Python 对象序列化为JSON 但我收到这个错误 谷歌没有帮助 Traceback most r
  • ASP.NET MVC:在数据输入表单中搜索

    感谢您的阅读 我正在构建一个数据输入表单 我试图找出一种方法 让用户提供一个条件 例如姓氏 在员工表中搜索符合条件的所有员工 以他们可以选择正确员工的方式显示结果 然后通过该员工的 ID 返回到数据输入表单 以便他们可以完成记录并保存 Th
  • HTML2PDF 对日语 (utf8) 的支持不起作用

    对于 PHP 中的报告生成 我使用 HTML2PDF 它适用于英语 但无法为日语提供正确的输出 如何在 hHTML2PDF 库中设置 utg8 字符 有没有办法在 HTML2PDF 库中实现这一点 我得到的输出类似于 而不是日语文本 在 v
  • 在 iOS 中将日期格式化为 dd-MMM

    我一直在寻找这个但找不到它 我在 NSDictionary 中有一个包含 NSDate 的对象 现在标准的 NSDate 对象相当长 我想以 dd MMM 格式向用户显示 例如 原始日期可能是2012 04 23 00 00 00 0000
  • @-moz-document url-prefix() 的作用是什么?

    在西蒙 科里森的新中旧的响应式网页设计 https colly com v4 在CSS中 有几个这样的声明 moz document url prefix fl float left margin 12px 4px 0 0 padding
  • AFHTTPSessionManager 使用基于 SOAP 的服务

    我查了几个帖子 this https stackoverflow com questions 24181844 how to convert afnetworking service invoke to use afhttpsessionm
  • 作为 System.Net.Mail 附件的流为 0 字节

    我有一个项目 我正在使用 PDF 生成器将文件发送给用户 我们希望为用户提供将此文件附加到电子邮件的选项 但我们在同时使用 Stream 对象和附件逻辑时遇到了问题 我们从 ABCpdf 开始 它有两种保存方法 它可以保存到 Stream
  • 为什么JVM堆不断增长?

    我编写了一个简单的程序并使用 jconsole exe 来监视其堆大小 public class HeapTest public static void main String args while true Here is the res
  • 构建通知时出错

    我正在使用这个教程http www vogella com articles AndroidNotifications article html http www vogella com articles AndroidNotificati
  • 通过 jquery ajax 提交联系表单时出错

    基于此question https stackoverflow com questions 15767317 initialize javascript in php script for a contact form我不得不重写我的联系表
  • AngularJS ng-repeat 处理空列表情况

    我认为这将是一个很常见的事情 但我找不到如何在 AngularJS 中处理它 假设我有一个事件列表并想用 AngularJS 输出它们 那么这很简单 ul li event title li ul 但是当列表为空时我该如何处理呢 我想要一个
  • 为什么我收到“无法发送 GpuChannelMsg_CreateCommandBuffer”错误?

    我收到以下错误 DevTools listening on ws 127 0 0 1 49722 devtools browser e3cdef84 2a4f 4829 8cb2 4baf45efa446 0903 065243 722 E
  • strcpy() 和字符串数组

    我需要将用户的输入存储到字符串数组中 include
  • Ninject 和 DataContext 处置

    我正在使用 Ninject 从内核检索 DataContext 我想知道 Ninject 是否自动处置 DataContext 或者他如何处理 dispose 行为 根据我自己的经验 我知道处理数据上下文非常重要 并且每当您创建 DataC
  • 使用 R 合并重复列

    我有一个包含 4 列的表 其中第 1 3 列和第 2 4 列代表相同的变量 Codes Description Codes Description xxxxx describes xxxxx zzzzz describes zzzzz yy
  • CreateFile()串行通信问题[重复]

    这个问题在这里已经有答案了 我试图通过 USB 端口 名为 COM15 进行一些串行通信 但出现错误 这是发生错误的代码 HANDLE myPortHandle CreateFile COM15 GENERIC READ GENERIC W