我需要通过串行通信向设备发送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”是“未找到档案”。
就是这样。你可以帮助我解决这个问题,也可以给我另一个不同的解决方案(因为,事实上,我想做的事情不应该那么复杂)。
感谢您的关注。
答案 0 :(得分:0)
这是一个驱动程序问题,默认情况下安装的Windows无效(screenshot)。
我安装了此driver。一切都很好。
答案 1 :(得分:0)
Prolific假芯片存在很大问题。因此,他们为更新的芯片和更新的驱动程序版本添加了身份验证。如果硬件未通过身份验证,则驱动程序将进入Code 10状态。
Prolific的旧芯片也没有认证,因此驱动程序将它们视为假货。对用户来说不是很好的体验。这些芯片版本在Prolific网站上正式列为“Windows 8不支持”。但是,与操作系统没有实际的不兼容性,并且在身份验证功能解决问题之前还原为驱动程序版本。但是你会被困在一个旧的有缺陷的驱动程序版本上。
(结束技术解释,开始经济解释)
解决方案是让硬件制造商自己投票,而不是继续从公司购买芯片
当然,当消费者不得不使用支持身份验证的芯片替换新的外围设备时,硬件制造商会增加销售额。但这是一个骗局的策略。
最终,消费者不得不拒绝在计划过时的产品上花钱。