C ++ не может передавать данные через COM-порт, когда гипертерминал подключен

Я пытаюсь установить соединение RS-232 между ПК и PIC MCU ПК. Поэтому я начал делать программу для ПК сначала на C ++, и она была безошибочной, и согласно cout Я сделал для вывода статуса он должен работать, но я хотел быть уверен. Поэтому я скачал Hyperterminal и подключил Tx к Rx pin через последовательный COM-порт, но всякий раз, когда я пытаюсь подключить гипертерминал, он выдает ошибку, говоря: access denied (error 5) когда я пытаюсь запустить свою программу на C ++. Я не понимаю, где на самом деле проблема. Вот полный код, если проблема была в коде, просто чтобы убедиться:

main.c:

        #include <windows.h>
#include <winbase.h>
#include <iostream>

PDWORD sent;
char buf;

int main(){

DCB serial;

HANDLE hserial = CreateFile("\\\\.\\COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

serial.DCBlength = sizeof(DCB);
serial.BaudRate = CBR_9600;
serial.fBinary = true;
serial.fParity = false;
serial.ByteSize = 8;
serial.Parity = NOPARITY;
serial.StopBits =  ONESTOPBIT;

char result = BuildCommDCB("baud=9600 parity=N data=8 stop=1", &serial);

if(result != 0){
std::cout << "DCB Structure Successfully Created!" << std::endl;
}else{
std::cout << "DCB Structure Creation Failed!" << std::endl;
}

if(hserial != INVALID_HANDLE_VALUE){
std::cout << "COM Port Handle Successfully Created!" << std::endl;

}else{
std::cout << "COM Port Handle Creation Failed!" << std::endl;
std::cout << GetLastError() << std::endl;
}

char res = WriteFile(hserial, "0xFF", 1, sent, NULL);

if(res != 0){
std::cout << "Writing to COM Port Successfull!" << std::endl;
}else{
std::cout << "Writing to COM Port Failed!" << std::endl;
std::cout << GetLastError() << std::endl;
}

CloseHandle(&hserial);

return 0;

}

-2

Решение

Только одна программа одновременно может открыть определенный COM-порт. Вы можете сделать свой тест, если у вас есть два доступных COM-порта.

0

Другие решения


По вопросам рекламы [email protected]