first commit
This commit is contained in:
628
libraries/zf_device/zf_device_detector.c
Normal file
628
libraries/zf_device/zf_device_detector.c
Normal file
@@ -0,0 +1,628 @@
|
||||
/*********************************************************************************************************************
|
||||
* CH32V307VCT6 Opensourec Library <20><><EFBFBD><EFBFBD>CH32V307VCT6 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||
*
|
||||
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>CH32V307VCT6 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* CH32V307VCT6 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||
*
|
||||
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||
*
|
||||
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||
*
|
||||
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_wifi_spi
|
||||
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MounRiver Studio V1.8.1
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ CH32V307VCT6
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2023-05-25 <20><>W first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#include "zf_driver_uart.h"
|
||||
#include "zf_common_fifo.h"
|
||||
#include "zf_device_wireless_uart.h"
|
||||
#include "zf_device_bluetooth_ch9141.h"
|
||||
#include "zf_device_wifi_uart.h"
|
||||
#include "zf_device_wifi_spi.h"
|
||||
|
||||
#include "zf_device_detector.h"
|
||||
|
||||
|
||||
typedef uint32 (*detector_transfer_callback_function) (const uint8 *buff, uint32 length);
|
||||
typedef uint32 (*detector_receive_callback_function) (uint8 *buff, uint32 length);
|
||||
|
||||
detector_transfer_type_enum detector_transfer_type; // <20><><EFBFBD>ݴ<EFBFBD><DDB4>䷽ʽ
|
||||
|
||||
detector_transfer_callback_function detector_transfer_callback; // <20><><EFBFBD>ݷ<EFBFBD><DDB7>ͺ<EFBFBD><CDBA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
detector_receive_callback_function detector_receive_callback; // <20><><EFBFBD>ݽ<EFBFBD><DDBD>պ<EFBFBD><D5BA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
|
||||
detector_oscilloscope_struct detector_oscilloscope_data; // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static detector_camera_struct detector_camera_data; // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static detector_camera_dot_struct detector_camera_dot_data; // ͼ<><CDBC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static detector_camera_buffer_struct detector_camera_buffer; // ͼ<><CDBC><EFBFBD>Լ<EFBFBD><D4BC>߽绺<DFBD><E7BBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
|
||||
static fifo_struct detector_fifo;
|
||||
static uint8 detector_buffer[DETECTOR_BUFFER_SIZE]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float detector_parameter[DETECTOR_SET_PARAMETR_COUNT]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>IJ<EFBFBD><C4B2><EFBFBD>
|
||||
|
||||
////-------------------------------------------------------------------------------------------------------------------
|
||||
//// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4>ڷ<EFBFBD><DAB7>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
//// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
//// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵ij<CDB5><C4B3><EFBFBD>
|
||||
//// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
//// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
////-------------------------------------------------------------------------------------------------------------------
|
||||
//uint32 detector_debug_uart_transfer (const uint8 *buff, uint32 length)
|
||||
//{
|
||||
// uart_write_buffer(DEBUG_UART_INDEX, buff, length);
|
||||
// return 0;
|
||||
//}
|
||||
|
||||
////-------------------------------------------------------------------------------------------------------------------
|
||||
//// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4>ڽ<EFBFBD><DABD>պ<EFBFBD><D5BA><EFBFBD>
|
||||
//// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
//// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length <20><>Ҫ<EFBFBD><D2AA><EFBFBD>յij<D5B5><C4B3><EFBFBD>
|
||||
//// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʵ<>ʽ<EFBFBD><CABD>ճ<EFBFBD><D5B3><EFBFBD>
|
||||
//// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
////-------------------------------------------------------------------------------------------------------------------
|
||||
//uint32 detector_debug_uart_receive (uint8 *buff, uint32 length)
|
||||
//{
|
||||
// return debug_read_ring_buffer(buff, length);
|
||||
//}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ֽڷ<D6BD><DAB7>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 detector_custom_write_byte(const uint8 data)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>ֽڷ<D6BD><DAB7><EFBFBD>
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>巢<EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵ij<CDB5><C4B3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4>䷽ʽ<E4B7BD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD>ַ<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint32 detector_custom_transfer (const uint8 *buff, uint32 length)
|
||||
{
|
||||
uint32 send_length;
|
||||
send_length = length;
|
||||
|
||||
while(send_length--)
|
||||
{
|
||||
detector_custom_write_byte(*buff);
|
||||
buff++;
|
||||
}
|
||||
|
||||
return send_length;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>պ<EFBFBD><D5BA><EFBFBD> <20><><EFBFBD>ֽڽ<D6BD><DABD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0:<3A><><EFBFBD>ճɹ<D5B3> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> detector_custom_receive_byte <20><> detector_custom_receive<76><65><EFBFBD><EFBFBD> ֻ<><D6BB>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 detector_custom_receive_byte (uint8 data)
|
||||
{
|
||||
uint8 return_state = 0;
|
||||
// <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>ֽڷ<D6BD><DAB7><EFBFBD>
|
||||
if(FIFO_SUCCESS != fifo_write_buffer(&detector_fifo, &data, 1))
|
||||
{
|
||||
return_state = 1;
|
||||
}
|
||||
return return_state;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>պ<EFBFBD><D5BA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵ij<CDB5><C4B3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 0:<3A><><EFBFBD>ճɹ<D5B3> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> detector_custom_receive_byte <20><> detector_custom_receive<76><65><EFBFBD><EFBFBD> ֻ<><D6BB>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 detector_custom_receive (uint8 *buff, uint32 length)
|
||||
{
|
||||
uint8 return_state = 0;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>FIFO
|
||||
if(FIFO_SUCCESS != fifo_write_buffer(&detector_fifo, buff, length))
|
||||
{
|
||||
return_state = 1;
|
||||
}
|
||||
|
||||
return return_state;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4>ͷ<EFBFBD><CDB7>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *send_data <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> send_length <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵ij<CDB5><C4B3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʣ<><CAA3>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint32 detector_transfer (void *send_data, uint32 send_length)
|
||||
{
|
||||
return detector_transfer_callback((const uint8 *)send_data, send_length);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buffer <20><>ҪУ<D2AA><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> length У<>鳤<EFBFBD><E9B3A4>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><>ֵ
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 detector_sum (uint8 *buffer, uint32 length)
|
||||
{
|
||||
uint8 temp_sum = 0;
|
||||
|
||||
while(length--)
|
||||
{
|
||||
temp_sum += *buffer++;
|
||||
}
|
||||
|
||||
return temp_sum;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD> ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *image_addr ͼ<><CDBC><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_num ͼ<><CDBC><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void detector_camera_data_send (detector_image_type_enum camera_type, void *image_addr, uint8 boundary_num, uint16 width, uint16 height)
|
||||
{
|
||||
uint32 image_size = 0;
|
||||
|
||||
detector_camera_data.head = DETECTOR_SEND_HEAD;
|
||||
detector_camera_data.function = DETECTOR_CAMERA_FUNCTION;
|
||||
detector_camera_data.camera_type = (camera_type << 5) | ((image_addr != NULL ? 0 : 1) << 4) | boundary_num;
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>鲿<EFBFBD><E9B2BF>
|
||||
detector_camera_data.length = sizeof(detector_camera_struct);
|
||||
detector_camera_data.image_width = width;
|
||||
detector_camera_data.image_height = height;
|
||||
|
||||
// <20><><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><DCA1><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>͡<EFBFBD><CDA1>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ȸ߶ȵ<DFB6><C8B5><EFBFBD>Ϣ
|
||||
detector_transfer(&detector_camera_data, sizeof(detector_camera_struct));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>С
|
||||
switch(camera_type)
|
||||
{
|
||||
case DETECTOR_OV7725_BIN:
|
||||
{
|
||||
image_size = width * height / 8;
|
||||
}break;
|
||||
|
||||
case DETECTOR_MT9V03X:
|
||||
{
|
||||
image_size = width * height;
|
||||
}break;
|
||||
|
||||
case DETECTOR_SCC8660:
|
||||
{
|
||||
image_size = width * height * 2;
|
||||
}break;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != image_addr)
|
||||
{
|
||||
detector_transfer(image_addr, image_size);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD> ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBB>ƺ<EFBFBD><C6BA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_id <20><><EFBFBD><EFBFBD>ID
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_num <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *dot_x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *dot_y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void detector_camera_dot_send (detector_camera_buffer_struct *buffer)
|
||||
{
|
||||
uint8 i;
|
||||
uint16 dot_bytes = 0; // <20><><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
wifi_spi_send_multi_struct multi_buffer;
|
||||
|
||||
dot_bytes = detector_camera_dot_data.dot_num;
|
||||
|
||||
if(detector_camera_dot_data.dot_type & (1 << 5))
|
||||
{
|
||||
dot_bytes *= 2;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ʱ WIFI SPI<50><49><EFBFBD>ö<EFBFBD>Դ<EFBFBD><D4B4>ַ<EFBFBD><D6B7><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>,<2C><><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD><EFBFBD>ٶ<EFBFBD>
|
||||
if(DETECTOR_WIFI_SPI == detector_transfer_type)
|
||||
{
|
||||
multi_buffer.source[0] = (uint8 *)&detector_camera_dot_data;
|
||||
multi_buffer.length[0] = sizeof(detector_camera_dot_struct);
|
||||
|
||||
for(i=0; i < DETECTOR_CAMERA_MAX_BOUNDARY; i++)
|
||||
{
|
||||
multi_buffer.source[i * 2 + 1] = buffer->boundary_x[i];
|
||||
multi_buffer.source[i * 2 + 2] = buffer->boundary_y[i];
|
||||
|
||||
multi_buffer.length[i * 2 + 1] = dot_bytes;
|
||||
multi_buffer.length[i * 2 + 2] = dot_bytes;
|
||||
}
|
||||
|
||||
wifi_spi_send_buffer_multi(&multi_buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
// <20><><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>֡ͷ<D6A1><CDB7><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><DCA1>߽<EFBFBD><DFBD><EFBFBD><EFBFBD>š<EFBFBD><C5A1><EFBFBD><EFBFBD>곤<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
detector_transfer(&detector_camera_dot_data, sizeof(detector_camera_dot_struct));
|
||||
|
||||
for(i=0; i < DETECTOR_CAMERA_MAX_BOUNDARY; i++)
|
||||
{
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != buffer->boundary_x[i])
|
||||
{
|
||||
detector_transfer(buffer->boundary_x[i], dot_bytes);
|
||||
}
|
||||
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(NULL != buffer->boundary_y[i])
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>ʾÿһ<C3BF><D2BB>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB><EFBFBD>߽<EFBFBD>
|
||||
// ָ<><D6B8><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ַ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ͬһ<CDAC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨<EFBFBD>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䡣
|
||||
detector_transfer(buffer->boundary_y[i], dot_bytes);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD> <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *detector_oscilloscope ʾ<><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> detector_oscilloscope_send(&detector_oscilloscope_data);
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void detector_oscilloscope_send (detector_oscilloscope_struct *detector_oscilloscope)
|
||||
{
|
||||
uint8 packet_size;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
detector_oscilloscope->channel_num &= 0x0f;
|
||||
|
||||
zf_assert(DETECTOR_SET_OSCILLOSCOPE_COUNT >= detector_oscilloscope->channel_num);
|
||||
|
||||
// ֡ͷ
|
||||
detector_oscilloscope->head = DETECTOR_SEND_HEAD;
|
||||
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
packet_size = sizeof(detector_oscilloscope_struct) - (DETECTOR_SET_OSCILLOSCOPE_COUNT - detector_oscilloscope->channel_num) * 4;
|
||||
detector_oscilloscope->length = packet_size;
|
||||
|
||||
// д<>빦<EFBFBD><EBB9A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
detector_oscilloscope->channel_num |= DETECTOR_CAMERA_OSCILLOSCOPE;
|
||||
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
detector_oscilloscope->check_sum = 0;
|
||||
detector_oscilloscope->check_sum = detector_sum((uint8 *)&detector_oscilloscope_data, packet_size);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>detector_oscilloscope_data.data[]
|
||||
|
||||
detector_transfer((uint8 *)detector_oscilloscope, packet_size);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> camera_type ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> image_addr ͼ<><CDBC><EFBFBD><EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾֻ<CABE><D6BB><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> width ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> height ͼ<><CDBC><EFBFBD>߶<EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> detector_camera_information_config(DETECTOR_MT9V03X, mt9v03x_image[0], MT9V03X_W, MT9V03X_H);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void detector_camera_information_config (detector_image_type_enum camera_type, void *image_addr, uint16 width, uint16 height)
|
||||
{
|
||||
detector_camera_dot_data.head = DETECTOR_SEND_HEAD;
|
||||
detector_camera_dot_data.function = DETECTOR_CAMERA_DOT_FUNCTION;
|
||||
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
detector_camera_dot_data.length = sizeof(detector_camera_dot_struct);
|
||||
|
||||
detector_camera_buffer.camera_type = camera_type;
|
||||
detector_camera_buffer.image_addr = image_addr;
|
||||
detector_camera_buffer.width = width;
|
||||
detector_camera_buffer.height = height;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> boundary_type <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_num һ<><D2BB><EFBFBD>߽<EFBFBD><DFBD>ж<EFBFBD><D0B6>ٸ<EFBFBD><D9B8><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x1 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>1
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x2 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>2
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_x3 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>3
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y1 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>1
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y2 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>2
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dot_y3 <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>3
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> detector_camera_config(X_BOUNDARY, MT9V03X_H, x1_boundary, x2_boundary, x3_boundary, NULL, NULL, NULL); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> detector_camera_config(Y_BOUNDARY, MT9V03X_W, NULL, NULL, NULL, y1_boundary, y2_boundary, y3_boundary); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> detector_camera_config(XY_BOUNDARY, 160, xy_x1_boundary, xy_x2_boundary, xy_x3_boundary, xy_y1_boundary, xy_y2_boundary, xy_y3_boundary); // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD>߰<EFBFBD><DFB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void detector_camera_boundary_config (detector_boundary_type_enum boundary_type, uint16 dot_num, void *dot_x1, void *dot_x2, void *dot_x3, void *dot_y1, void *dot_y2, void *dot_y3)
|
||||
{
|
||||
uint8 i = 0;
|
||||
uint8 boundary_num = 0;
|
||||
uint8 boundary_data_type = 0;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>ô˺<C3B4><CBBA><EFBFBD>֮ǰ<D6AE><C7B0>Ҫ<EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>detector_camera_config<69><67><EFBFBD>ú<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ϣ
|
||||
zf_assert(0 != detector_camera_buffer.camera_type);
|
||||
|
||||
detector_camera_dot_data.dot_num = dot_num;
|
||||
|
||||
detector_camera_dot_data.valid_flag = 0;
|
||||
for(i = 0; i < 3; i++)
|
||||
{
|
||||
detector_camera_buffer.boundary_x[i] = NULL;
|
||||
detector_camera_buffer.boundary_y[i] = NULL;
|
||||
}
|
||||
|
||||
switch(boundary_type)
|
||||
{
|
||||
case X_BOUNDARY:
|
||||
{
|
||||
if(NULL != dot_x1)
|
||||
{
|
||||
boundary_num++;
|
||||
detector_camera_dot_data.valid_flag |= 1 << 0;
|
||||
detector_camera_buffer.boundary_x[i++] = dot_x1;
|
||||
}
|
||||
if(NULL != dot_x2)
|
||||
{
|
||||
boundary_num++;
|
||||
detector_camera_dot_data.valid_flag |= 1 << 1;
|
||||
detector_camera_buffer.boundary_x[i++] = dot_x2;
|
||||
}
|
||||
if(NULL != dot_x3)
|
||||
{
|
||||
boundary_num++;
|
||||
detector_camera_dot_data.valid_flag |= 1 << 2;
|
||||
detector_camera_buffer.boundary_x[i++] = dot_x3;
|
||||
}
|
||||
|
||||
if(255 < detector_camera_buffer.height)
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case Y_BOUNDARY:
|
||||
{
|
||||
if(NULL != dot_y1)
|
||||
{
|
||||
boundary_num++;
|
||||
detector_camera_dot_data.valid_flag |= 1 << 0;
|
||||
detector_camera_buffer.boundary_y[i++] = dot_y1;
|
||||
}
|
||||
if(NULL != dot_y2)
|
||||
{
|
||||
boundary_num++;
|
||||
detector_camera_dot_data.valid_flag |= 1 << 1;
|
||||
detector_camera_buffer.boundary_y[i++] = dot_y2;
|
||||
}
|
||||
if(NULL != dot_y3)
|
||||
{
|
||||
boundary_num++;
|
||||
detector_camera_dot_data.valid_flag |= 1 << 2;
|
||||
detector_camera_buffer.boundary_y[i++] = dot_y3;
|
||||
}
|
||||
|
||||
if(255 < detector_camera_buffer.width)
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case XY_BOUNDARY:
|
||||
{
|
||||
if((NULL != dot_x1) && (NULL != dot_y1))
|
||||
{
|
||||
boundary_num++;
|
||||
detector_camera_dot_data.valid_flag |= 1 << 0;
|
||||
detector_camera_buffer.boundary_x[i] = dot_x1;
|
||||
detector_camera_buffer.boundary_y[i++] = dot_y1;
|
||||
}
|
||||
if((NULL != dot_x2) && (NULL != dot_y2))
|
||||
{
|
||||
boundary_num++;
|
||||
detector_camera_dot_data.valid_flag |= 1 << 1;
|
||||
detector_camera_buffer.boundary_x[i] = dot_x2;
|
||||
detector_camera_buffer.boundary_y[i++] = dot_y2;
|
||||
}
|
||||
if((NULL != dot_x3) && (NULL != dot_y3))
|
||||
{
|
||||
boundary_num++;
|
||||
detector_camera_dot_data.valid_flag |= 1 << 2;
|
||||
detector_camera_buffer.boundary_x[i] = dot_x3;
|
||||
detector_camera_buffer.boundary_y[i++] = dot_y3;
|
||||
}
|
||||
|
||||
if((255 < detector_camera_buffer.width) || (255 < detector_camera_buffer.height))
|
||||
{
|
||||
boundary_data_type = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case NO_BOUNDARY:break;
|
||||
}
|
||||
|
||||
detector_camera_dot_data.dot_type = (boundary_type << 6) | (boundary_data_type << 5) | boundary_num;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷͼ<CDB7><CDBC>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڵ<EFBFBD><DAB5><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>һ<EFBFBD><D2BB>detector_camera_config<69><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void detector_camera_send (void)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
zf_assert(0 != detector_camera_buffer.camera_type);
|
||||
|
||||
detector_camera_data_send(detector_camera_buffer.camera_type, detector_camera_buffer.image_addr, detector_camera_dot_data.dot_type & 0x0f, detector_camera_buffer.width, detector_camera_buffer.height);
|
||||
|
||||
if(detector_camera_dot_data.dot_type & 0x0f)
|
||||
{
|
||||
detector_camera_dot_send(&detector_camera_buffer);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> <20><><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>Ҫ<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>PIT<49>жϻ<D0B6><CFBB><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void detector_data_analysis (void)
|
||||
{
|
||||
uint8 temp_sum;
|
||||
uint32 read_length;
|
||||
detector_parameter_struct *receive_packet;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>uint32<33><32><EFBFBD>ж<EFBFBD><D0B6>壬Ŀ<E5A3AC><C4BF><EFBFBD><EFBFBD>Ϊ<EFBFBD>˱<EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD>
|
||||
uint32 temp_buffer[DETECTOR_BUFFER_SIZE / 4];
|
||||
|
||||
// <20><><EFBFBD>Զ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4>䷽ʽ<E4B7BD><CABD><EFBFBD>ӽ<EFBFBD><D3BD>ջص<D5BB><D8B5>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
if(DETECTOR_CUSTOM != detector_transfer_type)
|
||||
{
|
||||
read_length = detector_receive_callback((uint8 *)temp_buffer, DETECTOR_BUFFER_SIZE);
|
||||
if(read_length)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>FIFO
|
||||
fifo_write_buffer(&detector_fifo, (uint8 *)temp_buffer, read_length);
|
||||
}
|
||||
}
|
||||
|
||||
while(sizeof(detector_parameter_struct) <= fifo_used(&detector_fifo))
|
||||
{
|
||||
read_length = sizeof(detector_parameter_struct);
|
||||
fifo_read_buffer(&detector_fifo, (uint8 *)temp_buffer, &read_length, FIFO_READ_ONLY);
|
||||
|
||||
if(DETECTOR_RECEIVE_HEAD != ((uint8 *)temp_buffer)[0])
|
||||
{
|
||||
// û<><C3BB>֡ͷ<D6A1><CDB7><EFBFBD><EFBFBD>FIFO<46><4F>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
read_length = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// <20>ҵ<EFBFBD>֡ͷ
|
||||
receive_packet = (detector_parameter_struct *)temp_buffer;
|
||||
temp_sum = receive_packet->check_sum;
|
||||
receive_packet->check_sum = 0;
|
||||
if(temp_sum == detector_sum((uint8 *)temp_buffer, sizeof(detector_parameter_struct)))
|
||||
{
|
||||
// <20><>У<EFBFBD><D0A3><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
detector_parameter[receive_packet->channel - 1] = receive_packet->data;
|
||||
}
|
||||
else
|
||||
{
|
||||
read_length = 1;
|
||||
}
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
fifo_read_buffer(&detector_fifo, NULL, &read_length, FIFO_READ_AND_CLEAN);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>δ<EFBFBD><CEB4><EFBFBD> <20><>ʼ<EFBFBD><CABC>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> transfer_type ѡ<><D1A1>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void detector_init (detector_transfer_type_enum transfer_type)
|
||||
{
|
||||
detector_transfer_type = transfer_type;
|
||||
|
||||
fifo_init(&detector_fifo, FIFO_DATA_8BIT, detector_buffer, DETECTOR_BUFFER_SIZE);
|
||||
|
||||
switch(detector_transfer_type)
|
||||
{
|
||||
case DETECTOR_DEBUG_UART:
|
||||
{
|
||||
detector_transfer_callback = debug_send_buffer;
|
||||
detector_receive_callback = debug_read_ring_buffer;
|
||||
}break;
|
||||
|
||||
case DETECTOR_WIRELESS_UART:
|
||||
{
|
||||
detector_transfer_callback = wireless_uart_send_buffer;
|
||||
detector_receive_callback = wireless_uart_read_buffer;
|
||||
}break;
|
||||
|
||||
case DETECTOR_CH9141:
|
||||
{
|
||||
detector_transfer_callback = bluetooth_ch9141_send_buffer;
|
||||
detector_receive_callback = bluetooth_ch9141_read_buffer;
|
||||
}break;
|
||||
|
||||
case DETECTOR_WIFI_UART:
|
||||
{
|
||||
detector_transfer_callback = wifi_uart_send_buffer;
|
||||
detector_receive_callback = wifi_uart_read_buffer;
|
||||
}break;
|
||||
|
||||
case DETECTOR_WIFI_SPI:
|
||||
{
|
||||
detector_transfer_callback = wifi_spi_send_buffer;
|
||||
detector_receive_callback = wifi_spi_read_buffer;
|
||||
}break;
|
||||
|
||||
case DETECTOR_CUSTOM:
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>detector_custom_write_byte<74><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĴ<DDB5><C4B4><EFBFBD>
|
||||
detector_transfer_callback = detector_custom_transfer;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><C3BD>ջص<D5BB>
|
||||
|
||||
// <20>ں<EFBFBD><DABA>ʵ<EFBFBD>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD>detector_custom_receive <20><><EFBFBD><EFBFBD> detector_custom_receive_byte<74><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>
|
||||
// detector_custom_receive <20><><EFBFBD><EFBFBD> detector_custom_receive_byte<74><65><EFBFBD><EFBFBD> ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>ֽڽ<D6BD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻᱻд<E1B1BB><D0B4>detector_fifo<66>У<EFBFBD> <20>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
||||
//detector_receive_callback = detector_custom_receive;
|
||||
|
||||
}break;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user