如何在Arduino和Console

时间:2017-01-02 07:58:10

标签: c++ arduino serial-port

我希望在arduino和windows控制台上与两个程序之间传递布尔值。我在C ++中工作,在计算机端使用Visual Studio,在arduino上使用标准的arduino版C ++。我尝试过的所有搜索都让我在UI上使用了Windows窗体和一个按钮。我希望这一切都自动完成,并让两个程序一直等到另一个迭代。我尝试了一些串口样本,但由于这个或那个原因,它们都没有到目前为止。 这是我的控制台代码:

#include "stdafx.h"

#include <stdio.h>
#include <Windows.h>
#include <iostream>
using namespace std;

const int PIXEL_X = 1153;
const int PIXEL_Y = 636;

const int RED = 0;
const int BLUE = 50;
const int GREEN = 200;
const int TOLERANCE = 30;

int main(void) {
    COLORREF color;
    HDC hDC;

do {// Get the device context for the screen


    Sleep(50);

    hDC = GetDC(NULL);

    // Retrieve the color at that position
    color = GetPixel(hDC, PIXEL_X, PIXEL_Y);
    // Release the device context again
    ReleaseDC(GetDesktopWindow(), hDC);

    printf("%i %i %i", GetRValue(color), GetGValue(color), GetBValue(color));

    int flag = 0;

    if (fabs(GetRValue(color) - RED) > TOLERANCE) {
        flag += 1;
    }
    if (fabs(GetGValue(color) - GREEN) > TOLERANCE) {
        flag += 1;
    }
    if (fabs(GetBValue(color) - BLUE) > TOLERANCE) {
        flag += 1;
    }
    if (flag >= 2) {
        return 0;
    }

    //TODO 1: Send Serial data to continue and wait for return statement

} while (true);
return 0;

}

编辑:这是我的arduino代码

#include <Servo.h>

Servo myServo;
Servo myServo2;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  myServo.attach(2);
  myServo2.attach(3);
}

void A_button() {
  myServo.write(125);
  delay(1000);
  myServo.write(97);
  delay(250);
}

void L_button() {
  myServo2.write(72);
  delay(1000);
  myServo2.write(90);
  delay(250);
}

void loop() {

  for(int i=0; i < 16; i++) {
    A_button();
    Serial.print("1 ");
    delay(1500);
  }
  delay(3000);

  // TODO 2: send Serial data

  L_button();
  Serial.print("0 ");
}
编辑:谢谢你的回复。我希望控制台应用程序代码等到arduino代码转到TODO 2,然后控制台应用程序运行到TODO 1并检查RGB值是否在它们的容差范围内。如果RGB值在tolrance内,那么我希望arduino代码继续迭代直到TODO 2再次重复。我没有任何用于串行通信的C ++代码,因为我尝试过的所有示例都没有编译过,而且我不能使用Windows窗体,因为我理解它。

我希望代码在TODO等待,但我完全不知道如何做到这一点,并希望得到任何帮助。我会详细说明是否需要我。 提前谢谢。

0 个答案:

没有答案