登录
首页 » C# » 23种设计模式中的一种简单工厂的源码,有几种不同的实现方式。

23种设计模式中的一种简单工厂的源码,有几种不同的实现方式。

于 2022-02-14 发布 文件大小:30.50 kB
0 83
下载积分: 2 下载次数: 1

代码说明:

23种设计模式中的一种简单工厂的源码,有几种不同的实现方式。-23 kinds of design patterns in a simple plant source, there are several different ways.

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • stack
    说明:  堆栈的应用,堆栈的存储结构已及常用的基本操作(The application stack, stack, and used storage structure has been the basic operation of)
    2010-04-09 20:49:03下载
    积分:1
  • L476-SPWM
    实现全桥逆变的单片机控制部分,可以通过按键调节频率(30hz-100hz),也可以在半桥逆变输出模式下调节相位差(The realization of full bridge inverter control part of the microcontroller, you can adjust the frequency by the button (30hz-100hz), you can also adjust the phase difference in the half bridge inverter output mode)
    2017-08-08 17:57:24下载
    积分:1
  • DS18B20
    stm32 实现温度测量功能,外接温度传感器,实现实时测量并且在LCD实时显示(stm32 temperature measurement functions, external temperature sensor, real-time measurement and real-time display on LCD)
    2014-05-25 14:43:44下载
    积分:1
  • C#读取DICOM图像
    打开DICOM图像显示,并可以读取DICOM文件的TAG数据。
    2022-07-14 20:08:29下载
    积分:1
  • 步进电机位置速度双闭环串级调控
    /**   ******************************************************************************   ******************************************************************************   */ /* 包含头文件 ----------------------------------------------------------------*/ #include "stm32f1xx_hal.h" #include "StepMotor/bsp_STEPMOTOR.h"  #include "usart/bsp_debug_usart.h" #include "EncoderTIM/bsp_EncoderTIM.h" #include  #include  /* 私有类型定义 --------------------------------------------------------------*/ typedef struct  {   __IO float SetPoint;    // 目标值  单位:mm   __IO int LastError;     // 前一次误差       __IO int PrevError;     // 前两次误差   __IO long SumError;     // 累计误差   __IO double Proportion; // Kp系数   __IO double Integral;   // Ki系数   __IO double Derivative; // Kd系数 }PID; /* 私有宏定义 ----------------------------------------------------------------*/ #define TXDCYCLE                    1000    // 数据发送周期;单位:ms #define SAMPLING                    0x01    // 采样标记 #define TXD                         0x02    // 发送数据标记 #define MAX_SPEED                   200 #define abs(x)    ((x)Proportion * iError)                  // E[k]项               -(ptr->Integral * ptr->LastError)       // E[k-1]项               (ptr->Derivative * ptr->PrevError);    // E[k-2]项      ptr->PrevError = ptr->LastError;                    // 存储误差,用于下次计算   ptr->LastError = iError;   return(iIncpid);                                    // 返回增量值 } /**   * 函数功能:PID参数初始化   * 输入参数:无   * 返 回 值:无   * 说    明:无 */ void PID_Init() {   sPID.Proportion = 0.01;   //比例系数   sPID.Integral   = 0;      //积分系数   sPID.Derivative = 0;      //微分系数   sPID.LastError  = 0;      //前一次的误差   sPID.PrevError  = 0;      //前两次的误差   sPID.SetPoint   = 50;     //目标值   sPID.SumError   = 0;      //累计误差      vPID.Proportion = 0.035;  //比例系数   vPID.Integral   = 0.005;  //积分系数   vPID.Derivative = 0;      //微分系数   vPID.LastError  = 0;      //前一次的误差   vPID.PrevError  = 0;      //前两次的误差   vPID.SetPoint   = 7;      //目标值   vPID.SumError   = 0;      //累计误差  } /**   * 函数功能: 系统时钟配置   * 输入参数: 无   * 返 回 值: 无   * 说    明: 无   */ void SystemClock_Config(void) {   RCC_OscInitTypeDef RCC_OscInitStruct;   RCC_ClkInitTypeDef RCC_ClkInitStruct;   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;  // 外部晶振,8MHz   RCC_OscInitStruct.HSEState = RCC_HSE_ON;   RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;  // 9倍频,得到72MHz主时钟   HAL_RCC_OscConfig(&RCC_OscInitStruct);   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;       // 系统时钟:72MHz   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;              // AHB时钟:72MHz   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;               // APB1时钟:36MHz   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;               // APB2时钟:72MHz   HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);   // HAL_RCC_GetHCLKFreq()/1000    1ms中断一次 // HAL_RCC_GetHCLKFreq()/100000 10us中断一次 // HAL_RCC_GetHCLKFreq()/1000000 1us中断一次   HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);  // 配置并启动系统滴答定时器   /* 系统滴答定时器时钟源 */   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);   /* 系统滴答定时器中断优先级配置 */   HAL_NVIC_SetPriority(SysTick_IRQn, 1, 0); } /**   * 函数功能: 主函数.   * 输入参数: 无   * 返 回 值: 无   * 说    明: 无   */ int main(void) {    static float Dis_Exp_Val = 0;     // PID计算出来的期望值   static float Vel_Exp_Val = 0;     // PID计算出来的期望值   float Dis_Target = 0;             // 目标位置所对应编码器脉冲值   float Vel_Target = 0;             // 每单位采样周期内的脉冲数(频率)   uint16_t SUM_Pulse = 0;           // 1秒内的总脉冲   int16_t MSF = 0;                  // 电机反馈速度   __IO int32_t CaptureNumber=0;     // 输入捕获数   __IO int32_t Last_CaptureNumber=0;// 上一次捕获值   uint8_t aTxBuffer[SENDBUFF_SIZE]; // 串口DMA发送缓冲区   uint8_t Motion_Dir = 0;           // 电机运动方向   /* 复位所有外设,初始化Flash接口和系统滴答定时器 */   HAL_Init();   /* 配置系统时钟 */   SystemClock_Config();   /* 调试串口初始化 */   MX_DEBUG_USART_Init();    /* 编码器定时器初始化并配置输入捕获功能 */   ENCODER_TIMx_Init();   /* 启动编码器接口 */   HAL_TIM_Encoder_Start(&htimx_Encoder, TIM_CHANNEL_ALL);      /* PID参数初始化*/   PID_Init();   Dis_Target = (sPID.SetPoint*PPM);//目标位置所对应编码器脉冲值   Vel_Target = (vPID.SetPoint*P_PERIOD);//每单位采样周期内的脉冲数(频率)      /* 步进电机定时器初始化*/   STEPMOTOR_TIMx_Init();   /* 首先禁止步进电机动作*/   STEPMOTOR_OUTPUT_DISABLE();   /* 启动定时器 */   HAL_TIM_Base_Start(&htimx_STEPMOTOR);   /* 启动比较输出并使能中断 */   HAL_TIM_OC_Start_IT(&htimx_STEPMOTOR,TIM_CHANNEL_1);   /* 无限循环 */   while (1)   {      //采样和控制周期为20ms     if(Time_Flag & SAMPLING)     {       //获得编码器的脉冲值       CaptureNumber = OverflowCount*65535 __HAL_TIM_GET_COUNTER(&htimx_Encoder);       //M法 测速度       MSF = CaptureNumber  - Last_CaptureNumber;       Last_CaptureNumber = CaptureNumber;       MSF = abs(MSF);       //对速度进行累计,得到1s内的脉冲数       SUM_Pulse = MSF;              //位置环PID计算,根据计算结果判断电机运动方向       Dis_Exp_Val = IncPIDCalc(CaptureNumber,Dis_Target,&sPID);       Motion_Dir= Dis_Exp_Val= Vel_Target)         Dis_Exp_Val = Vel_Target;       Vel_Exp_Val = IncPIDCalc(MSF,Dis_Exp_Val,&vPID);       //当到达目标位置的时候,这时候已经电机非常慢了.为了减少超调,可以直接将速度环的输出清零       if(Vel_Exp_Val = TXDCYCLE)            // 1s   {     Time_Flag |= TXD;     time_count = 0;   } }
    2021-10-18 00:30:55下载
    积分:1
  • Qt下串口收发程序
    Qt下串口收发程序,包括工程,源代码,头文件,配置,亲测可用,在Linux操作系统下对串口设备进行收发数据,包括串口初始化,串口read,串口write。
    2023-01-29 17:35:03下载
    积分:1
  • 一个简单的频率测量程序
    这是一个比较精确的频率计程序,使用STM32,低频测试很精确
    2023-01-07 05:35:04下载
    积分:1
  • rc6
    RC6加密算法 的实现及说明 ,既展现Rc6的函数实现(RC6 Encryption Algorithm and description)
    2020-12-01 21:59:28下载
    积分:1
  • Least-squares
    在visual c++6.0的环境下,使用C++语言编写的最小二乘法程序。(In visual c++6.0 environment, using C++ language least squares procedure.)
    2011-06-24 14:33:54下载
    积分:1
  • nsga2
    多目标遗传算法,求得pareto最优解集,可以用于各种工程的数学计算(Multi-objective genetic algorithm, pareto optimal solution set is obtained, can be used for a variety of engineering mathematics)
    2016-05-13 15:06:06下载
    积分:1
  • 696518资源总数
  • 106215会员总数
  • 5今日下载