小编Joh*_*ohn的帖子

将字符串转换为LPCWSTR以获取CreateFile()以寻址串行端口

当使用Windows CreateFile函数寻址串口时,我似乎遇到了一些TEXT/UNICODE问题.有人可以请帮助指出我的错误?

我正在使用VS 2008在VC++中编写Win32控制台应用程序.

我可以创建一个句柄来解决串口问题,如下所示:

#include <iostream>    
#include <windows.h>
#include <string>

int main()
{

   HANDLE hSerial;

   hSerial = CreateFile( L"\\\\.\\COM20",
                         GENERIC_READ | GENERIC_WRITE,
                         0,
                         0,
                         OPEN_EXISTING,
                         FILE_ATTRIBUTE_NORMAL,
                         0);`

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作(\\\\.\\对于大于COM9的comports来说,这个位是必需的,对于那些直到COM9的那些也是如此).问题是我的comport并不总是COM20,所以我想让用户指定它是什么.

以下是我尝试过的一些事情:

#include <iostream>    
#include <windows.h>
#include <string>

int main()
{
   std::string comNum;
   std::cout << "\n\nEnter the port (ex: COM20): ";
   std::cin >> comNum;
   std::string comPrefix = "\\\\.\\";
   std::string comID = comPrefix+comNum;

   HANDLE hSerial;

   hSerial = CreateFile( comID,
                         GENERIC_READ | GENERIC_WRITE,
                         0,
                         0,
                         OPEN_EXISTING,
                         FILE_ATTRIBUTE_NORMAL,
                         0);`

   return …
Run Code Online (Sandbox Code Playgroud)

c++ string unicode createfile

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

c++ ×1

createfile ×1

string ×1

unicode ×1