This commit is contained in:
2026-07-23 09:06:41 +08:00
parent bd9b727e19
commit 4924cab809

View File

@ -1,3 +1,256 @@
// #include "Sensor.h"
// #include "driver/uart.h"
// sensor_data sensor_info;
// EventGroupHandle_t sensor_event_group;
// uint16_t receive_buff1[516];
// uint16_t receive_buff2[516];
// volatile uint32_t count = 0;
// uint32_t pos = 0;
// volatile uint64_t frame_count = 0;
// volatile bool read_flag = false;
// #define trigger_pin GPIO_NUM_8
// #define rst_pin GPIO_NUM_38
// void IRAM_ATTR handleFallingEdge()
// {
// // read_flag = true;
// // count = 0;
// // if(count == 3) digitalWrite(rst_pin, 0);
// if(digitalRead(trigger_pin) == 0) read_flag = true;
// else read_flag = false;
// }
// void sensor_init()
// {
// sensor_info.sn = 0;
// if (SPIFFS.begin(true))
// {
// // Serial.println("SPIFFS mount ok!");
// sensor_data_read(&sensor_info);
// }
// else
// {
// // Serial.println("SPIFFS mount failed!");
// }
// if(sensor_info.flag != 1)
// {
// sensor_info.flag = 0;
// sensor_info.a1 = 2.73e-8;
// sensor_info.a2 = -0.000025;
// sensor_info.a3 = -1.14675;
// sensor_info.a4 = 1082.6422;
// // sensor_info.sn = 1;
// }
// pinMode(Shutter1_pin, OUTPUT);
// pinMode(Shutter2_pin, OUTPUT);
// pinMode(rst_pin, OUTPUT);
// Shutter_Open(Shutter_1);
// // digitalWrite(rst_pin, 1);
// // vTaskDelay(36);
// digitalWrite(rst_pin, 0);
// vTaskDelay(36);
// Serial2.setTimeout(1);
// Serial2.setRxBufferSize(1032);
// Serial2.setTxBufferSize(256);
// Serial2.begin(921600,SERIAL_8N1,rx,tx);
// Send_Shutter_Time(12);
// // Serial2.end();
// sensor_event_group = xEventGroupCreate();
// pinMode(trigger_pin, INPUT);
// attachInterrupt(digitalPinToInterrupt(trigger_pin), handleFallingEdge, CHANGE);
// xTaskCreatePinnedToCore(sensor_read_task, "sensor_read_task", 1024*10, NULL, 30, NULL, 0);
// vTaskDelay(2000);
// digitalWrite(rst_pin, 1);
// shutter_stop();
// }
// void sensor_rest()
// {
// digitalWrite(rst_pin, 0);
// // for(int i = 0; i < 10000; i++);
// vTaskDelay(1);
// // delayMicroseconds(50);
// digitalWrite(rst_pin, 1);
// }
// void sensor_write(uint8_t *data,uint32_t len)
// {
// Serial2.write(data,len);
// }
// void Send_Shutter_Time(uint32_t shutter_time) {
// uint32_t tt = shutter_time*1000;
// uint8_t t_buff[4];
// t_buff[0] = *((uint8_t *)&tt+3);
// t_buff[1] = *((uint8_t *)&tt+2);
// t_buff[2] = *((uint8_t *)&tt+1);
// t_buff[3] = *((uint8_t *)&tt);
// sensor_write(t_buff,4);
// }
// void sensor_read_task(void *pvParameters)
// {
// uint8_t *p = new uint8_t[1040];
// int indexnow=0;
// while (1)
// {
// if(read_flag == true)
// {
// int lent=0;
// u_char c=-1;
// while (1)
// {
// int temp = uart_read_bytes(2,p,1032,10);
// if(temp == 1032)
// {
// // p[lent] = c;
// // lent++;
// // if(lent >= 1032)
// // {
// lent = 1032;
// break;
// // }
// }
// else
// {
// read_flag = false;
// continue;
// }
// }
// memcpy(receive_buff2,p,lent);
// frame_count++;
// read_flag = false;
// continue;
// }
// else
// {
// if(Serial2.available())
// {
// Serial2.readBytes((uint8_t *)p, Serial2.available());
// }
// vTaskDelay(1);
// }
// }
// }
// void get_sensor_data(uint16_t *data_buff)
// {
// // sensor_rest();
// // xEventGroupSetBits(sensor_event_group, START_READ_BIT);
// uint32_t target = frame_count + 1;
// while(frame_count < target)
// {
// vTaskDelay(1);
// }
// if(target == frame_count)
// {
// for (int i = 0; i < 516; i++)
// {
// data_buff[i] = receive_buff2[i];
// }
// }
// }
// // void get_sensor_data(uint16_t *data_buff,int timewaitinms)
// // {
// // sensor_rest();
// // // xEventGroupSetBits(sensor_event_group, START_READ_BIT);
// // vTaskDelay(timewaitinms);
// // uint32_t target = frame_count + 1;
// // while(frame_count < target)
// // {
// // vTaskDelay(1);
// // }
// // if(target == frame_count)
// // {
// // for (int i = 0; i < 516; i++)
// // {
// // data_buff[i] = receive_buff2[i];
// // }
// // }
// // }
// void Shutter_Open(uint8_t shutter)
// {
// digitalWrite(Shutter2_pin, 1);
// digitalWrite(Shutter1_pin, 0);
// // if (shutter == Shutter_1)
// // {
// // digitalWrite( Shutter2_pin, 1);
// // digitalWrite(Shutter1_pin, 0);
// // }
// // else if(shutter == Shutter_2)
// // {
// // digitalWrite(Shutter1_pin, 1);
// // }
// }
// void shutter_stop()
// {
// digitalWrite(Shutter1_pin, 0);
// digitalWrite(Shutter2_pin, 0);
// }
// void Shutter_Close(uint8_t shutter)
// {
// digitalWrite(Shutter2_pin, 0);
// digitalWrite(Shutter1_pin, 1);
// // if (shutter == Shutter_1)
// // {
// // digitalWrite( Shutter1_pin, 1);
// // digitalWrite( Shutter2_pin, 0);
// // }
// // else if (shutter == Shutter_2)
// // {
// // digitalWrite(Shutter1_pin, 0);
// // }
// }
// void sensor_data_save(sensor_data *sensor_data_struct)
// {
// File file;
// file = SPIFFS.open("/system.bin", FILE_WRITE);
// file.write((uint8_t *)sensor_data_struct,sizeof(sensor_data));
// file.flush();
// file.close();
// }
// void sensor_data_read(sensor_data *sensor_data_struct)
// {
// File file;
// file = SPIFFS.open("/system.bin", FILE_READ);
// file.read((uint8_t *)sensor_data_struct,sizeof(sensor_data));
// file.flush();
// file.close();
// }
///////////////////////////////////////////////////////////////////////////////////
#include "Sensor.h"
#include "driver/uart.h"
@ -14,13 +267,25 @@ volatile bool read_flag = false;
#define rst_pin GPIO_NUM_38
void IRAM_ATTR handleFallingEdge()
{
// read_flag = true;
// count = 0;
// if(count == 3) digitalWrite(rst_pin, 0);
if(digitalRead(trigger_pin) == 0) read_flag = true;
else read_flag = false;
}
void uart2_init(void)
{
const uart_config_t uart_config = {
.baud_rate = 921600,
.data_bits = UART_DATA_8_BITS,
.parity = UART_PARITY_DISABLE,
.stop_bits = UART_STOP_BITS_1,
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
};
// We won't use a buffer for sending data.
uart_driver_install(UART_NUM_2, 1032, 1024 * 2, 0, NULL, 0);
uart_param_config(UART_NUM_2, &uart_config);
uart_set_pin(UART_NUM_2, tx, rx, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);
}
void sensor_init()
{
sensor_info.sn = 0;
@ -55,14 +320,14 @@ void sensor_init()
digitalWrite(rst_pin, 0);
vTaskDelay(36);
Serial2.setTimeout(1);
Serial2.setRxBufferSize(1032);
Serial2.setTxBufferSize(256);
Serial2.begin(921600,SERIAL_8N1,rx,tx);
// Serial2.setTimeout(1);
// Serial2.setRxBufferSize(1032);
// Serial2.setTxBufferSize(256);
// Serial2.begin(921600,SERIAL_8N1,rx,tx);
Send_Shutter_Time(12);
// Serial2.end();
sensor_event_group = xEventGroupCreate();
@ -71,9 +336,9 @@ void sensor_init()
xTaskCreatePinnedToCore(sensor_read_task, "sensor_read_task", 1024*10, NULL, 30, NULL, 0);
vTaskDelay(2000);
digitalWrite(rst_pin, 1);
shutter_stop();
// vTaskDelay(100);
// digitalWrite(rst_pin, 1);
// shutter_stop();
}
@ -89,7 +354,8 @@ void sensor_rest()
void sensor_write(uint8_t *data,uint32_t len)
{
Serial2.write(data,len);
// Serial2.write(data,len);
uart_write_bytes(UART_NUM_2, data, len);
}
void Send_Shutter_Time(uint32_t shutter_time) {
@ -106,56 +372,55 @@ void Send_Shutter_Time(uint32_t shutter_time) {
void sensor_read_task(void *pvParameters)
{
uart2_init();
vTaskDelay(100);
uart_flush_input(UART_NUM_2);
shutter_stop();
Send_Shutter_Time(12);
vTaskDelay(10);
digitalWrite(rst_pin, 1);
uint8_t *p = new uint8_t[1040];
int indexnow=0;
while (1)
{
if(read_flag == true)
uint32_t length = 0;
uart_get_buffered_data_len(UART_NUM_2, (size_t*)&length);
if(length > 0)
{
int lent=0;
u_char c=-1;
while (1)
{
int temp = uart_read_bytes(2,p,1032,10);
if(temp == 1032)
{
// p[lent] = c;
// lent++;
// if(lent >= 1032)
// {
lent = 1032;
break;
// }
}
else
{
read_flag = false;
continue;
}
}
memcpy(receive_buff2,p,lent);
int temp = uart_read_bytes(2,p,1032,10);
frame_count++;
read_flag = false;
continue;
}
else
{
if(Serial2.available())
if(temp == 1032 && p[0] == 0xff && p[1] == 0xff)
{
Serial2.readBytes((uint8_t *)p, Serial2.available());
lent = 1032;
memcpy(receive_buff2,p,lent);
frame_count++;
read_flag = false;
}
else
{
// read_flag = false;
digitalWrite(rst_pin, 0);
vTaskDelay(10);
uart_flush_input(UART_NUM_2);
vTaskDelay(10);
digitalWrite(rst_pin, 1);
// continue;
}
vTaskDelay(1);
}
vTaskDelay(1);
}
}
void get_sensor_data(uint16_t *data_buff)
{
// sensor_rest();
// xEventGroupSetBits(sensor_event_group, START_READ_BIT);
uint32_t target = frame_count + 1;
while(frame_count < target)
{
@ -170,38 +435,12 @@ void get_sensor_data(uint16_t *data_buff)
}
}
// void get_sensor_data(uint16_t *data_buff,int timewaitinms)
// {
// sensor_rest();
// // xEventGroupSetBits(sensor_event_group, START_READ_BIT);
// vTaskDelay(timewaitinms);
// uint32_t target = frame_count + 1;
// while(frame_count < target)
// {
// vTaskDelay(1);
// }
// if(target == frame_count)
// {
// for (int i = 0; i < 516; i++)
// {
// data_buff[i] = receive_buff2[i];
// }
// }
// }
void Shutter_Open(uint8_t shutter)
{
digitalWrite(Shutter2_pin, 1);
digitalWrite(Shutter1_pin, 0);
// if (shutter == Shutter_1)
// {
// digitalWrite( Shutter2_pin, 1);
// digitalWrite(Shutter1_pin, 0);
// }
// else if(shutter == Shutter_2)
// {
// digitalWrite(Shutter1_pin, 1);
// }
}
void shutter_stop()
@ -214,15 +453,7 @@ void Shutter_Close(uint8_t shutter)
{
digitalWrite(Shutter2_pin, 0);
digitalWrite(Shutter1_pin, 1);
// if (shutter == Shutter_1)
// {
// digitalWrite( Shutter1_pin, 1);
// digitalWrite( Shutter2_pin, 0);
// }
// else if (shutter == Shutter_2)
// {
// digitalWrite(Shutter1_pin, 0);
// }
}
@ -246,3 +477,4 @@ void sensor_data_read(sensor_data *sensor_data_struct)