網(wǎng)上有很多關(guān)于移動(dòng)pos機(jī)操作,小白玩STM32天氣助手系列的知識(shí),也有很多人為大家解答關(guān)于移動(dòng)pos機(jī)操作的問題,今天pos機(jī)之家(www.tjfsxbj.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來看下吧!
本文目錄一覽:
移動(dòng)pos機(jī)操作
上個(gè)章節(jié)已經(jīng)說過了,主要使用uart2,來跟esp8266來進(jìn)行通訊,這里主要把相關(guān)的操作放在esp8266.h, esp8266.c文件中。
先描述下頭文件
UnsolicitedHandler: 主動(dòng)上報(bào)函數(shù)指針定義
at_payload_cb_t ; at命令返回內(nèi)容解析的cb函數(shù)
定義了一堆狀態(tài),在esp_task_loop里面根據(jù)狀態(tài)進(jìn)行相關(guān)的action。
運(yùn)行上下文,本想著里面可以放很多NB的信息,結(jié)果就放了一個(gè)state,context沒用到。
發(fā)送at命令或者raw數(shù)據(jù),然后處理esp返回的數(shù)據(jù)。resp這里定義的不友好,應(yīng)該叫tag,返回串里面有tag,認(rèn)為處理成功。
這里挑一個(gè)解釋下,其他的類似
esp在發(fā)送數(shù)據(jù)的時(shí)候會(huì)進(jìn)入透傳模式,寫入數(shù)據(jù)后,會(huì)有返回內(nèi)容。
這里是根據(jù)設(shè)置的超時(shí)時(shí)間,按300ms劃分,逐次去讀串口返回,解析。如果讀取到部分解析失敗,就rx buffer緩存起來,移動(dòng)pos準(zhǔn)備接受余下的內(nèi)容。如果找到resp后,繼續(xù)判斷是否有cb,有的話,調(diào)用回調(diào)函數(shù)。有些at命令的返回值內(nèi)容,需要解析(后面會(huì)講到,查詢域名的ip地址)。
所有的核心就是esp8236_task這個(gè)函數(shù)
主要核心就是一個(gè)迷你的狀態(tài)機(jī)。在沒連接wifi前失敗,不停的reset esp。連接成功了,就請(qǐng)求天氣數(shù)據(jù),請(qǐng)求成功了,就進(jìn)入等待周期。
這里要留意下,在最后會(huì)處理下esp主動(dòng)上報(bào)的數(shù)據(jù)
這里如果玩過GPRS模塊都知道,模塊會(huì)有主動(dòng)上報(bào)信息,單片機(jī)要根據(jù)這里的信息做相應(yīng)的動(dòng)作。這里主要補(bǔ)貨ready,這樣主動(dòng)給esp復(fù)位的時(shí)候,stm32不要復(fù)位。
處理主動(dòng)上報(bào)代碼解釋
定義字符串和處理函數(shù)結(jié)構(gòu)體
定義一個(gè)map,需要處理那些上報(bào)數(shù)據(jù),添加對(duì)應(yīng)的字符串,以及handler函數(shù)。
掃描緩存數(shù)據(jù),按換行分割,逐個(gè)比較,找到的話,就調(diào)用handler。
以上就是關(guān)于移動(dòng)pos機(jī)操作,小白玩STM32天氣助手系列的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于移動(dòng)pos機(jī)操作的知識(shí),希望能夠幫助到大家!
