用C语言设计轨道电机的驱动库
一、设计目的
设计能驱动立体轨道电机的抽象驱动程序库。
二、设计要求
- 命名规范。
- 设计简单,方便使用。
- 体积小。
- 满足电机的移动、停止、初始化、恢复等控制,甚至通过网络控制。
三、设计内容
(一)属性封装
1、定义配置结构体
// 用于配置参数
typedef struct m1_config{char id[25] // 机器的唯一编号int speed; // 速度double init_x; // 初始x坐标double init_y; // 初始y坐标double init_z; // 初始z坐标
}m1_config;
2、定义会话结构体
typedef struct m1_session{int no; // 机器序号char name[20]; // 机器别名
}m1_session;
(二)初始化
初始设备的参数。
调用下列函数:
int m1_init(m1_config* config, m1_session* session)
传参: m1_config变量的指针,会话变量指针
返回值:为1代表成功,为0代表失败。
(三)移动工作头到指定位置
调用下列函数:
int m1_move(m1_session* session,double x, double y, double z)
传参:工作会话变量、目标的三维坐标值 (x, y, z)
返回值:为1代表成功,为0代表失败。
(四)暂停电机的运行
调用下列函数:
int m1_pause(m1_session* session)
传参:目标机器的连接工作会话变量。
返回值:为1代表成功,为0代表失败。
(五) 恢复电机的运行
调用下列函数:
int m1_resume(m1_session* session)
传参:目标机器的连接工作会话变量。
返回值:为1代表成功,为0代表失败。
(六)重置电机
将电机恢复到初始的状态。
调用下列函数:
int m1_reset(m1_session* session)
传参:目标设备的工作会话变量
返回值:为1代表成功,为0代表失败。
(七)获得运行状态
可以获得设备当前的运行状态
1、定义状态结构体
typedef struct m1_status{int status_no; // 状态编号double x; // 当前x坐标double y; // 当前y坐标double z; // 当前z坐标}m1_status;
2、定义下列函数
int m1_status(m1_session* session, m1_status* status)
传参:会话指针、m1_status的结构体变量的指针
返回值:如果为1代表成功,如果为0代表失败。
(八)设置监听函数
监听函数可以监听运行状态,作出一些指定的反应。
监听函数通过把函数名传递实现监听,监听函数内部可以调用m1_status结构体的值来获取实时状态。
有下列函数:
int m1_reg_listener(m1_session* session, int*p(m1_status* s_p, void* vp))
传参:会话指针、一个返回值为int,接收m1_status指针和任意指针作参数的函数。
返回值:如果为1代表成功,如果为0代表失败。
**
四、总结
本文只是介绍如何设计一个驱动程序的接口。
实际上接口是通用的,具体实现很复杂,需要硬件的支持,例如寄存器、处理器、总线的支持。
电机工作时需要供电,控制通断需要三极管和继电器。
感知状态需要传感器。
恢复和暂停需要外部用户的手动干预。
相关文章:
用C语言设计轨道电机的驱动库
一、设计目的 设计能驱动立体轨道电机的抽象驱动程序库。 二、设计要求 命名规范。设计简单,方便使用。体积小。满足电机的移动、停止、初始化、恢复等控制,甚至通过网络控制。 三、设计内容 (一)属性封装 1、定义配置结构体 // 用于配置参数 typed…...
HTML跳动的爱心
目录 写在前面 HTML简介 跳动的爱心 代码分析 运行结果 推荐文章 写在后面 写在前面 哎呀,这是谁的小心心?跳得好快吖! HTML简介 老生常谈啦,咱们还是从HTML开始吧! HTML是超文本标记语言(Hyper…...
汇编原理(二)
寄存器:所有寄存器都是16位(0-15),可以存放两个字节 AX,BX,CX,DX存放一般性数据,称为通用寄存器 AX的逻辑结构。最大存放的数据为2的16次方减1。可分为AH和AL,兼容8位寄存器。 字:1word 2Byte…...
Android Studio开发之路(十三)主题影响Button颜色问题解决及button自定义样式
一、问题描述 在开发过程中发现安卓的默认主题色是紫色,并且会导致button也是紫色,有时直接在xml布局文件中直接设置button的背景色或者设置背景图片不起效果 方案一、如果是app,可以直接设置主题颜色 比如,将主题设置为白色&a…...
eNSP学习——OSPF单区域配置
目录 相关命令 实验背景 实验目的 实验步骤 实验拓扑 实验编址 实验步骤 1、基础配置 2、部署单区域OSPF网络 3、检查OSPF单区域的配置结果 OSPF——开放式最短路径优先 基于链路状态的协议,具有收敛快、路由无环、扩展性好等优点; 相关命令 […...
深度学习中的优化算法二(Pytorch 19)
一 梯度下降 尽管梯度下降(gradient descent)很少直接用于深度学习,但了解它是理解下一节 随机梯度下降算法 的关键。例如,由于学习率过大,优化问题可能会发散,这种现象早已在梯度下降中出现。同样地&…...
R实验 方差分析
实验目的: 掌握单因素方差分析的思想和方法; 掌握多重均值检验方法; 掌握多个总体的方差齐性检验; 掌握Kruskal-Wallis秩和检验的思想和方法; 掌握多重Wilcoxon秩和检验的思想和方法。 实验内容: &…...
AI智能体|手把手教你使用扣子Coze图像流的文生图功能
大家好,我是无界生长。 AI智能体|手把手教你使用扣子Coze图像流的文生图功能本文详细介绍了Coze平台的\x26quot;图像流\x26quot;功能中的\x26quot;文生图\x26quot;节点,包括创建图像流、编排文生图节点、节点参数配置,并通过案例…...
应用程序图标提取
文章目录 [toc]提取过程提取案例——提取7-zip应用程序的图标 提取过程 找到需要提取图标的应用程序的.exe文件 复制.exe文件到桌面,并将复制的.exe文件后缀改为.zip 使用解压工具7-zip解压.zip文件 在解压后的文件夹中,在.rsrc/ICON路径下的.ico文件…...
Excel表格在线解密:轻松解密密码,快速恢复数据
忘记了excel表格密码?教你简单两步走:具体步骤如下。首先,在百度搜索中键入“密码帝官网”。其次,点击“立即开始”,在用户中心上传表格文件即可找回密码。这种方法不用下载软件,操作简单易行,适…...
springboot小结1
什么是springboot Spring Boot是为了简化Spring应用的创建、运行、调试、部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置。 简单来说,它提供了一堆依赖打包Starter,并已经按照使用习惯解决…...
【Qt 学习笔记】Qt窗口 | 菜单栏 | QMenuBar的使用及说明
博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt窗口 | 菜单栏 | QMenuBar的使用及说明 文章编号:Qt 学习…...
Spark运行模式详解
Spark概述 Spark 可以在多种不同的运行模式下执行,每种模式都有其自身的特点和适用场景。 部署Spark集群大体上分为两种模式:单机模式与集群模式。大多数分布式框架都支持单机模式,方便开发者调试框架的运行环境。但是在生产环境中ÿ…...
vcpkg环境配置
vcpkg 使用linux相关库,设置环境变量VCPKG_ROOT,设置cmake工具链$VCPKG_ROOT/scripts\buildsystems\vcpkg.cmake set VCPKG_DEFAULT_TRIPLETx64-windows .\vcpkg.exe install fftw3 freetype gettext glibmm gtkmm libjpeg-turbo libpng libxmlpp libs…...
python学习:基础语句
目录 条件语句 循环语句 for 循环 while 循环 break continue 条件语句 Python提供了 if、elif、else 来进行逻辑判断。格式如下: Pythonif 判断条件1: 执行语句1... elif 判断条件2: 执行语句2... elif 判断条件3: 执行语句3... else: 执行语句4…...
Nginx限制IP访问详解
在Web服务器管理中,限制某些IP地址访问网站是一个常见的需求。Nginx作为一款高性能的HTTP服务器和反向代理服务器,提供了灵活强大的配置选项来实现这一功能。本文将详细讲解如何在Nginx中限制IP访问,并通过示例代码展示具体操作。 一、Nginx…...
Three.js——二维平面、二维圆、自定义二维图形、立方体、球体、圆柱体、圆环、扭结、多面体、文字
个人简介 👀个人主页: 前端杂货铺 ⚡开源项目: rich-vue3 (基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL) 🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展 …...
24年湖南教资认定即将开始,别被照片卡审!
24年湖南教资认定即将开始,别被照片卡审!...
数据库(8)——DML数据操作
增添数据 给指定字段添加数据 INSERT INTO 表名 (字段名1,字段名2,...)VALUES(值1,值2...); 没有的添加的字段默认为NULL。 给全部字段添加数据 INSERT INTO 表名 VALUE (值1,值2,....值n); 此时值的顺序对应表中字段的顺序 批量添加数据 INSERT INTO 表名(字段1,…...
Gitee在已有项目基础上创建仓库中遇到的问题和解决
问题一:fatal: remote origin already exists 解释:当前仓库添加了一个名为"origin"的远程仓库配置,此时输入 git remote add origin https://xxx就会提示上面的内容。 解决方案1:移除旧的origin git remote remove origin 解决方案…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...
企业大模型服务合规指南:深度解析备案与登记制度
伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...
