本申請(qǐng)涉及串口傳輸,具體而言,涉及一種串口指令傳輸方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、串口在指令傳輸過程中,常常會(huì)出現(xiàn)丟包、誤碼、收發(fā)沖突等情況,這些情況的存在會(huì)導(dǎo)致輪詢延時(shí)和應(yīng)答超時(shí)的問題,串口傳輸因此無法實(shí)現(xiàn)穩(wěn)定傳輸,導(dǎo)致串口的穩(wěn)定性、可靠性差,傳輸效率低下,并且傳輸過程中容易發(fā)生誤傳輸、數(shù)據(jù)丟失等狀況,嚴(yán)重影響到了串口的使用,為用戶帶來諸多不便。
2、然而,現(xiàn)有技術(shù)在解決上述問題的過程中,無法實(shí)現(xiàn)對(duì)串口傳輸?shù)臅r(shí)序控制,雖然可以提高串口的穩(wěn)定性,正常傳輸數(shù)據(jù),但是串口傳輸?shù)臅r(shí)序問題無法得到有效控制,容易出現(xiàn)串口傳輸紊亂的情況發(fā)生。
技術(shù)實(shí)現(xiàn)思路
1、本申請(qǐng)的目的在于提供一種串口指令傳輸方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì),可以高效快速地傳輸串口指令,實(shí)現(xiàn)數(shù)據(jù)的安全傳輸,不易發(fā)生誤傳輸、丟包等狀況,可以提高串口的穩(wěn)定性和可靠性,提高串口的使用效率,更好地控制串口。
2、第一方面,本申請(qǐng)實(shí)施例提供了一種串口指令傳輸方法,所述方法包括:
3、獲取待傳輸?shù)拇谥噶睿?/p>
4、將所述待傳輸?shù)拇谥噶钔ㄟ^第一函數(shù)填充至發(fā)送隊(duì)列中,得到傳輸隊(duì)列;
5、根據(jù)第一參數(shù)發(fā)送所述傳輸隊(duì)列的第一條指令,同時(shí)觸發(fā)超時(shí)定時(shí)函數(shù);
6、根據(jù)觸發(fā)后的超時(shí)定時(shí)函數(shù)獲得應(yīng)答指令;
7、當(dāng)所述應(yīng)答指令存在時(shí),觸發(fā)輪詢延時(shí)定時(shí)函數(shù);
8、根據(jù)觸發(fā)后的輪詢延時(shí)定時(shí)函數(shù)發(fā)送所述傳輸隊(duì)列的剩余指令。
9、在上述實(shí)現(xiàn)過程中,通過超時(shí)定時(shí)函數(shù)和輪詢延時(shí)定時(shí)函數(shù)對(duì)指令傳輸進(jìn)行雙重保障,確保指令的安全穩(wěn)定傳輸,可以高效快速地傳輸串口指令,實(shí)現(xiàn)數(shù)據(jù)的安全傳輸,不易發(fā)生誤傳輸、丟包等狀況,可以提高串口的穩(wěn)定性和可靠性,提高串口的使用效率,更好地控制串口。
10、進(jìn)一步地,所述根據(jù)第一參數(shù)發(fā)送所述傳輸隊(duì)列的第一條指令,同時(shí)觸發(fā)超時(shí)定時(shí)函數(shù)的步驟,包括:
11、當(dāng)所述第一參數(shù)的數(shù)值為空時(shí),觸發(fā)串口指令發(fā)送信號(hào),根據(jù)回調(diào)函數(shù)將所述第一條指令發(fā)送至串口,同時(shí)觸發(fā)超時(shí)定時(shí)函數(shù)。
12、在上述實(shí)現(xiàn)過程中,當(dāng)?shù)谝粎?shù)的數(shù)值為空時(shí),表明可以正常發(fā)送串口指令,根據(jù)回調(diào)函數(shù)將第一條指令發(fā)送至串口,可以確保指令的正常發(fā)送,避免出現(xiàn)數(shù)據(jù)丟失的情況發(fā)生。
13、進(jìn)一步地,所述根據(jù)回調(diào)函數(shù)將所述第一條指令發(fā)送至串口的步驟,包括:
14、獲取初始回調(diào)函數(shù);
15、對(duì)所述初始回調(diào)函數(shù)中的發(fā)送參數(shù)進(jìn)行初始化,并配置所述初始回調(diào)函數(shù)的傳輸信息,得到所述回調(diào)函數(shù);
16、將所述第一條指令填充至所述第一參數(shù),并通過所述回調(diào)函數(shù)將填充后的第一參數(shù)發(fā)送至所述串口。
17、在上述實(shí)現(xiàn)過程中,根據(jù)配置后的回調(diào)函數(shù)發(fā)送指令,可以提高指令的傳輸速度和傳輸效率,避免傳輸過程中造成指令誤發(fā)送的狀況,提高串口傳輸?shù)姆€(wěn)定性。
18、進(jìn)一步地,所述當(dāng)所述應(yīng)答指令存在時(shí),觸發(fā)輪詢延時(shí)定時(shí)函數(shù)的步驟,包括:
19、獲取數(shù)據(jù)包;
20、對(duì)所述數(shù)據(jù)包進(jìn)行校驗(yàn),判斷所述數(shù)據(jù)包中的報(bào)文數(shù)據(jù)是否正確;
21、若是,提取所述報(bào)文數(shù)據(jù)中的有效數(shù)據(jù)觸發(fā)輪詢延時(shí)定時(shí)函數(shù)。
22、在上述實(shí)現(xiàn)過程中,可以提高串口傳輸?shù)目煽啃裕_保數(shù)據(jù)的準(zhǔn)確無誤,同時(shí)只提取有效數(shù)據(jù)進(jìn)行傳輸,可以有效減少傳輸過程中對(duì)串口資源的占用。
23、進(jìn)一步地,所述根據(jù)第一參數(shù)發(fā)送所述傳輸隊(duì)列的第一條指令,同時(shí)觸發(fā)超時(shí)定時(shí)函數(shù)的步驟之前,還包括:
24、重置所述超時(shí)定時(shí)函數(shù),并獲得重置次數(shù)。
25、在上述實(shí)現(xiàn)過程中,重置超時(shí)定時(shí)函數(shù),可以嚴(yán)格記錄串口傳輸過程中存在的超時(shí)次數(shù),可以確保數(shù)據(jù)的有效傳輸,合理有效地控制傳輸時(shí)間和等待時(shí)間。
26、進(jìn)一步地,所述根據(jù)觸發(fā)后的超時(shí)定時(shí)函數(shù)獲得應(yīng)答指令的步驟之后,還包括:
27、若所述應(yīng)答指令不存在,判斷應(yīng)答時(shí)間是否超時(shí);
28、若是,判斷所述重置次數(shù)是否超過第一閾值,若所述重置次數(shù)未超過所述第一閾值,重新獲得應(yīng)答指令,若所述重置次數(shù)超過所述第一閾值,暫停指令傳輸。
29、在上述實(shí)現(xiàn)過程中,當(dāng)應(yīng)答指令不存在時(shí),進(jìn)一步判斷應(yīng)答時(shí)間是否超時(shí),可以在確保能夠正常接收到應(yīng)答指令的情況下進(jìn)行指令傳輸,提高指令傳輸效率,避免長(zhǎng)時(shí)間無法接收指令。
30、進(jìn)一步地,所述根據(jù)觸發(fā)后的輪詢延時(shí)定時(shí)函數(shù)發(fā)送所述傳輸隊(duì)列的剩余指令的步驟,包括:
31、對(duì)觸發(fā)后的輪詢延時(shí)定時(shí)函數(shù)進(jìn)行重置,得到輪詢延時(shí)計(jì)時(shí);
32、當(dāng)所述輪詢延時(shí)計(jì)時(shí)超過第二閾值時(shí),發(fā)送所述傳輸隊(duì)列中的第二條指令,依次類推,發(fā)送所述傳輸隊(duì)列中的剩余指令。
33、在上述實(shí)現(xiàn)過程中,對(duì)觸發(fā)后的輪詢延時(shí)定時(shí)函數(shù)進(jìn)行重置后再重新發(fā)送剩余指令,可以確保每一次的指令發(fā)送都是有效的,且可以提高每一次指令傳輸?shù)膫鬏斝?,避免每一次指令傳輸時(shí)間過長(zhǎng)影響串口的使用。
34、第二方面,本申請(qǐng)實(shí)施例還提供了一種串口指令傳輸裝置,所述裝置包括:
35、獲取模塊,用于獲取待傳輸?shù)拇谥噶睿?/p>
36、填充模塊,用于將所述待傳輸?shù)拇谥噶钔ㄟ^第一函數(shù)填充至發(fā)送隊(duì)列中,得到傳輸隊(duì)列;
37、觸發(fā)模塊,用于根據(jù)第一參數(shù)發(fā)送所述傳輸隊(duì)列的第一條指令,同時(shí)觸發(fā)超時(shí)定時(shí)函數(shù);還用于當(dāng)所述應(yīng)答指令存在時(shí),觸發(fā)輪詢延時(shí)定時(shí)函數(shù);
38、數(shù)據(jù)獲得模塊,用于根據(jù)觸發(fā)后的超時(shí)定時(shí)函數(shù)獲得應(yīng)答指令;
39、發(fā)送模塊,用于根據(jù)觸發(fā)后的輪詢延時(shí)定時(shí)函數(shù)發(fā)送所述傳輸隊(duì)列的剩余指令。
40、在上述實(shí)現(xiàn)過程中,通過超時(shí)定時(shí)函數(shù)和輪詢延時(shí)定時(shí)函數(shù)對(duì)指令傳輸進(jìn)行雙重保障,確保指令的安全穩(wěn)定傳輸,可以高效快速地傳輸串口指令,實(shí)現(xiàn)數(shù)據(jù)的安全傳輸,不易發(fā)生誤傳輸、丟包等狀況,可以提高串口的穩(wěn)定性和可靠性,提高串口的使用效率,更好地控制串口。
41、第三方面,本申請(qǐng)實(shí)施例提供的一種電子設(shè)備,包括:存儲(chǔ)器、處理器以及存儲(chǔ)在所述存儲(chǔ)器中并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)如第一方面任一項(xiàng)所述的方法的步驟。
42、第四方面,本申請(qǐng)實(shí)施例提供的一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)上存儲(chǔ)有指令,當(dāng)所述指令在計(jì)算機(jī)上運(yùn)行時(shí),使得所述計(jì)算機(jī)執(zhí)行如第一方面任一項(xiàng)所述的方法。
43、第五方面,本申請(qǐng)實(shí)施例提供的一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品在計(jì)算機(jī)上運(yùn)行時(shí),使得計(jì)算機(jī)執(zhí)行如第一方面任一項(xiàng)所述的方法。
44、本公開的其他特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,或者,部分特征和優(yōu)點(diǎn)可以從說明書推知或毫無疑義地確定,或者通過實(shí)施本公開的上述技術(shù)即可得知。
45、并可依照說明書的內(nèi)容予以實(shí)施,以下以本申請(qǐng)的較佳實(shí)施例并配合附圖詳細(xì)說明如后。
1.一種串口指令傳輸方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的串口指令傳輸方法,其特征在于,所述根據(jù)第一參數(shù)發(fā)送所述傳輸隊(duì)列的第一條指令,同時(shí)觸發(fā)超時(shí)定時(shí)函數(shù)的步驟,包括:
3.根據(jù)權(quán)利要求2所述的串口指令傳輸方法,其特征在于,所述根據(jù)回調(diào)函數(shù)將所述第一條指令發(fā)送至串口的步驟,包括:
4.根據(jù)權(quán)利要求1所述的串口指令傳輸方法,其特征在于,所述當(dāng)所述應(yīng)答指令存在時(shí),觸發(fā)輪詢延時(shí)定時(shí)函數(shù)的步驟,包括:
5.根據(jù)權(quán)利要求1所述的串口指令傳輸方法,其特征在于,所述根據(jù)第一參數(shù)發(fā)送所述傳輸隊(duì)列的第一條指令,同時(shí)觸發(fā)超時(shí)定時(shí)函數(shù)的步驟之前,還包括:
6.根據(jù)權(quán)利要求5所述的串口指令傳輸方法,其特征在于,所述根據(jù)觸發(fā)后的超時(shí)定時(shí)函數(shù)獲得應(yīng)答指令的步驟之后,還包括:
7.根據(jù)權(quán)利要求1所述的串口指令傳輸方法,其特征在于,所述根據(jù)觸發(fā)后的輪詢延時(shí)定時(shí)函數(shù)發(fā)送所述傳輸隊(duì)列的剩余指令的步驟,包括:
8.一種串口指令傳輸裝置,其特征在于,所述裝置包括:
9.一種電子設(shè)備,其特征在于,包括存儲(chǔ)器及處理器,所述存儲(chǔ)器用于存儲(chǔ)計(jì)算機(jī)程序,所述處理器運(yùn)行所述計(jì)算機(jī)程序以使所述電子設(shè)備執(zhí)行根據(jù)權(quán)利要求1至7中任一項(xiàng)所述的串口指令傳輸方法。
10.一種存儲(chǔ)介質(zhì),其特征在于,其存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1至7中任一項(xiàng)所述的串口指令傳輸方法。