简介

使用setget方式实现的金字塔型架构,最下层仅提供函数调用,例如tcp,udp,uart,gpio等,第二层是模块层,这一层通过pthread线程实现自循环式模块实现,通过get与set对模块数据进行获取与设置.最后是逻辑层,仅对下层数据进行逻辑操作,不做模块实现.

文件结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
.
├── CMakeLists.txt
├── lib
│ └── libcontrolcan.so
└── src
├── GROUND_PANEL
│ ├── Driver
│ │ ├── Driver.h
│ │ ├── Driver_utils.cpp
│ │ ├── Driver_utils.h
│ │ ├── Gpio.cpp
│ │ ├── Gpio.h
│ │ ├── controlcan.cpp
│ │ ├── controlcan.h
│ │ ├── socketCAN.cpp
│ │ ├── socketCAN.h
│ │ ├── tcp_cilent.cpp
│ │ ├── tcp_cilent.h
│ │ ├── usart.cpp
│ │ └── usart.h
│ ├── Math
│ │ ├── Math.h
│ │ ├── pid_control.cpp
│ │ └── pid_control.h
│ ├── ThirdParts
│ │ ├── CFG_ini.cpp
│ │ ├── CFG_ini.h
│ │ ├── ModBUS
│ │ │ ├── ascii
│ │ │ │ ├── mbascii.c
│ │ │ │ └── mbascii.h
│ │ │ ├── functions
│ │ │ │ ├── mbfunccoils.c
│ │ │ │ ├── mbfuncdiag.c
│ │ │ │ ├── mbfuncdisc.c
│ │ │ │ ├── mbfuncholding.c
│ │ │ │ ├── mbfuncinput.c
│ │ │ │ ├── mbfuncother.c
│ │ │ │ └── mbutils.c
│ │ │ ├── include
│ │ │ │ ├── mb.h
│ │ │ │ ├── mbconfig.h
│ │ │ │ ├── mbframe.h
│ │ │ │ ├── mbfunc.h
│ │ │ │ ├── mbport.h
│ │ │ │ ├── mbproto.h
│ │ │ │ └── mbutils.h
│ │ │ ├── mb.c
│ │ │ ├── port
│ │ │ │ ├── port.h
│ │ │ │ ├── portevent.c
│ │ │ │ ├── portother.c
│ │ │ │ ├── portserial.c
│ │ │ │ └── porttimer.c
│ │ │ ├── rtu
│ │ │ │ ├── mbcrc.c
│ │ │ │ ├── mbcrc.h
│ │ │ │ ├── mbrtu.c
│ │ │ │ └── mbrtu.h
│ │ │ └── tcp
│ │ │ ├── mbtcp.c
│ │ │ └── mbtcp.h
│ │ ├── cJSON.c
│ │ ├── cJSON.h
│ │ ├── tinyxml2.cpp
│ │ └── tinyxml2.h
│ └── param
│ ├── AGVParameter.h
│ ├── CFG.c
│ ├── CFG.h
│ ├── env_configure.c
│ └── env_configure.h
├── Module
│ ├── ActionCTRL
│ │ ├── ActionCTRL.cpp
│ │ ├── ActionCTRL.h
│ │ └── ActionCTRLData.h
│ ├── Battery
│ │ ├── Battery.cpp
│ │ ├── Battery.h
│ │ ├── BatteryData.h
│ │ ├── EIKTO_battery.cpp
│ │ ├── EIKTO_battery.h
│ │ ├── FR_battery.cpp
│ │ └── FR_battery.h
│ ├── CommWithPC
│ │ ├── CommWithPC.cpp
│ │ ├── CommWithPC.h
│ │ └── CommWithPCData.h
│ ├── Encoder
│ │ ├── Encoder.cpp
│ │ ├── Encoder.h
│ │ ├── EncoderData.h
│ │ ├── TOFI_encoder.cpp
│ │ └── TOFI_encoder.h
│ ├── HandShank
│ │ ├── HandShank.cpp
│ │ ├── HandShank.h
│ │ ├── HandShankData.h
│ │ ├── Logitech_controller.cpp
│ │ └── Logitech_controller.h
│ ├── IoBoard
│ │ ├── IoBoard.cpp
│ │ ├── IoBoard.h
│ │ └── IoBoardData.h
│ ├── Location
│ │ ├── Location.cpp
│ │ ├── Location.h
│ │ └── LocationData.h
│ ├── Map
│ │ ├── LaserMAP.cpp
│ │ ├── LaserMAP.h
│ │ ├── Map.cpp
│ │ ├── Map.h
│ │ └── MapData.h
│ ├── Module.cpp
│ ├── Module.h
│ ├── MoveCTRL
│ │ ├── Kunhou
│ │ │ ├── Kunhou_cJSON.cpp
│ │ │ └── Kunhou_cJSON.h
│ │ ├── MoveCTRL.cpp
│ │ ├── MoveCTRL.h
│ │ ├── MoveCtrlData.h
│ │ └── Tongyi_Diff_Drive
│ │ ├── Tongyi_Driver.cpp
│ │ ├── Tongyi_Driver.h
│ │ ├── diff_control.cpp
│ │ └── diff_control.h
│ ├── log.cpp
│ └── log.h
├── Task
│ ├── ModbusHMI.cpp
│ ├── ModbusHMI.h
│ ├── Music_Led.cpp
│ ├── Music_Led.h
│ ├── Safety.cpp
│ ├── Safety.h
│ ├── Task.cpp
│ ├── Task.h
│ ├── autoCtrl.cpp
│ ├── autoCtrl.h
│ ├── manualCtrl.cpp
│ └── manualCtrl.h
└── main.cpp

注意

需要注意的一点是每个特定模块又三个对外文件,module.cpp module.h moduleData.h

模块使用,只有使用时初始化线程,如果不使用则注释掉

1
2
3
4
5
6
#include"HandShank.h"

void init_HandShank()
{
Logitech_thread();
}