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 回答