Win32编译器错误

时间:2013-07-11 10:29:04

标签: c++ visual-c++ compiler-construction

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

Heres是代码:

    // 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 \ visual studio 2010 \ projects \ hthh \ hthh \ hthh.cpp(17):错误C2664:'CreateFileW':无法从'const char [5]'转换参数1到'LPCWSTR'

1>指向的类型是无关的;转换需要reinterpret_cast,C风格的转换或函数式转换

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

1> c:\ users \ singanathan \ documents \ visual studio 2010 \ projects \ hthh \ hthh \ hthh.cpp(28):错误C2228:'。DCBlength'左边必须有class / struct / union

1> type是''unknown-type''

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

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

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

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

对不起,它非常长。 感谢您的建议。

由于

1 个答案:

答案 0 :(得分:0)

您正在编译定位UNICODE,因此CreateFile会映射到CreateFileW,这需要广泛的字符数组wchar_t*。但"COM4"是一个char字面值。将其更改为L"COM4"

编译器告诉您dcbSerial未声明。这是正确的。同样适用于dcbSerialParam。您声明的变量名为dcbSerialParams

你根本没有声明n