//=====================================================================================================
//                       DataScope 下位机协议帧生成库 v1.0
//Files : DataScope_CP.H & DataScope_CP.Lib
//Author: L.S.H. @ ACE-Tech   
//Date  : 2014.02.03
//=====================================================================================================

/******************************************************************************************************
////////////////////////////// 一、前言 /////////////////////////////////////

注意：
      使用此库文件前，请先确保您系统的串口通讯正常工作。
			
			若您是第一次尝试和 DataScope 建立通讯，不妨仔细浏览余下内容。

###################################################################################

1、库文件将帮助您快速、简易的搭建起与 DataScope 的数据通讯。
2、使用库，您无需了解通讯协议，只需调用相应的函数，并通过串口发送帧数据即可。
3、库文件将占用您系统的部分资源。
4、如需获取更多资源，请访问我们的官网：http://www.ACE--Tech.com
5、DataScope 讨论群：127044172
    
//=====================================================================================================
////////////////////////////// 二、库版本里程碑 /////////////////////////////////////

1、 2014.01.03  --  DataScope 下位机协议库 v1.0 创建。

 
//=====================================================================================================
////////////////////////////// 三、资源占用 /////////////////////////////////////

//库文件(v1.0)，ROM及RAM占用情况参考：

  226 bytes of CODE memory  ( At Cortex-M3 ) 
  44  bytes of DATA memory  ( At Cortex-M3 )

使用我们提供的库文件将占用您系统 226 字节的存储空间及 44 字节的随机存储空间。

若需要编写适用于您自己系统下的发送协议，
请在我们官网中 DataScope 板块中查找参考内容
 
//=====================================================================================================
////////////////////////////// 四、库文件说明及使用例子 /////////////////////////////////////
 
         v1.0 版本库文件拥有一个 42 字节宽度的数组及 2 个功能函数。

数组：DataScope_OutPut_Buffer[42] ，待发送帧数据缓存区，里面存放经过功能函数格式化后的待发送帧数据。 

功能函数：
         1、DataScope_Get_Channel_Data(float Data,unsigned char Channel) ：
				    此函数无返回。
						函数功能说明：将指定通道的待发送单精度浮点数据转换为字节数据存放至 DataScope_OutPut_Buffer (待发送帧数据缓存区)。
						              
						参数说明:
						          1、Channel，单字节无符号整型，识别范围：1 - 10
											   含义：指定本次数据对应哪个通道。
												 
						          2、Data ，  单精度浮点型。
											   含义：传递待转换的通道数据。
												 
         2、DataScope_Data_Generate(unsigned char Channel_Number) ：
				    返回一个单字节无符号整型。
						
						返回说明：返回串口需要发送的字节个数，返回 0 表示发生本次帧数据生成错误。
						
						函数功能说明：产生指定通道个数的待发送帧数据。存放至 DataScope_OutPut_Buffer (待发送帧数据缓存区)，
						
						参数说明;
						          1、Channel_Number，单字节无符号整型，识别范围：1 - 10
											   含义：设定需要发送的通道个数，最少1个通道，最多10个通道。
						
						补充说明：与 DataScope 通讯的帧数据长度不固定，故调用 DataScope_Data_Generate 时
						          传递不同的Channel_Number，将在DataScope_OutPut_Buffer中生成不同长度的 格式化帧数据。
						
--------------------------------------------------------------------------------------------------------
//MDK下库文件使用例子（stm32 发送10个通道数据）：
   
   int main(void)
   {
	   unsigned char i;          //计数变量
		 unsigned char Send_Count; //串口需要发送的数据个数
		 
		 uart_init(72,115200);     //串口1初始化， 波特率115200，数据位8，停止位1，无校验位，无流控制
		 
     while(1)            
	   { 		    		    				 
			DataScope_Get_Channel_Data( 1.0 , 1 ); //将数据 1.0  写入通道 1
      DataScope_Get_Channel_Data( 2.0 , 2 ); //将数据 2.0  写入通道 2
      DataScope_Get_Channel_Data( 3.0 , 3 ); //将数据 3.0  写入通道 3
      DataScope_Get_Channel_Data( 4.0 , 4 ); //将数据 4.0  写入通道 4
		  DataScope_Get_Channel_Data( 5.0 , 5 ); //将数据 5.0  写入通道 5
      DataScope_Get_Channel_Data( 6.0 , 6 ); //将数据 6.0  写入通道 6
			DataScope_Get_Channel_Data( 7.0 , 7 ); //将数据 7.0  写入通道 7
      DataScope_Get_Channel_Data( 8.0 , 8 ); //将数据 8.0  写入通道 8
			DataScope_Get_Channel_Data( 9.0 , 9 ); //将数据 9.0  写入通道 9
      DataScope_Get_Channel_Data( 10.0 , 10); //将数据 10.0 写入通道 10
 
	  	Send_Count = DataScope_Data_Generate(10); //生成10个通道的 格式化帧数据，返回帧数据长度
		
		  for( i = 0 ; i < Send_Count; i++)  //循环发送,直到发送完毕   
	 	  {
		    while((USART1->SR&0X40)==0);  
  	    USART1->DR = DataScope_OutPut_Buffer[i]; //从串口丢一个字节数据出去      
		  }
  
     delay_ms(50); //20fps, 帧间隔时间。 不同电脑配置及 USB-TTL 设备的优劣均会影响此时间的长短，建议实测为准。  
    }
	}

******************************************************************************************************/
//头文件内容：

#ifndef __DATA_PRTOCOL_H
#define __DATA_PRTOCOL_H
 
 
extern unsigned char DataScope_OutPut_Buffer[42];	   //待发送帧数据缓存区


void DataScope_Get_Channel_Data(float Data,unsigned char Channel);    // 写通道数据至 待发送帧数据缓存区

unsigned char DataScope_Data_Generate(unsigned char Channel_Number);  // 发送帧数据生成函数 
 
 
#endif 



