CreateFile(ComX…)错误C2664:&x27;CreateFileW';:

CreateFile(ComX…)错误C2664:&x27;CreateFileW';:,c,winapi,C,Winapi,我必须将信息从uController传输到我的笔记本电脑。当我创建文件时,我得到以下错误。我认为如果您看到脚本,就更容易进行故障排除 因为上面说“LPCWSTR”中的“char[20]”不合适,所以我将其更改为: CreateFile((LPCWSTR)name, GENERIC.. #include "stdafx.h" #include <stdio.h> #include <string.h> #include <stdlib.h> #include

我必须将信息从uController传输到我的笔记本电脑。当我创建文件时,我得到以下错误。我认为如果您看到脚本,就更容易进行故障排除

因为上面说“LPCWSTR”中的“char[20]”不合适,所以我将其更改为:

CreateFile((LPCWSTR)name, GENERIC..
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <conio.h>
#include "com_bg.hpp"
#include "com._bg.cpp"
#include "tchar.h"

using namespace std;

int _tmain(int argc, _TCHAR *argv[])
{   
     printf("Hello\n");

     getch();

     err = openCom(8, 9600, NONE,1,RTSDTRLOW);

     if (err != OK)
     {
         closeCom();

         printf("Failed to OpenPort\n");

         return 0;
     }
    …
现在我可以编译程序了,但是我仍然得到无效的句柄值,并且我无法打开端口

我的系列程序:

#include <stdlib.h>
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include "com_bg.hpp"

char name[20]="";       //between the "" inserting COM"X"

...

do
{
    port = CreateFile(name, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);

    if (port==INVALID_HANDLE_VALUE)
    {
        k++;
    } 

}
while ((k<MAXCREAT) && (port==INVALID_HANDLE_VALUE));

if (k==MAXCREAT)
    return(ERR_COM);

...
#包括
#包括
#包括
#包括
#包括“com_bg.hpp”
字符名[20]=“”//在“插入COM”X之间
...
做
{
port=CreateFile(名称,泛型读取,泛型写入,0,NULL,打开现有,0,NULL);
if(端口==无效的\u句柄\u值)
{
k++;
} 
}

while((kType casting)不会更改字符串的基本编码。如果需要调用
CreateFile
以获取在
char*
字符串中表示的文件或设备名称,请显式使用
CreateFileA
,或者将项目设置更改为不使用Unicode

当然,如果您确实想将
char*
字符串传递到
CreateFile
,那么更明智的选择是将
name
的类型从
char
更改为
wchar\t
(Windows
平台类型为
WCHAR
)。

因为COM端口总是通过控制台手动更改im输入字符。因此我必须使用字符。当我更改为“WCHAR\u t”或“WCHAR”时,它会显示:C2440:“initialiseurng”:“const char[1]”不能“WCHAR\u t[20]”@Sebastian使用L前缀初始化宽字符串:
L“Hello World”;