使用 esp_now 发送数据
Sending data using esp_now
通常当我使用 send_now
发送和接收数据时,我使用本教程中的结构 code。这样,我面临一个问题,即声明一个数组,我需要在结构内部声明大小以确保正确完成发送和接收过程。虽然有时我需要发送一个数组,但我不知道它的大小是多少,例如,这个数组
double *arry=(double*)malloc(size*sizeof(double));
那么我可以不使用结构发送吗?或者我可以在没有大小的情况下声明 arry[] inside struct 吗?然后指定尺寸?
发件人结构:
typedef struct test_struct {
int arry[]; I need to send this array but I do not know its size yet
} test_struct;
接收器结构:
typedef struct test_struct {
int arry[];
} test_struct;
更新:
我试图喜欢这个,但我收到了不正确的值
在发件人中
int sizee=100;
double *by=(double*)malloc(sizee*sizeof(double));
for (int i=0; i < 100; i++) {
by[i]=i;
Serial.println(by[i]);
}
esp_err_t result = esp_now_send(0, (uint8_t *) &by, sizeof(double));
在接收器中
int sizee=100;
double *by=(double*)malloc(sizee*sizeof(double));
Serial.print("rearray=: ");
for(int i=0;i<100;i++){
Serial.print(by[i]);
}
Serial.println();
}
如果您只是想发送 100 个 double-precision 浮点数,这样做就可以了:
int sizee=100;
double *by=(double*)malloc(sizee*sizeof(double));
for (int i=0; i < sizee; i++) {
by[i]=i;
Serial.println(by[i]);
}
esp_err_t result = esp_now_send(0, (uint8_t *) by, sizee*sizeof(double));
接收者必须是回调,对吧?像这样:
void OnDataRecv(const uint8_t * mac_addr, const uint8_t *incomingData, int len) {
double *by=(double*)incomingData;
Serial.print("rearray=: ");
for(int i=0;i<100;i++){
Serial.print(by[i]);
}
Serial.println();
}
不知道Serial.print
能不能搞定双打。你必须检查一下。
通常当我使用 send_now
发送和接收数据时,我使用本教程中的结构 code。这样,我面临一个问题,即声明一个数组,我需要在结构内部声明大小以确保正确完成发送和接收过程。虽然有时我需要发送一个数组,但我不知道它的大小是多少,例如,这个数组
double *arry=(double*)malloc(size*sizeof(double));
那么我可以不使用结构发送吗?或者我可以在没有大小的情况下声明 arry[] inside struct 吗?然后指定尺寸?
发件人结构:
typedef struct test_struct {
int arry[]; I need to send this array but I do not know its size yet
} test_struct;
接收器结构:
typedef struct test_struct {
int arry[];
} test_struct;
更新: 我试图喜欢这个,但我收到了不正确的值 在发件人中
int sizee=100;
double *by=(double*)malloc(sizee*sizeof(double));
for (int i=0; i < 100; i++) {
by[i]=i;
Serial.println(by[i]);
}
esp_err_t result = esp_now_send(0, (uint8_t *) &by, sizeof(double));
在接收器中
int sizee=100;
double *by=(double*)malloc(sizee*sizeof(double));
Serial.print("rearray=: ");
for(int i=0;i<100;i++){
Serial.print(by[i]);
}
Serial.println();
}
如果您只是想发送 100 个 double-precision 浮点数,这样做就可以了:
int sizee=100;
double *by=(double*)malloc(sizee*sizeof(double));
for (int i=0; i < sizee; i++) {
by[i]=i;
Serial.println(by[i]);
}
esp_err_t result = esp_now_send(0, (uint8_t *) by, sizee*sizeof(double));
接收者必须是回调,对吧?像这样:
void OnDataRecv(const uint8_t * mac_addr, const uint8_t *incomingData, int len) {
double *by=(double*)incomingData;
Serial.print("rearray=: ");
for(int i=0;i<100;i++){
Serial.print(by[i]);
}
Serial.println();
}
不知道Serial.print
能不能搞定双打。你必须检查一下。