Я пытался научиться читать или писать на com-порте на моем компьютере (в частности, com11). У меня есть небольшое понимание C++, но я когда-либо писал код только для Arduino, поэтому то, что я пытался сделать, было для меня новым. Я не смог найти никаких руководств или пояснений, которые были бы мне понятны, но я нашел код здесь.
#include <iostream>
#include <atlstr.h>
using namespace std;
bool WriteComPort(CString PortSpecifier, CString data) {
DCB dcb;
DWORD byteswritten;
HANDLE hport = CreateFile(
PortSpecifier,
GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL
);
if (!GetCommState(hPort, &dcb))
return false;
dcb.BaudRate = CBR_9600; //9600 Baud
dcb.ByteSize = 8; //8 data bits
dcb.Parity = NOPARITY; //no parity
dcb.StopBits = ONESTOPBIT; //1 stop
if (!SetCommState(hPort, &dcb))
return false;
bool retVal = WriteFile(hPort, data, 1, &byteswritten, NULL);
CloseHandle(hPort); //close the handle
return retVal;
}
Я впервые столкнулся с проблемой здесь: if (!GetCommState(hPort, &dcb))
с ошибкой Identifier "hport" is undefined
. Каждый раз, когда я использую переменную hPort, она выдает похожую ошибку: 'hPort' undeclared identifier.
Я неправильно использую HANDLE
или есть какая-то другая проблема, о которой я не знаю?
HANDLE hport = CreateFile
Здесь вы определяете hport
, но используете hPort
.
если (!GetCommState(hPort, &dcb))
hPort
иhport
разные...