У меня есть устройство, которое отправляет данные в COM-порт.И я хотел бы смоделировать это устройство, когда оно не подключено. Я подумал, что это можно сделать, просто отправив данные на определенный COM-порт:
int main() {
char *port = "\\\\.\\COM40";
HANDLE hCom = CreateFile(port, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
if (hCom==INVALID_HANDLE_VALUE) return 0;
DWORD writeBytes;
int buffer = 0xDEADBEAF;
BOOL success = WriteFile(hCom, &buffer, 4, &writeBytes, NULL);
FlushFileBuffers(hCom);
Sleep(1000);
HANDLE hCom2 = CreateFile(port, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
if (hCom2==INVALID_HANDLE_VALUE) return 0; // Exit. GetLastError() == 5
DWORD readBytes;
success = ReadFile(hCom2, &buffer, 4, &readBytes, NULL);
CloseHandle(hCom);
CloseHandle(hCom2);
return 0;
}
К сожалению, это не работает, и второй CreateFile()
устанавливает последнюю ошибку на ERROR_ACCESS_DENIED
.Чего мне не хватает?