我想知道是否有一種標準方式與串行設備進行通信是有效的。我應該使用標準庫嗎?如果是這樣,哪一個?C++ Linux(Ubuntu)正確寫入串行(對於Arduino)
現在我正在擺弄一個基於數字輸入的給定數量的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);
}
}
請讓我知道,如果我的問題缺乏任何方式。 – Orangeman555
這個問題的贊成數量很少讓我感到困惑。我希望我能給你多一個,我處於和你一樣的情況。 – gromit190
查看[ŧhis答案](http://stackoverflow.com/a/34799431/841108)到一個非常類似的問題 –