串口通信Arduino VC ++

时间:2012-02-19 17:38:53

标签: visual-c++ serial-port arduino robot

我无法使用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);
    }
}

1 个答案:

答案 0 :(得分:2)

您必须正确设置{{1>}结构的每个成员。最简单的方法是使用GetCommState读取现有设置,然后只更改您关注的设置。

现在你的流量控制很可能是错误的。

哦,您还初始化了超时结构,但从未将这些设置应用到端口。