Последовательный порт связи Arduino VC ++ - PullRequest
0 голосов
/ 19 февраля 2012

Я не могу написать строку на моем Arduino, используя Visual C ++ . Я как-то могу открыть 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 Ответ

2 голосов
/ 19 февраля 2012

Необходимо правильно установить каждого члена структуры DCB. Самое простое, что вы можете сделать, это прочитать существующие настройки с помощью GetCommState, а затем изменить только те, которые вам нужны.

Прямо сейчас ваше управление потоком, скорее всего, неверно.

О, вы также инициализировали структуру тайм-аута, но никогда не применяли эти настройки к порту.

...