Win32 编译器错误

问题描述 投票:0回答:1

我设法从网络上获取了一个代码,用于通过 RS-232 实现 PC 与机器的通信。 我在 VS2010 中使用 Win32 控制台应用程序。 我想运行它并看看结果。 但我有一些无法纠正的错误。

这是代码:

    // HTHH.cpp : Defines the entry point for the console application.
    //

    #include "stdafx.h"
    #include "windows.h"

    HANDLE hSerial;

    int _tmain(int argc, _TCHAR* argv[])
    {
        hSerial = CreateFile("COM4",  
                GENERIC_READ | GENERIC_WRITE, 
                0, 
                0, 
                OPEN_EXISTING,
                FILE_ATTRIBUTE_NORMAL,
                0);
        if (hSerial == INVALID_HANDLE_VALUE)
        {
    if(GetLastError()==ERROR_FILE_NOT_FOUND)
    {
        }

        }

        DCB dcbSerialParams = {0};

        dcbSerial.DCBlength=sizeof(dcbSerialParams);

        if (!GetCommState(hSerial, &dcbSerialParams))
        {
        }
            dcbSerialParams.BaudRate=CBR_9600;
            dcbSerialParams.ByteSize=8;
            dcbSerialParams.StopBits=ONESTOPBIT;
            dcbSerialParams.Parity=NOPARITY;

        if(!SetCommState(hSerial, &dcbSerialParam))
{
}
    COMMTIMEOUTS timeouts={0};

    timeouts.ReadIntervalTimeout=50;
    timeouts.ReadTotalTimeoutConstant=50;
    timeouts.ReadTotalTimeoutMultiplier=10;
    timeouts.WriteTotalTimeoutConstant=50;
    timeouts.WriteTotalTimeoutMultiplier=10;

    if(!SetCommTimeouts(hSerial, &timeouts))
    {
    }

        char szbuff[n+1] = {0};
        DWORD dwBytesRead = 0;

        if(!ReadFile(hSerial, szbuff, n, &dwBytesRead, NULL))
        {

     CloseHandle(hSerial);

    return 0;
   }

错误如下:--

1>c:\users\singanathan\documents isual studio 2010\projects\hthh\hthh\hthh.cpp(17): 错误 C2664: 'CreateFileW': 无法将参数 1 从 'const char [5]' 转换为 'LPCWSTR '

1> 指向的类型是不相关的;转换需要reinterpret_cast、C 风格转换或函数风格转换

1>c:\users\singanathan\documents isual studio 2010\projects\hthh\hthh\hthh.cpp(28):错误 C2065:“dcbSerial”:未声明的标识符

1>c:\users\singanathan\documents isual studio 2010\projects\hthh\hthh\hthh.cpp(28): 错误 C2228: '.DCBlength' 的左边必须有类/结构/联合

1> 类型为“未知类型”

1>c:\users\singanathan\documents isual studio 2010\projects\hthh\hthh\hthh.cpp(38):错误 C2065:“dcbSerialParam”:未声明的标识符

1>c:\users\singanathan\documents isual studio 2010\projects\hthh\hthh\hthh.cpp(53): 错误 C2065: 'n': 未声明的标识符

1>c:\users\singanathan\documents isual studio 2010\projects\hthh\hthh\hthh.cpp(56): 错误 C2065: 'n': 未声明的标识符

1>c:\users\singanathan\documents isual studio 2010\projects\hthh\hthh\hthh.cpp(64): 致命错误 C1075: 在左大括号 '{' 之前找到文件结尾 在 'c:\users\singanathan\documents isual studio 2010\projects\hthh\hthh\hthh.cpp(10)' 被匹配 ========== 构建:0 成功,1 失败,0 最新,0 跳过 ==========

抱歉,它很长。 感谢您的建议。

谢谢

c++ visual-c++
1个回答
0
投票

您正在编译目标

UNICODE
,因此
CreateFile
映射到
CreateFileW
,它需要宽字符数组
wchar_t*
。但
"COM4"
char
文字。将其更改为
L"COM4"

编译器告诉您

dcbSerial
未声明。是的。
dcbSerialParam
也一样。您声明的变量名为
dcbSerialParams

而且你根本没有声明

n

© www.soinside.com 2019 - 2024. All rights reserved.