我必须将信息从uController传输到我的笔记本电脑。创建文件时,出现以下错误。如果您看到脚本,我认为更容易进行故障排除。
因为它说'LPCWSTR'中的'char [20]'不适合,所以我将其更改为:
CreateFile((LPCWSTR)name, GENERIC..
现在我可以编译程序了,但是我仍然得到INVALID_HANDLE_VALUE,并且我无法打开端口。
我的串行例程:
#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);
...
我的主看起来像这样:
#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;
}
…
答案 0 :(得分:1)
类型转换不会更改字符串的基础编码。如果需要为CreateFile
字符串表示的文件或设备名称调用char *
,请显式地或通过更改项目设置以不使用Unicode来使用CreateFileA
。>
当然,如果您确实想将char *
字符串传递给CreateFile
。更为明智的选择是将name
的类型从char
更改为wchar_t
(Windows
平台类型为WCHAR
)。