

通俗理解的步骤就是链表通用模板定义(在头文件里定义)、链表的创建(头插尾插,在.C 文件里)、链表的初始化(init配置管脚初始电平等)、链表内容的读取(指令工厂TCP服务端读取客户端发来的指令、串口读取语音模块发来的指令)、链表的遍历查找(找到控制工厂里面需要被控制的链表节点)、链表内容的写入(写入来自指令工厂的控制指令)。
接收的指令,可以放在临时创建的变量里面,或者创建一个本地文件fd保存,或者一开始创建链表通用模板里面定义一个存放接收指令的数组,这样更方便访问。
继电器控制灯代码
contrlEquipments.h 文件(设备类)
#include <wiringPi.h> //wiringPi库
#include <stdio.h>
#include <stdlib.h>
struct Equipment //设备类
{
char equipName[128]; //设备名
int pinNum; //引脚号
int (*Init)(int pinNum); //“初始化设备”函数指针
int (*open)(int pinNum); //“打开设备”函数指针
int (*close)(int pinNum); //“关闭设备”函数指针
int (*readStatus)(int pinNum); //“读取设备状态”函数指针 为火灾报警器准备
int (*changeStatus)(int status); //“改变设备状态”函数指针
struct Equipment *next;
};
struct Equipment *addBathroomLightToEquipmentLink(struct Equipment *phead); //“浴室灯”加入设备链表函数声明
struct Equipment *addSecondfloorLightToEquipmentLink(struct Equipment *phead); //“二楼灯”加入设备链表函数声明
struct Equipment *addLivingroomLightToEquipmentLink(struct Equipment *phead); //“客厅灯”加入设备链表函数声明
struct Equipment *addRestaurantLightToEquipmentLink(struct Equipment *phead); //“餐厅灯”加入设备链表函数声明
mainPro.c 文件(主函数)
#include <stdio.h>
#include <string.h>
#include "contrlEquipments.h"
int main()
{
if(wiringPiSetup() == -1){ //使用wiringPi库,需初始化硬件
printf("wiringPiSetup failed!\n");
return -1;
}
struct Equipment *pequipHead = NULL;

文章介绍了一个使用RaspberryPi和链表结构来管理继电器控制家居灯光的系统。通过创建设备类,定义设备的初始化、打开、关闭等操作,将不同灯具(如浴室灯、二楼灯等)作为链表节点进行管理。在mainPro.c中,实现了链表遍历并打开所有灯的功能。另外,通过修改mainPro.c,可以实现按设备名称控制特定灯具的开关。
最低0.47元/天 解锁文章
2427

被折叠的 条评论
为什么被折叠?



