Com端口:Windows 8上的串行通信

时间:2014-08-17 09:39:27

标签: c++ windows serial-port

我需要通过串行通信向设备发送8位(一个字节)。此消息只是一个0到255之间的数字,编码为8位(没有比这更复杂)。我不需要阅读任何来自设备的任何东西。我需要在Windows上这样做。

我试图在Windows 8上实现的解决方案目前无法正常工作。我正在尝试使用CreateFile

这是我的代码:

static HANDLE handle;

//[...]

handle = CreateFile("\\\\.\\COM4", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (handle == INVALID_HANDLE_VALUE)
{
    //  Handle the error.
    printf ("CreateFile failed with error %d.\n", GetLastError());
}

控制台输出是:

CreateFile failed with error 2.

最后(部分)我的设备管理员(screenshot):

Port (COM et LPT)
--> Communications Port (COM1)
--> Prolific USB-to-Serial Comm Port (COM4)

据我所知,“错误2”是“未找到档案”。

就是这样。你可以帮助我解决这个问题,也可以给我另一个不同的解决方案(因为,事实上,我想做的事情不应该那么复杂)。

感谢您的关注。

2 个答案:

答案 0 :(得分:0)

这是一个驱动程序问题,默认情况下安装的Windows无效(screenshot)。

我安装了此driver。一切都很好。

答案 1 :(得分:0)

Prolific假芯片存在很大问题。因此,他们为更新的芯片和更新的驱动程序版本添加了身份验证。如果硬件未通过身份验证,则驱动程序将进入Code 10状态。

Prolific的旧芯片也没有认证,因此驱动程序将它们视为假货。对用户来说不是很好的体验。这些芯片版本在Prolific网站上正式列为“Windows 8不支持”。但是,与操作系统没有实际的不兼容性,并且在身份验证功能解决问题之前还原为驱动程序版本。但是你会被困在一个旧的有缺陷的驱动程序版本上。

(结束技术解释,开始经济解释)

解决方案是让硬件制造商自己投票,而不是继续从公司购买芯片

  • 惩罚那些购买带有假芯片的硬件的无辜消费者,因为消费者不了解供应链中的某些事情
  • 禁用正版产品作为他们在仿冒品的私人战争中的附带损害

当然,当消费者不得不使用支持身份验证的芯片替换新的外围设备时,硬件制造商会增加销售额。但这是一个骗局的策略。

最终,消费者不得不拒绝在计划过时的产品上花钱。