【发布时间】:2015-07-30 20:48:06
【问题描述】:
我正在尝试编写 c++ 控制台和 Arduino uno 之间的接口。我想通过串口向 arduino 发送一个字符或整数。我写了一些代码(见下文),LED 闪烁了很短的时间。我希望它保持打开状态,直到我输入另一个字母或数字。如何才能做到这一点?我使用了来自Arduino playground 的 SerialClass.h 和 SerialClass.cpp。几个小时的 google-fu 无济于事。
这里是c++代码(Arduino代码如下):
#include <stdio.h>
#include <tchar.h>
#include "SerialClass.h" // Library described above
#include <string>
#include <iostream>
using namespace std;
bool weiter = true;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Welcome to the serial test app!\n\n" << endl;
Serial* SP = new Serial("COM4"); // adjust as needed
if (SP->IsConnected())
//printf("We are connected\n");
cout << "We are connected!\n" << endl;
char sendingData[256] = "";
int dataLength = 256;
int writeResult = 0;
while (weiter == true) {
if (SP->IsConnected()) {
cout << "Press o to turn LED on! Press anything else to turn LED off! " << endl;
cin >> sendingData;
writeResult = SP->WriteData(sendingData, dataLength);
cout << "Data send: " << sendingData << endl;
}
}
return 0;
}
这是 Arduino 代码:
int incomingByte = 0; // for incoming serial data
int led = 13;
void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
pinMode(led, OUTPUT);
Serial.println("This is my LED program; press o to turn on the LED");
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
//Serial.print("I received: ");
//Serial.println(incomingByte, DEC);
if (incomingByte == 111) //111 entspricht dem Buchstaben o
{
digitalWrite(led, HIGH);
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
Serial.println("LED is turned on");
}
if (incomingByte != 111)
{ digitalWrite(led, LOW);
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
Serial.println("LED is turned off");
}
}
}
【问题讨论】:
标签: c++ arduino serial-port