我设法从网上将PC上的代码通过RS-232传输到机器通信中。
我在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 \ Visual Studio 2010 \ projects \ hthh \ hthh \ hthh.cpp(17):错误C2664:“ CreateFileW”:无法将参数1从“ const char [5]”转换为“ 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>类型是“未知类型”
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):错误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 ==========
抱歉,它很宽大。
感谢您的建议。
谢谢
最佳答案
您正在编译目标UNICODE
,因此CreateFile
映射到需要宽字符数组CreateFileW
的wchar_t*
。但是"COM4"
是char
文字。将其更改为L"COM4"
。
编译器告诉您dcbSerial
未声明。这是正确的。与dcbSerialParam
相同。您声明的变量名为dcbSerialParams
。
而且您根本没有声明n
。