最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

程序越編越簡單(一)

2021-07-11 15:57 作者:GXTon_阿通  | 我要投稿

比如要編寫多個功放程序.

目前有三個型號: 功放a;功放b;功放c;

規(guī)則一,

對每個功放建立一個.c和.h文檔.

創(chuàng)建相應(yīng)的結(jié)構(gòu)體.


規(guī)則二,

建立一個程序中切換功放的接口程序.

建立一個功放Z的.c和.h文件.

所有的功放,a,b,c

無論選中了哪個功放,都要把數(shù)據(jù)復(fù)制給功放Z.

只有這樣參數(shù)給了Z,才會生效.

因為Z是最終的功放.


規(guī)則三,

從整體去看,

這個要結(jié)合你的程序整體.

因為功放是需要監(jiān)控的,就是你的程序需要發(fā)送和接收的.

編寫程序也就是從這兩部分入手.

首先看發(fā)送.

第一類:直接發(fā)送

這些發(fā)送指令都是一條語句.只要把這些指令寫死,然后對應(yīng)去發(fā)送就行了.

比如:

按綠燈:發(fā)送"打開功放"

按紅燈:發(fā)送"關(guān)閉功放"

按復(fù)位:發(fā)送"復(fù)位功放"

第二類:需要定期發(fā)送

還有一些是需要定期循環(huán)發(fā)送的

比如:

"心跳"包;

"獲取功放狀態(tài)"

這里就直接在程序主while中寫一個定時發(fā)送.

第三類:傳參指令

這一類就是在指令中有變量.

需要把變量寫進去,然后再發(fā)送.

比如:

定時開關(guān),我先把旋鈕擰到一定時長,然后再按下,

就開始按照我的倒計數(shù)分鐘數(shù)計數(shù).

這里倒計時的數(shù)字是我設(shè)置的,這就是一個變量.


總結(jié):

關(guān)于發(fā)送還會有很多情況......

?還需要結(jié)合實際,

要考慮一些特殊的情況,

比如:

兩個發(fā)送按鍵和復(fù)位按鍵同時按下.

就會同時發(fā)送兩條指令"打開指令"和"復(fù)位指令".

這兩條指令會不會有遺漏的情況.也就是如果程序不好,可能會只發(fā)送了其中一條指令.

還需要考慮功放能不能同時接受兩條指令.

有的時候外設(shè),

不接受兩條指令,比如單發(fā)"打開指令"或者單發(fā)"復(fù)位指令"都很好用.

但是兩個指令一起發(fā)送的時候,"打開指令 ,復(fù)位指令".

這樣有些功放可能會認(rèn)為錯誤.

這時就必須要在兩條指令之間加入延遲了.

這個時候就需要改變編寫程序的策略.


比如:

按下按鍵,或按下多個按鍵的時候,不進行直接的發(fā)送.

而是把對應(yīng)的發(fā)送標(biāo)志位置一.

然后,

在主循環(huán)while中進行輪詢檢測標(biāo)志位.

每次輪詢可以用計數(shù)器中斷進行計數(shù),達(dá)到某個值之后進行一次標(biāo)志位查詢.

這樣就實現(xiàn)了沒有delay的延遲.(可以提高程序運行效率這個后面講解)

然后,

檢測到一個打開功放按鍵按下的標(biāo)志位置一,就發(fā)送"打開指令".然后跳出.

下一輪接著檢測其他標(biāo)志位有沒有置一,如果復(fù)位標(biāo)志置一,就發(fā)送"復(fù)位指令".然后跳出.

因為每一輪都只響應(yīng)一個標(biāo)志位,

并且每一輪之間有若干個中斷計數(shù).

從而實現(xiàn)了每條發(fā)送指令之間都會有時間間隔.不會出現(xiàn)指令粘連的情況.


這里面其實還是可以設(shè)置一個緩存.

然后每次主循環(huán)中檢測緩存里面是不是按鍵按下.


上面就是發(fā)送指令了,

下面開始講解接收指令.

接收要和發(fā)送區(qū)分開來.

好的程序是:

接收就是只管接收,

發(fā)送就是只管發(fā)送.

當(dāng)然在很多情況下是不容易做到的.但是要向著這個方向去努力.

接收指令部分,

接收就很簡單了.

需要設(shè)置一個循環(huán)緩存,

如論收到什么,先不管,通通先存到緩存里面.

然后再主循環(huán)while中寫一個截取循環(huán)緩存數(shù)據(jù)的函數(shù).

比如摘取循環(huán)緩存中包頭和包尾之間的數(shù)據(jù).

這樣就可以接收到一條完整的指令了.







程序越編越簡單(一)的評論 (共 條)

分享到微博請遵守國家法律
历史| 阜康市| 扶绥县| 海城市| 高雄县| 蓬安县| 吐鲁番市| 卓尼县| 徐汇区| 四会市| 大庆市| 土默特右旗| 迭部县| 微博| 海门市| 芒康县| 乡宁县| 宁远县| 吐鲁番市| 金阳县| 巴南区| 仲巴县| 剑川县| 彭州市| 绥中县| 乐清市| 鸡西市| 榕江县| 同心县| 长岭县| 恩施市| 民丰县| 青冈县| 五莲县| 木兰县| 邓州市| 阿鲁科尔沁旗| 会东县| 宁国市| 蒙阴县| 恭城|