我想知道是否有一种标准方法可以与有效的串行设备通信。我应该使用标准库吗?如果有,是哪一个?
现在我正在摆弄根据数字输入让 LED 以给定的数量点亮。(下面的Arduino代码)。只是练习的东西。
看我过于简单和低效的测试:
#include <iostream>
#include <stdio.h>
using namespace std;
int
main()
{
FILE *file;
//Opening device file
int getnum;
while (true)
{
file = fopen("/dev/ttyACM5", "w");
cout << ">>" << endl;
cin >> getnum;
fprintf(file, "%d", getnum); //Writing to the file
fclose(file);
}
}
while 循环很可爱,但如果允许在不等待用户的情况下运行,则效率很低。我怀疑多余的fopen
fclose
使用是愚蠢的。
微控制器将感知设备的状态并向计算机发送信号。计算机将对所有这些值进行“处理”,并发送回消息以改变 arduino 的行为。除了需要人工键盘输入之外,基本上繁重的思考都被委托给了计算机。
当然这都是为了好玩,但正如你所见,我需要“学习”C++ 中串行交互的规则!非常感谢任何帮助或指导。
Arduino代码:
char incomingByte = 0; // for incoming serial data
int led = 11;
int bright;
void
setup()
{
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void
loop()
{
// send data only when you receive data:
if (Serial.available() > 0)
{
// read the incoming byte:
incomingByte = Serial.read();
switch (incomingByte)
{
case '1':
bright = 10;
break;
case '2':
bright = 50;
break;
case '3':
bright = 255;
break;
default:
bright = 0;
break;
}
analogWrite(led, bright);
Serial.println(incomingByte);
}
}