从 C 应用程序读取 Arduino 上的值的标准方法是什么?
我有一个加速度计和几个电位器,我想将它们绑定到Cocoa控件,例如 NSSlider。
我的 arduino 当前连接到:/dev/cu.usbmodem26431
并且我可以在串行监视器中读取 AnalogReadSerial 代码示例打印的值。
我如何阅读/dev/cu.usbmodem26431
?
可可系列(编辑)
这里介绍了三种与 Objective C 交互的方法
http://arduino.cc/playground/Interfacing/Cocoa
Arduino 串行
如果您知道如何建立Serial/USB
连接,那么您可以将值作为字符串或二进制发送到 Arduino。
在setup()
Arduino 上的方法中,您可以Serial
像这样建立连接。
注意:本例使用115200
波特率/速度
Serial.begin(115200);
在loop()
Arduino 上的方法中,您可以从 c 应用程序中读取数据。这是一个完整的 Arduino 示例,包括如何使用Serial.print()
int incomingByte = 0; // for incoming serial data
void setup() {
Serial.begin(115200); // opens serial port, sets data rate to 115200 bps
}
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);
}
}
来源http://arduino.cc/en/Serial/read
上面的例子很粗略,你可以使用 Serial.available() 来查看有多少数据在等待读取。
因为strings
您可能希望使用\n
行终止符或其他类型的终止符作为数据包结束的指示符(以了解何时完全接收到它)。
设计自己的标头并check sum
确保数据完整性是个好主意,但我不会check sums
为简单的不重要项目而烦恼。
例如,gps 系统通常在字符串/文本模式下发送句子。如果您查找名为 tinyGPS 的 Arduino 库,您将看到一种将整个句子读入 Arduino 程序中不同变量的方法。
这是一个 NMEA GPS 语句,不要在您的项目中使用相同的标题,而是自己设计。这只是您如何将多个值(int、string、float 等)传输到 Arduino 的示例
$GPBWC,081837,,,,,,T,,M,,N,*13