0

Visual C++を使用して Arduino に文字列を書き込むことができません。どういうわけかCOMポートを開くことはできますが、Arduinoにデータを送信できません。私の場合、実際に問題は何でしょうか?

int main()
{
    HANDLE hComm;
    hComm = CreateFileA("\\\\.\\COM11",
            GENERIC_READ | GENERIC_WRITE,
            0,
            0,
            OPEN_EXISTING,
            FILE_FLAG_OVERLAPPED,
            0);

    if (hComm == INVALID_HANDLE_VALUE)
    {
        printf("com not opened");
    }
    else
    {
        printf("COM OPENED");
    }

    COMMTIMEOUTS cto = { 1, 100, 1000, 0, 0 };
    DCB dcb;
    memset(&dcb,0,sizeof(dcb));
    dcb.DCBlength = sizeof(dcb);
    dcb.BaudRate = 38400;
    dcb.fBinary = 1;
    dcb.Parity = NOPARITY;
    dcb.StopBits = ONESTOPBIT;
    dcb.ByteSize = 8;

    if(!SetCommState(hComm,&dcb))
    {
        printf("HI");
    }

    while(1)
    {
        char bag[]="L";
        DWORD read=0 ;
        DWORD write=1; // Number of bytes to write to serial port
        //         Decmial value to write to serial port
        WriteFile(hComm, bag,write,&write, NULL);
    }
}
4

1 に答える 1

2

構造体のすべてのメンバーをDCB正しく設定する必要があります。最も簡単な方法は、既存の設定を で読み取り、必要なGetCommStateものだけを変更することです。

現在、フロー制御はおそらく間違っています。

ああ、タイムアウト構造も初期化しましたが、それらの設定をポートに適用したことはありません。

于 2012-02-19T17:45:41.990 に答える