Не могу прочитать последовательный ввод - PullRequest
1 голос
/ 15 октября 2011

У меня Arduino подключен через USB к моему компьютеру. Из него я пытаюсь прочитать из COM-порта.

Кто-нибудь может увидеть, если с этим что-то явно не так ???

void main()
{   
    int exitStatus;
    unsigned int bytesToRead = 1;
    unsigned char *buffer = (unsigned char*) malloc(sizeof(unsigned char) + 1);
    Serial *connection = new Serial("COM3");

    if(connection->IsConnected()){
        exitStatus=connection->ReadData(buffer, bytesToRead);
        if( *buffer > 0)
            <statement I'm trying to hit>
    }

}    

Прямо сейчас это всегда звучит как «утверждение, которое я пытаюсь сделать», даже если это не так. Отладка всегда показывает, что содержимое буфера - много мусора. Я знаю, что поступающий от последовательного входа должен быть правильным, потому что из того, что я вижу на последовательном мониторе, все выглядит хорошо.

Мысли

1 Ответ

3 голосов
/ 15 октября 2011

Вы не оцениваете переменную exitStatus, которая может указывать на то, что чтение прошло успешно.

Также вам не нужно выделять память, если вы хотите прочитать только один байт, вы можете просто передатьуказатель на локальную переменную char.

И пока я в нем, тип для main - либо int main(), либо int main(int argc, char** argv)

int main()
{   
    int exitStatus;
    unsigned int bytesToRead = 1;
    unsigned char buffer;
    Serial *connection = new Serial("COM3");

    if(connection->IsConnected()){
        exitStatus=connection->ReadData(&buffer, 1);
        if((exitStatus == <Insert the value for a correct read status>) && (buffer != '0'))
            <statement I'm trying to hit>
    }
    return 0;
}

update Изменена проверка! = 0 на! = '0', так как я подозреваю, что из последовательного интерфейса идет символ '0' (= 0x30).

...