从C应用程序读取Arduino上的值的标准方法是什么?
我有一个加速计和几个电位计,我想绑定到Cocoa控件,例如NSSlider。
我的arduino目前已连接到:/dev/cu.usbmodem26431
,我可以读取串行监视器中AnalogReadSerial代码示例打印的值。
如何阅读/dev/cu.usbmodem26431
?
答案 0 :(得分:1)
Cocoa Serial (编辑)
这里介绍了与Objective C接口的三种方法
http://arduino.cc/playground/Interfacing/Cocoa
Arduino Serial
如果您知道如何建立Serial/USB
连接,那么您可以将值作为字符串或二进制发送到Arduino。
在Arduino上的setup()
方法中,您建立了Serial
这样的连接。
nb:在此示例中使用115200
波特/速度
Serial.begin(115200);
在Arduino上的loop()
方法中,您可以从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