我试图弄清楚如何通过 USB 端口从我的 Arduino Mega 2560 获取信息到在 Xubuntu 中运行的 C 程序。
我正在尝试将最简单的示例放在一起作为起点。
Arduino IDE 附带了一些不错的基本示例,其中之一是Graph,它只是打印来自电位计或其他模拟传感器的值:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(analogRead(A0));
delay(2);
}
那里没有问题,但是至于将在我的计算机上运行并接收数据的程序,这是我到目前为止所拥有的(在阅读本文并进行更多挖掘后更新):
/* prints the output from an Arduino running the "Graph" example.
*/
#include <stdio.h>
#include <sys/fcntl.h>
#include <termios.h>
int main(void)
{
int fd = 0;
char buffer[32];
int n;
fd = open("/dev/ttyACM0", O_RDWR | O_NOCTTY | O_NDELAY);
while(1)
{
read(fd, buffer, sizeof(buffer));
n = atoi(buffer);
printf("%d\n", n);
}
close(fd);
}
这几乎可以正常工作,但它似乎丢失的消息比收到的消息多,而且很多消息都不完整。
在此过程中可以设置几个选项和标志,但我无法确定要设置哪些选项和标志。
最终,我计划使用通过我的 Arduino 运行的各种传感器来控制在我的计算机上运行的基于 SDL 的应用程序,但只要我能得到那个字符串,我就应该回到熟悉的领域。