-2

PCとPC MCU PICの間でRS-232通信をしようとしています。そこで、最初に C++ で PC プログラムを作成し始めましたが、エラーはなく、cout作成したステータスを出力したところ、動作しているはずですが、確認したかったのです。そのため、ハイパーターミナルをダウンロードし、Tx をシリアル com ポートの Rx ピンに接続しましたが、ハイパーターミナルを接続しようとすると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;

        }
4

1 に答える 1

0

一度に 1 つのプログラムだけが特定の COM ポートを開くことができます。2 つの COM ポートが利用できる場合は、テストを実行できます。

于 2014-09-05T03:30:24.913 に答える