我希望在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等待,但我完全不知道如何做到这一点,并希望得到任何帮助。我会详细说明是否需要我。 提前谢谢。