Arduino和CPP文件通信
Arduino and cpp file communication
我已经将传感器与我的arduino板连接起来,并且正在运行草图,该草图从传感器中检索一些数据,并将其存储在4个双变量中。我需要从另一个.cpp文件访问这4个变量。
为此,我为这两个声明4个外部变量创建了一个通用标题文件。然后在Arduino草图中定义这些定义。问题在于,当我尝试从.cpp文件访问变量时,编译器错误表明它们是未定义的。
arduino草图:
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BNO055.h>
#include <utility/imumaths.h>
#include <varDec.h>
#define BNO055_SAMPLERATE_DELAY_MS (1000)
double x,y,z,w;
Adafruit_BNO055 bno = Adafruit_BNO055();
void setup()
{
Serial.begin(9600);
if(!bno.begin())
{
Serial.println("Not connected");
while(1);
}
bno.setExtCrystalUse(false);
}
void loop()
{
imu::Quaternion quat = bno.getQuat();
x = quat.x();
y = quat.y();
z = quat.z();
w = quat.w();
uint8_t system, gyro, accel, mag = 0;
bno.getCalibration(&system, &gyro, &accel, &mag);
delay(BNO055_SAMPLERATE_DELAY_MS);
}
CPP文件:
#include <unistd.h> // sleep()
#include <stdio.h> // fopen(), fclose(), fprintf(), perror()
#include <stdlib.h> // exit() and EXIT_FAILURE
#include <iostream>
#include "/home/matthew/sketchbook/libraries/Custom/varDec.h"
using namespace std;
int main()
{
cout << x;
getchar();
getchar();
return(0);
} // end function: main
和标题:
extern double x;
extern double y;
extern double z;
extern double w;
从我正在阅读的结构中,我想,您称之为"另一个.cpp文件"是一个在计算机上运行的程序....
如果是这种情况,那么您要做的事情将永远不会起作用。变量被命名为分配的内存。在计算机上运行的程序将无法访问Arduino上的分配内存。
将值从传感器到计算机上运行的程序的最简单方法是编程Arduino以将值写入串行端口。(在这里,您可以找到有关如何向串行端口发送不同格式值的好示例:https://www.arduino.cc/en/serial/print(
和计算机上运行的程序应读取预期值的串行端口。阅读计算机上的串行端口,这不是一件艰巨的任务。但这是系统依赖的。互联网上有很多文档(
祝你好运我的朋友; - (
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 在Visual C ++中与Stockfish(外部可执行文件)通信的最佳方式
- Arduino和CPP文件通信
- Python和C++之间使用本地文件套接字的进程间通信
- 使用物理文本文件的进程间通信
- 让一个.cpp文件与一个class.cpp和一个class.h文件通信
- 创建文件() 串行通信问题
- 打印到文件的值不正确.串口通信程序
- 用户界面-如何在C++中将gui与逻辑分离(通信2个可执行文件所需的模式和库)
- 使用写入文件/读取文件的串行通信