Последовательное взаимодействие (для Arduino) с использованием Visual Studio 2010 и C - PullRequest
1 голос
/ 18 ноября 2011

В данный момент у меня небольшая проблема.В настоящее время я занимаюсь определением и отслеживанием видео (изображений) с использованием Microsoft Visual Studio 2010 Professional и OpenCV , и в результате (системы vision) осуществляется управление дополнительным оборудованием через платформу Arduino.

Мой код для системы vision работает на 100%, а код на Arduino также работает на 100%, но у меня проблема с подключением через C / C ++ от ПК к плате Arduino.(Невозможно использовать Visual Basic и т. Д.)

Технические характеристики на данный момент: платформа Windows 7, Visual Studio 2010, OpenCV 2.2.0, Arduino 0022, плата Arduino Mega, 2 x USB-последовательных преобразователя для моделирования.

Кажется, мой код не работает.Я, однако, следую приведенному ниже примеру с помощью # opc0de.Но чтобы проиллюстрировать мою точку зрения, приведенный ниже код не работает (никогда не сообщается, что COM открыт (да, я переключаюсь на порты записи)).(Подключите два последовательных кабеля друг к другу, подключенные к двум разным COM-портам: hyperterminal, realterm и т. Д. Работают на 100%. Мой код и приведенный ниже код, похоже, не работают вообще).(Мой код имеет длину + - 800 строк, и мне не хочется публиковать, так как раздел COM очень похож на приведенный ниже).Я просто хочу, чтобы последовательная коммуникация работала.

Все, что я хочу от COM, - это возможность отправлять текстовую строку, "x = ### y = ###", поэтому дажеподойдет простой фрагмент кода (как показано ниже) (я хочу прочитать на более позднем этапе, но сейчас я не беспокоюсь об этом)

Ссылка на код: Переполнение стека - opc0de

#include <Windows.h>
#include <stdio.h>
#include <conio.h>

int _tmain(int argc, _TCHAR* argv[])
{
    char test[] = "Hello";

    HANDLE hDevice = CreateFile(L"COM2",GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,0);

    if (hDevice !=INVALID_HANDLE_VALUE)
    {
        printf("Port opened! \n");
        DCB lpTest;
        GetCommState(hDevice,&lpTest);
        lpTest.BaudRate = CBR_9600;
        lpTest.ByteSize = 8;
        lpTest.Parity = NOPARITY;
        lpTest.StopBits = ONESTOPBIT;
        SetCommState(hDevice,&lpTest);

        DWORD btsIO;

        WriteFile(hDevice,test,strlen(test),&btsIO,NULL);

        CloseHandle(hDevice);
    }
    _getch();
    return 0;
}

1 Ответ

0 голосов
/ 18 ноября 2011

Проверьте код, чтобы убедиться, что он работает отдельно:

Сначала используйте COM-регистратор.Старый и хороший Терминал от MS - худший, но я не могу вспомнить другой прямо сейчас.Посмотрите, отправляет ли ваш код C ++ что-то туда.Если нет, заставьте это работать :) Если да, устраните проблемы связи с Arduino.Сделайте простой регистратор на Arduino, чтобы увидеть, что вы получаете с другой стороны и как вы справляетесь с этим.

...