本發(fā)明屬于車輛控制,具體涉及一種事件驅(qū)動的車燈狀態(tài)機的控制方法。
背景技術(shù):
1、在車輛中會配置多個燈,比如車輛的各電子控制系統(tǒng)的指示燈。通常燈具有三種工作模式,包括常亮、常滅以及按某一頻率閃爍,需要控制燈在上述三種工作模式之間進行切換。在現(xiàn)有技術(shù)中,使用狀態(tài)機來表示燈的狀態(tài),狀態(tài)機包括亮和滅兩個狀態(tài)。當(dāng)需要車燈常亮?xí)r,讓狀態(tài)機保持在亮的狀態(tài)。當(dāng)需要車燈常滅時,讓狀態(tài)機保持在滅的狀態(tài)。在車輛實際運行過程中,車燈會收到來自各個模塊的不同控制請求,控制請求的類型多種多樣。并且隨著車輛技術(shù)的發(fā)展,對車燈的控制請求的種類也越來越多。當(dāng)需要新增控制請求的種類時,對于只有兩個狀態(tài)的狀態(tài)機,需要增加復(fù)雜的函數(shù)代碼,不利于實現(xiàn),代碼的可擴展性低。
技術(shù)實現(xiàn)思路
1、本發(fā)明的一個目的是提供一種事件驅(qū)動的車燈狀態(tài)機的控制方法,能夠解決現(xiàn)有技術(shù)中車燈狀態(tài)機代碼的可擴展性低的技術(shù)問題。
2、根據(jù)本發(fā)明的第一方面,提供了一種事件驅(qū)動的車燈狀態(tài)機的控制方法,包括:
3、獲取車燈狀態(tài)機的目標(biāo)事件,所述目標(biāo)事件包括亮燈事件、滅燈事件、閃爍事件、計時器清零、計時器清零且計數(shù)器清零;
4、根據(jù)所述目標(biāo)事件以及所述車燈狀態(tài)機的當(dāng)前狀態(tài),確定所述車燈狀態(tài)機的目標(biāo)狀態(tài);
5、將所述車燈狀態(tài)機切換至所述目標(biāo)狀態(tài);
6、執(zhí)行所述車燈狀態(tài)機的目標(biāo)狀態(tài)對應(yīng)的動作函數(shù);
7、其中,所述車燈狀態(tài)機的狀態(tài)包括穩(wěn)定狀態(tài)和過渡狀態(tài),所述穩(wěn)定狀態(tài)包括第一穩(wěn)定狀態(tài)、第二穩(wěn)定狀態(tài)、第三穩(wěn)定狀態(tài)、第四穩(wěn)定狀態(tài),所述過渡狀態(tài)包括第一過渡狀態(tài)、第二過渡狀態(tài)、第三過渡狀態(tài)、第四過渡狀態(tài)、第五過渡狀態(tài)、第六過渡狀態(tài)、第七過渡狀態(tài)、第八過渡狀態(tài)、第九過渡狀態(tài)、第十過渡狀態(tài)、第十一過渡狀態(tài);
8、第一穩(wěn)定狀態(tài)為車燈處于常滅的狀態(tài),所述第一穩(wěn)定狀態(tài)對應(yīng)的動作函數(shù)的內(nèi)容包括滅燈以及清零計時器和計數(shù)器;
9、第二穩(wěn)定狀態(tài)為車燈處于常亮的狀態(tài),所述第二穩(wěn)定狀態(tài)對應(yīng)的動作函數(shù)的內(nèi)容包括亮燈以及清零計時器和計數(shù)器;
10、第三穩(wěn)定狀態(tài)為車燈處于閃爍且燈亮的狀態(tài),所述第三穩(wěn)定狀態(tài)對應(yīng)的動作函數(shù)的內(nèi)容包括亮燈以及設(shè)置計時器和計數(shù)器;
11、第四穩(wěn)定狀態(tài)為車燈處于閃爍且燈滅的狀態(tài),所述第四穩(wěn)定狀態(tài)對應(yīng)的動作函數(shù)的內(nèi)容包括滅燈以及設(shè)置計時器和計數(shù)器;
12、第一過渡狀態(tài)下燈亮且有計時器和計數(shù)器,所述第一過渡狀態(tài)對應(yīng)的動作函數(shù)的內(nèi)容包括亮燈以及設(shè)置計時器和計數(shù)器;
13、第二過渡狀態(tài)下燈亮且有計時器和計數(shù)器,所述第二過渡狀態(tài)對應(yīng)的動作函數(shù)的內(nèi)容包括亮燈以及設(shè)置計時器和計數(shù)器;
14、第三過渡狀態(tài)下燈滅且有計時器和計數(shù)器,所述第三過渡狀態(tài)對應(yīng)的動作函數(shù)的內(nèi)容包括滅燈以及設(shè)置計時器和計數(shù)器;
15、所述第四過渡狀態(tài)、第五過渡狀態(tài)、第六過渡狀態(tài)下,燈的亮滅維持在切換前的狀態(tài),對應(yīng)的動作函數(shù)為空;
16、第七過渡狀態(tài)下燈滅且有計時器和計數(shù)器,所述第七過渡狀態(tài)對應(yīng)的動作函數(shù)的內(nèi)容包括滅燈以及設(shè)置計時器和計數(shù)器;
17、第八過渡狀態(tài)下燈亮且有計時器和計數(shù)器,所述第八過渡狀態(tài)對應(yīng)的動作函數(shù)的內(nèi)容包括亮燈以及設(shè)置計時器和計數(shù)器;
18、第九過渡狀態(tài)下燈滅且有計時器和計數(shù)器,所述第九過渡狀態(tài)對應(yīng)的動作函數(shù)的內(nèi)容包括滅燈以及設(shè)置計時器和計數(shù)器;
19、第十過渡狀態(tài)下燈亮且有計時器和計數(shù)器,所述第十過渡狀態(tài)對應(yīng)的動作函數(shù)的內(nèi)容包括亮燈以及設(shè)置計時器和計數(shù)器;
20、第十一過渡狀態(tài)下燈滅且有計時器和計數(shù)器,所述第十一過渡狀態(tài)對應(yīng)的動作函數(shù)的內(nèi)容包括滅燈以及設(shè)置計時器和計數(shù)器。
21、可選地,所述車燈狀態(tài)機的當(dāng)前狀態(tài)為第一穩(wěn)定狀態(tài),所述根據(jù)所述目標(biāo)事件以及所述車燈狀態(tài)機的當(dāng)前狀態(tài),確定所述車燈狀態(tài)機的目標(biāo)狀態(tài),包括:
22、在所述目標(biāo)事件為亮燈事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第一過渡狀態(tài);
23、在所述目標(biāo)事件為閃爍事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第二過渡狀態(tài);
24、在所述目標(biāo)事件為滅燈事件、計時器清零、計時器清零且計數(shù)器清零中任一種的情況下,忽略所述目標(biāo)事件。
25、可選地,所述車燈狀態(tài)機的當(dāng)前狀態(tài)為第二穩(wěn)定狀態(tài),所述根據(jù)所述目標(biāo)事件以及所述車燈狀態(tài)機的當(dāng)前狀態(tài),確定所述車燈狀態(tài)機的目標(biāo)狀態(tài),包括:
26、在所述目標(biāo)事件為滅燈事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第一穩(wěn)定狀態(tài);
27、在所述目標(biāo)事件為閃爍事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第二過渡狀態(tài);
28、在所述目標(biāo)事件為亮燈事件、計時器清零、計時器清零且計數(shù)器清零中任一種的情況下,忽略所述目標(biāo)事件。
29、可選地,所述車燈狀態(tài)機的當(dāng)前狀態(tài)為第三穩(wěn)定狀態(tài),所述根據(jù)所述目標(biāo)事件以及所述車燈狀態(tài)機的當(dāng)前狀態(tài),確定所述車燈狀態(tài)機的目標(biāo)狀態(tài),包括:
30、在所述目標(biāo)事件為亮燈事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第四過渡狀態(tài);
31、在所述目標(biāo)事件為滅燈事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第六過渡狀態(tài);
32、在所述目標(biāo)事件為計時器清零且計數(shù)器清零的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第四穩(wěn)定狀態(tài);
33、在所述目標(biāo)事件為閃爍事件或計時器清零的情況下,忽略所述目標(biāo)事件。
34、可選地,所述車燈狀態(tài)機的當(dāng)前狀態(tài)為第四穩(wěn)定狀態(tài),所述根據(jù)所述目標(biāo)事件以及所述車燈狀態(tài)機的當(dāng)前狀態(tài),確定所述車燈狀態(tài)機的目標(biāo)狀態(tài),包括:
35、在所述目標(biāo)事件為亮燈事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第四過渡狀態(tài);
36、在所述目標(biāo)事件為滅燈事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第五過渡狀態(tài);
37、在所述目標(biāo)事件為計時器清零且計數(shù)器清零的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第三穩(wěn)定狀態(tài);
38、在所述目標(biāo)事件為閃爍事件或計時器清零的情況下,忽略所述目標(biāo)事件。
39、可選地,所述車燈狀態(tài)機的當(dāng)前狀態(tài)為第一過渡狀態(tài),所述根據(jù)所述目標(biāo)事件以及所述車燈狀態(tài)機的當(dāng)前狀態(tài),確定所述車燈狀態(tài)機的目標(biāo)狀態(tài),包括:
40、在所述目標(biāo)事件為滅燈事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第五過渡狀態(tài);
41、在所述目標(biāo)事件為閃爍事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第二過渡狀態(tài);
42、在所述目標(biāo)事件為計時器清零且計數(shù)器清零的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第二穩(wěn)定狀態(tài);
43、在所述目標(biāo)事件為亮燈事件或計時器清零的情況下,忽略所述目標(biāo)事件。
44、可選地,所述車燈狀態(tài)機的當(dāng)前狀態(tài)為第二過渡狀態(tài),所述根據(jù)所述目標(biāo)事件以及所述車燈狀態(tài)機的當(dāng)前狀態(tài),確定所述車燈狀態(tài)機的目標(biāo)狀態(tài),包括:
45、在所述目標(biāo)事件為亮燈事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第八過渡狀態(tài);
46、在所述目標(biāo)事件為滅燈事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第十過渡狀態(tài);
47、在所述目標(biāo)事件為閃爍事件的情況下,忽略所述目標(biāo)事件;
48、在所述目標(biāo)事件為計時器清零的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第三過渡狀態(tài);
49、在所述目標(biāo)事件為計時器清零且計數(shù)器清零的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第四穩(wěn)定狀態(tài)。
50、可選地,所述車燈狀態(tài)機的當(dāng)前狀態(tài)為第三過渡狀態(tài),所述根據(jù)所述目標(biāo)事件以及所述車燈狀態(tài)機的當(dāng)前狀態(tài),確定所述車燈狀態(tài)機的目標(biāo)狀態(tài),包括:
51、在所述目標(biāo)事件為亮燈事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第九過渡狀態(tài);
52、在所述目標(biāo)事件為滅燈事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第十一過渡狀態(tài);
53、在所述目標(biāo)事件為閃爍事件的情況下,忽略所述目標(biāo)事件;
54、在所述目標(biāo)事件為計時器清零的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第二過渡狀態(tài);
55、在所述目標(biāo)事件為計時器清零且計數(shù)器清零的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第三穩(wěn)定狀態(tài)。
56、可選地,所述車燈狀態(tài)機的當(dāng)前狀態(tài)為第四過渡狀態(tài),所述根據(jù)所述目標(biāo)事件以及所述車燈狀態(tài)機的當(dāng)前狀態(tài),確定所述車燈狀態(tài)機的目標(biāo)狀態(tài),包括:
57、在所述目標(biāo)事件為滅燈事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第五過渡狀態(tài);
58、在所述目標(biāo)事件為閃爍事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第三穩(wěn)定狀態(tài);
59、在所述目標(biāo)事件為計時器清零且計數(shù)器清零的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第二穩(wěn)定狀態(tài);
60、在所述目標(biāo)事件為亮燈事件或計時器清零的情況下,忽略所述目標(biāo)事件。
61、可選地,所述車燈狀態(tài)機的當(dāng)前狀態(tài)為第五過渡狀態(tài),所述根據(jù)所述目標(biāo)事件以及所述車燈狀態(tài)機的當(dāng)前狀態(tài),確定所述車燈狀態(tài)機的目標(biāo)狀態(tài),包括:
62、在所述目標(biāo)事件為亮燈事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第四過渡狀態(tài);
63、在所述目標(biāo)事件為閃爍事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第四穩(wěn)定狀態(tài);
64、在所述目標(biāo)事件為計時器清零且計數(shù)器清零的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第一穩(wěn)定狀態(tài);
65、在所述目標(biāo)事件為滅燈事件或計時器清零的情況下,忽略所述目標(biāo)事件。
66、可選地,所述車燈狀態(tài)機的當(dāng)前狀態(tài)為第六過渡狀態(tài),所述根據(jù)所述目標(biāo)事件以及所述車燈狀態(tài)機的當(dāng)前狀態(tài),確定所述車燈狀態(tài)機的目標(biāo)狀態(tài),包括:
67、在所述目標(biāo)事件為亮燈事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第四過渡狀態(tài);
68、在所述目標(biāo)事件為閃爍事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第三穩(wěn)定狀態(tài);
69、在所述目標(biāo)事件為計時器清零且計數(shù)器清零的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第七過渡狀態(tài);
70、在所述目標(biāo)事件為滅燈事件或計時器清零的情況下,忽略所述目標(biāo)事件。
71、可選地,所述車燈狀態(tài)機的當(dāng)前狀態(tài)為第七過渡狀態(tài),所述根據(jù)所述目標(biāo)事件以及所述車燈狀態(tài)機的當(dāng)前狀態(tài),確定所述車燈狀態(tài)機的目標(biāo)狀態(tài),包括:
72、在所述目標(biāo)事件為亮燈事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第四過渡狀態(tài);
73、在所述目標(biāo)事件為閃爍事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第四穩(wěn)定狀態(tài);
74、在所述目標(biāo)事件為計時器清零且計數(shù)器清零的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第一穩(wěn)定狀態(tài);
75、在所述目標(biāo)事件為滅燈事件或計時器清零的情況下,忽略所述目標(biāo)事件。
76、可選地,所述車燈狀態(tài)機的當(dāng)前狀態(tài)為第八過渡狀態(tài),所述根據(jù)所述目標(biāo)事件以及所述車燈狀態(tài)機的當(dāng)前狀態(tài),確定所述車燈狀態(tài)機的目標(biāo)狀態(tài),包括:
77、在所述目標(biāo)事件為亮燈事件的情況下,忽略所述目標(biāo)事件;
78、在所述目標(biāo)事件為滅燈事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第十過渡狀態(tài);
79、在所述目標(biāo)事件為閃爍事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第二過渡狀態(tài);
80、在所述目標(biāo)事件為計時器清零的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第九過渡狀態(tài);
81、在所述目標(biāo)事件為計時器清零且計數(shù)器清零的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第九過渡狀態(tài)。
82、可選地,所述車燈狀態(tài)機的當(dāng)前狀態(tài)為第九過渡狀態(tài),所述根據(jù)所述目標(biāo)事件以及所述車燈狀態(tài)機的當(dāng)前狀態(tài),確定所述車燈狀態(tài)機的目標(biāo)狀態(tài),包括:
83、在所述目標(biāo)事件為亮燈事件的情況下,忽略所述目標(biāo)事件;
84、在所述目標(biāo)事件為滅燈事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第十一過渡狀態(tài);
85、在所述目標(biāo)事件為閃爍事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第三過渡狀態(tài);
86、在所述目標(biāo)事件為計時器清零的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第八過渡狀態(tài);
87、在所述目標(biāo)事件為計時器清零且計數(shù)器清零的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第一過渡狀態(tài)。
88、可選地,所述車燈狀態(tài)機的當(dāng)前狀態(tài)為第十過渡狀態(tài),所述根據(jù)所述目標(biāo)事件以及所述車燈狀態(tài)機的當(dāng)前狀態(tài),確定所述車燈狀態(tài)機的目標(biāo)狀態(tài),包括:
89、在所述目標(biāo)事件為亮燈事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第八過渡狀態(tài);
90、在所述目標(biāo)事件為滅燈事件的情況下,忽略所述目標(biāo)事件;
91、在所述目標(biāo)事件為閃爍事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第二過渡狀態(tài);
92、在所述目標(biāo)事件為計時器清零的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第十一過渡狀態(tài);
93、在所述目標(biāo)事件為計時器清零且計數(shù)器清零的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第十一過渡狀態(tài)。
94、可選地,所述車燈狀態(tài)機的當(dāng)前狀態(tài)為第十一過渡狀態(tài),所述根據(jù)所述目標(biāo)事件以及所述車燈狀態(tài)機的當(dāng)前狀態(tài),確定所述車燈狀態(tài)機的目標(biāo)狀態(tài),包括:
95、在所述目標(biāo)事件為亮燈事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第九過渡狀態(tài);
96、在所述目標(biāo)事件為滅燈事件的情況下,忽略所述目標(biāo)事件;
97、在所述目標(biāo)事件為閃爍事件的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第三過渡狀態(tài);
98、在所述目標(biāo)事件為計時器清零的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第十過渡狀態(tài);
99、在所述目標(biāo)事件為計時器清零且計數(shù)器清零的情況下,確定所述車燈狀態(tài)機的目標(biāo)狀態(tài)為第一穩(wěn)定狀態(tài)。
100、本發(fā)明的有益效果在于:本發(fā)明通過設(shè)置多種穩(wěn)定狀態(tài)和多種過渡狀態(tài),提高狀態(tài)機的復(fù)雜度,通過數(shù)據(jù)結(jié)構(gòu)的復(fù)雜化來簡化算法,提高軟件代碼的可擴展性。并且在程序開發(fā)階段,使用更詳細的狀態(tài)可以幫助開發(fā)者更容易地跟蹤和調(diào)試系統(tǒng)行為,提高開發(fā)效率。此外,本發(fā)明通過設(shè)置多種過渡狀態(tài),對于每種過渡狀態(tài),在計時器和計數(shù)器清零時自動切換至其它狀態(tài),使得車燈狀態(tài)機的狀態(tài)切換更加平滑,同時多種過渡狀態(tài)能夠應(yīng)對各種復(fù)雜場景。