FSL系列 [FastSocketLibrary.h] DEV-C++ 套接字整合包

FSL 系列集合



什么是 FSL

FSL 名称全称

Fast Socket Library

关于 FSL 的简介

Fast Socket Library 实际上只是将 SOCKET 的常用函数以 默认 的方式封装在一起,以达成在写代码的时候快速方便。

注解

默认:例如:在 1.0 版本中设置了一个默认以 TCP/IP 为基础的局域网联机的函数模块

日期

此板块 开发时间:2023/02/11
此板块 完工时间:2023/02/11


版本 1.0

版本简介

这个版本是 FSL 系列的第一测试版本
这个版本只包括了 TCP SOCKET 的普通开启与连接

描述

FSL系列
介绍:DEV-C++上的快速套接字开启与连接;同时还搭载有其他扩展块,可以在很短的代码里实现多种功能。当然也可能会因为代码单一,无法实现自己的想法。但是没问题!FSL系列允许在原基础上进行修改,在保证原著作版权的情况下可以将自己的修改转载发布!重点的是FSL系列永远免费!
短版本:1.0
具体内容:https://blog.csdn.net/Hox_5/article/details/128894306

获取 < FastSocketLibrary.h [Version=1.0] >

资源名称:FastSocketLibrary.h [Version=1.0]
资源地址:On CSDN
价格:免费 (CSDN-0积分)
价格变化详情:不变化

问题报错

Case1: undefined reference to `__imp_WSAStartup’
错误原因: 未引用 ws2_32.lib
解决方法: (基于DEV-C++上)工具 → 编译选项 → 在连接器命令行加入以下命令 : 添加 -lws2_32 即可(Tools → Compiler Options → Add the following commands when calling the linker)。

日期

此板块 开发时间:2023/02/05
FSL 1.0 开发时间:2023/02/05
FSL 1.0 完工时间:2023/02/05
FSL 1.0 文件地址更新:2023/02/11
此板块 完工时间:2023/02/11
问题报错 更新:2023/02/11


下一版本更新介绍(版本 2.0)

前言

在 1.0 基础版本完善的情况下,准备更新 2.0 版本

更新内容

1、客户端尝试多次连接的函数 ConnectAgain()
2、服务端多线程连接
3、服务器对于多客户端的多线程接收与发送

补充

对于服务器的多线程连接以往是有发布过文章的,但是要把它整合成一个函数是有些许困难的,那么所造成的便是所需更新时间会很长

日期

此板块 开发时间:2023/02/05


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
非常抱歉,我给出的代码中引入了错误的头文件。在RT1064上,使用的是MCUXpresso SDK,正确的头文件应为 "fsl_lptmr.h" 而不是 "fsl_ftm.h"。以下是已修正的代码示例: ```c #include "fsl_common.h" #include "fsl_gpio.h" #include "fsl_lptmr.h" // 编码器引脚定义 #define ENCODER_PIN_A GPIO1, 0 #define ENCODER_PIN_B GPIO1, 1 // PWM引脚定义 #define PWM_PIN_1 GPIO1, 2 #define PWM_PIN_2 GPIO1, 3 // PID参数定义 #define KP 0.5f #define KI 0.2f #define KD 0.1f volatile int32_t encoderCount = 0; volatile int32_t targetPosition = 0; volatile float pwmOutput = 0.0f; volatile float error = 0.0f; volatile float integral = 0.0f; volatile float derivative = 0.0f; // 初始化编码器引脚 void encoderInit(void) { gpio_pin_config_t encoderPinConfig = { kGPIO_DigitalInput, 0, }; GPIO_PinInit(ENCODER_PIN_A, &encoderPinConfig); GPIO_PinInit(ENCODER_PIN_B, &encoderPinConfig); // 设置中断触发方式为边沿触发 GPIO_SetPinInterruptConfig(ENCODER_PIN_A, kGPIO_IntRisingEdge); GPIO_SetPinInterruptConfig(ENCODER_PIN_B, kGPIO_IntRisingEdge); // 使能编码器引脚的中断 EnableIRQ(GPIO1_Combined_0_15_IRQn); } // GPIO中断处理函数 void GPIO1_Combined_0_15_IRQHandler(void) { if (GPIO_PinRead(ENCODER_PIN_A)) { if (GPIO_PinRead(ENCODER_PIN_B)) { encoderCount++; } else { encoderCount--; } } else { if (GPIO_PinRead(ENCODER_PIN_B)) { encoderCount--; } else { encoderCount++; } } // 清除中断标志位 GPIO_ClearPinsInterruptFlags(GPIO1, 1U << 0); GPIO_ClearPinsInterruptFlags(GPIO1, 1U << 1); } // 初始化PWM引脚 void pwmInit(void) { gpio_pin_config_t pwmPinConfig = { kGPIO_DigitalOutput, 0, }; GPIO_PinInit(PWM_PIN_1, &pwmPinConfig); GPIO_PinInit(PWM_PIN_2, &pwmPinConfig); // 初始化PWM输出为低电平 GPIO_PinWrite(PWM_PIN_1, 0); GPIO_PinWrite(PWM_PIN_2, 0); } // 设置PWM输出 void setPWM(float dutyCycle) { if (dutyCycle > 0.0f) { GPIO_PinWrite(PWM_PIN_1, 1); GPIO_PinWrite(PWM_PIN_2, 0); } else if (dutyCycle < 0.0f) { GPIO_PinWrite(PWM_PIN_1, 0); GPIO_PinWrite(PWM_PIN_2, 1); } else { GPIO_PinWrite(PWM_PIN_1, 0); GPIO_PinWrite(PWM_PIN_2, 0); } } // PID控制函数 void pidControl(void) { float lastError = error; error = targetPosition - encoderCount; integral += error; derivative = error - lastError; pwmOutput = KP * error + KI * integral + KD * derivative; // 限制PWM输出范围在-1到1之间 if (pwmOutput > 1.0f) { pwmOutput = 1.0f; } else if (pwmOutput < -1.0f) { pwmOutput = -1.0f; } setPWM(pwmOutput); } int main(void) { // 初始化编码器和PWM引脚 encoderInit(); pwmInit(); while (1) { // 执行PID控制 pidControl(); } } ``` 非常抱歉给您带来的困惑!以上代码已经修正,使用正确的 "fsl_lptmr.h" 头文件。请根据实际情况进行适当的修改和调试。如果还有任何问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值