-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.cpp
More file actions
117 lines (99 loc) · 5.43 KB
/
main.cpp
File metadata and controls
117 lines (99 loc) · 5.43 KB
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
#include "actcmdInterface.h"
#include "MyMessage.h"
int main()
{
printf("\r\n------------ act-cmd-generator ----------------\r\n");
CActCmdInterface lv_actCmd;
UC lv_tp[4] = {0};
char *lv_str;
//------------------------------------------------------------------
// Step 1: 初始化,请输入参数
// --> 要生成Act-cmd命令组的uid,需要与Action uid对应(1到64之间)
// --> 要生成Act-cmd命令组包含的命令数量(1至16之间)
// --> 示例:uid = 1, cmdCount = 3
//lv_actCmd.Init(1, 3);
//------------------------------------------------------------------
// Step 2: 依次添加命令,总数就是上面初始化时输入的
// --> 示例:第1条命令,调节灯节点8亮度和色温
//lv_actCmd.AddCmd_LightControl(8, 0, DEVICE_SW_ON, 65, 3500);
lv_actCmd.Init(1, 1);
//lv_actCmd.AddCmd_LightControl(9, 0, DEVICE_SW_ON, 10, 2700);
//43460101001201C63709092900000500010A8C0A00000000000000
//lv_actCmd.AddCmd_LightControl(9, 0, DEVICE_SW_ON, 80, 6500);
//43460101001201FEF4090929000005000250641900000000000000
//lv_actCmd.AddCmd_LightControl(255, 0, DEVICE_SW_ON, 80, 5500, NODE_TYP_LAMP);
// 434601010012019C8EFF29290000060001507C1501000000000000
//lv_actCmd.Init(2, 2);
//lv_actCmd.AddCmd_BRControl(9, 0, OPERATOR_ADD, 50);
//lv_actCmd.AddCmd_CCTControl(9, 0, OPERATOR_ADD, 3800);
//4346010100240232A109090300000201320000000000000000000009092500000301D80E000000000000000000
//lv_actCmd.Init(3, 2);
//lv_actCmd.AddCmd_BRControl(9, 0, OPERATOR_ADD, 40);
//lv_actCmd.AddCmd_CCTControl(9, 0, OPERATOR_SUB, 3800);
//43460101002403272509090300000201280000000000000000000009092500000302D80E000000000000000000
//lv_actCmd.Init(4, 2);
//lv_actCmd.AddCmd_BRControl(9, 0, OPERATOR_SUB, 40);
//lv_actCmd.AddCmd_CCTControl(9, 0, OPERATOR_ADD, 3800);
//43460101002404D32209090300000202280000000000000000000009092500000301D80E000000000000000000
//lv_actCmd.Init(5, 3);
//lv_actCmd.AddCmd_BRControl(9, 0, OPERATOR_SUB, 50);
//lv_actCmd.AddCmd_CCTControl(9, 0, OPERATOR_SUB, 3800);
//43460101002405C6A609090300000202320000000000000000000009092500000302D80E000000000000000000
//lv_actCmd.AddCmd_BRControl(8, 0, OPERATOR_SET, 50);
//lv_actCmd.AddCmd_CCTControl(8, 0, OPERATOR_SET, 3800);
//lv_actCmd.AddCmd_BRControl(9, 0, OPERATOR_SET, 65);
//4346010100240580CD08090300000200320000000000000000000008092500000300D80E000000000000000000
//4346010100360539DC08090300000200320000000000000000000008092500000300D80E000000000000000000090903000002004100000000000000000000
//lv_actCmd.Init(6, 10);
//lv_actCmd.AddCmd_SetState(9, 0, V_STATUS, DEVICE_SW_OFF);
//43460101001206C8F7090902000001000000000000000000000000
/*
lv_actCmd.AddCmd_LightControl(8, 0, DEVICE_SW_ON, 80, 6500);
lv_actCmd.AddCmd_LightControl(9, 0, DEVICE_SW_ON, 80, 6500);
lv_actCmd.AddCmd_LightControl(10, 0, DEVICE_SW_ON, 80, 6500);
lv_actCmd.AddCmd_LightControl(11, 0, DEVICE_SW_ON, 80, 6500);
lv_actCmd.AddCmd_LightControl(12, 0, DEVICE_SW_ON, 80, 6500);
lv_actCmd.AddCmd_LightControl(13, 0, DEVICE_SW_ON, 80, 6500);
lv_actCmd.AddCmd_LightControl(14, 0, DEVICE_SW_ON, 80, 6500);
lv_actCmd.AddCmd_LightControl(15, 0, DEVICE_SW_ON, 80, 6500);
lv_actCmd.AddCmd_LightControl(16, 0, DEVICE_SW_ON, 80, 6500);
lv_actCmd.AddCmd_LightControl(17, 0, DEVICE_SW_ON, 80, 6500);
*/
// --> 示例:延时15分钟关灯
lv_actCmd.AddCmd_SetState(9, 0, V_STATUS, DEVICE_SW_OFF, TM_MINUTE_UNIT, 15);
// --> 示例:第2条命令,调节全部空调节点
//lv_actCmd.AddCmd_ACControl(255, 0, 1, 1, 23, 1, 237, 0, NODE_TYP_AC);
// --> 示例:第3条命令,关闭全部风扇、新风节点
//lv_tp[0] = NODE_TYP_FAN;
//lv_tp[1] = NODE_TYP_AIRPURE;
//lv_actCmd.AddCmd_SetState(255, 0, V_STATUS, DEVICE_SW_OFF, 0, 0, 0, 2, lv_tp);
// --> 示例:客户化命令,继电器控制序列(e.g. 窗帘控制)
//const UC lv_payload[] = {5, 'p', '2', '_', 'p', '3'};
//const UC lv_payLoadLen = sizeof(lv_payload);
//lv_actCmd.AddCmd_CustomMessage(148, 0, C_SET, V_DOWN, lv_payload, lv_payLoadLen);
// --> 示例:继电器(窗帘)操作组合
//const char lv_relayStr[] = "p1,p2";
//const UC lv_relayStrLen = strlen(lv_relayStr);
//lv_actCmd.AddCmd_RelayString(148, 0, V_UP, lv_relayStrLen, lv_relayStr);
//...更多命令...
// --> 示例:客户化命令,继电器开关(e.g. 空开控制)
//const UC lv_payload[] = {0x01}; // ModBus SlaveID
//const UC lv_payLoadLen = sizeof(lv_payload);
//lv_actCmd.AddCmd_CustomMessage(185, 0, C_SET, V_RELAY_ON, lv_payload, lv_payLoadLen);
//lv_actCmd.AddCmd_CustomMessage(185, 0, C_SET, V_RELAY_OFF, lv_payload, lv_payLoadLen);
// --> 示例:客户化命令,ModBus写寄存器
// [addr][regH][regL][len]...
//const UC lv_payload[] = {0x01, 0x9E, 0x10, 0x01, 0x00, 0x01};
//const UC lv_payload[] = {0x01, 0x9E, 0x10, 0x01, 0x00, 0x04};
//const UC lv_payLoadLen = sizeof(lv_payload);
//lv_actCmd.AddCmd_CustomMessage(185, 0, C_SET, V_MODBUS_WRITE, lv_payload, lv_payLoadLen);
//------------------------------------------------------------------
// Step 3: 生成消息
lv_actCmd.Build(&lv_str);
//------------------------------------------------------------------
// 结果输出、显示
printf("uid: %d, cmd-count: %d, msg-len: %d, payload-len: %d, streamStr-len: %d\r\n", lv_actCmd.GetUID(),
lv_actCmd.GetCmdCount(), lv_actCmd.GetMsgLen(), lv_actCmd.GetPayloadLen(), lv_actCmd.GetMsgStringLen());
printf("streamStr: %s\r\n", lv_str);
//getchar();
}