windows-7 – Windows 7上的SetCommState失败
发布时间:2020-12-14 05:39:20 所属栏目:Windows 来源:网络整理
导读:我们的代码与我们的USB COMM类设备对话,它在 Windows XP下工作正常但在Windows 7下失败.特别是对SetCommState的调用失败.这是一个简化的片段.请注意,在这种情况下,我们甚至不会更改GetCommState中的任何字段,但结果是SetCommState失败,错误代码为87(非法参数
我们的代码与我们的USB COMM类设备对话,它在
Windows XP下工作正常但在Windows 7下失败.特别是对SetCommState的调用失败.这是一个简化的片段.请注意,在这种情况下,我们甚至不会更改GetCommState中的任何字段,但结果是SetCommState失败,错误代码为87(非法参数).
DCB dcb; SecureZeroMemory(&dcb,sizeof(DCB)); dcb.DCBlength = sizeof(DCB); if (!GetCommState(m_hIDComDev,&dcb)) { DWORD dwError = GetLastError(); CloseHandle(m_hIDComDev); dlDebug(5,"SerialPort::openPort") << "GetCommState failed for" << m_portName << dwError; return 0; } dlDebug(5,"SerialPort::openPort") << m_portName << "rate" << dcb.BaudRate << "size" << dcb.ByteSize; // dcb.BaudRate = baud; // dcb.ByteSize = 8; if (!SetCommState(m_hIDComDev,"SerialPort::openPort") << "SetCommState failed for" << m_portName << dwError; return 0; } 什么想法可能会出错?一个想法是USB设备描述符是不正确的,Win7更严格的双重检查(但我有点怀疑,因为该设备在MacOS X和Linux下正常工作没有问题).我很难过! 解决方法
如果你正在使用64位,也许你必须将dcb.DCBLength设置为sizeof(DCB),而不是8的下一个最高倍数.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 为什么MSBuild在本地复制所有DLL,但在我们的构建服务器上它
- 【干货】查看windows文件系统中的数据—利用簇号查看文件
- windows – 使用音频电缆(或类似设备)从安全服务器创建单向
- windows – 识别处理器(核心)由特定线程使用
- 在Windows / C上加速Redis#
- windows-7 – 如何使用批处理文件计算当前运行的具有相同名
- Wamp win10 1077error
- winapi – ReadProcessMemory在某些页面上失败(GetLastErro
- windows-8 – 如何使用data-win-bind设置元素的类
- Soap UI – Windows中存储的首选项/设置
推荐文章
站长推荐
热点阅读