c)mqtt基礎知識
2、移植mqttpacket到專案裡:
複製資料夾mqttpacket到工程,複製mqttpacket\samples裡面的transport.c、transport.h到工程
3、修改已經transport.c裡面的四個介面:
int transport_sendpacketbuffer(int sock, unsigned
char* buf, int buflen);
int transport_getdata(unsigned
char* buf, int count);
int transport_open(char* host, int port);
int transport_close(int sock);
看介面名稱就知道,該四個介面實現的是tcp資料的收發,具體修改需要根據已經實現的tcp介面來定。(微控制器上常用的tcp/ip協議棧主要有uip、lwip)
注意:mqtt是tcp/ip的應用層,傳輸層需要自己實現,這四個介面分別對應tcp的連線、收、發和關閉。
4、實現訂閱/發布,檢視mqttpacket\samples下的pub0sub1.c。
下面為引數的意義:
mqttpacket_connectdata data = mqttpacket_connectdata_initializer; //連線引數
data.clientid.cstring = 「me2」; //客戶id,唯一
data.keepaliveinterval = 200; //儲存存活時間200s
data.cleansession = 1;//重新連線後是否清除以前的資訊 0表示不清除,1表示重連清除
data.username.cstring = 「admin」;//如果伺服器需要使用者名稱密碼,這裡設定
data.password.cstring = 「admin」;
qos :
0 表示最多一次
1 表示至少一次
2 表示只有一次
mqttdeserialize_publish(&dup,&qos,&retained,&msgid,&receivedtopic,&payload_in, &payloadlen_in, buf,buflen);
msgid:該包的id,paketid,如果需要增加反饋(qos為1和2需要反饋),需要獲取該id
傳送反饋:
mqttdeserialize_publish(&dup, &qos, &retained, &msgid,&receivedtopic,&payload_in, &payloadlen_in, buf, buflen);
intlen = mqttserialize_puback(buf,buflen,msgid);
transport_sendpacketbuffer(ack_buf,len);
接收伺服器的反饋:
if(puback == mqttpacket_read(buf,buflen,transport_getdata))
比較傳送的msgid和反饋獲取的packetid,如果一致表示該包傳送成功。
等等,具體看文件
5、伺服器實現 mosquitto
請參考:
指令舉例:
訂閱 mosquitto_sub -h ***.***.***.*** -u admin -p admin -t substopic
-h 伺服器網域名稱
-u 使用者名稱(沒有可以省略)
-p密碼(沒有可以省略)
-t topic名稱
發布:mosquitto_pub -h ***.***.***.*** -u admin -p admin -t substopic -m hello
-m 發布的內容
微控制器流星燈 51微控制器拖尾燈實現
這個拖尾燈,或者掃瞄燈,或者流星燈,不管怎麼叫,原理上估計都是一樣的。這玩意困擾了我好長的時間。我知道用pwm可以做出明暗效果。但是無法做到實現多路控制。在網上有種叫 霹靂遊俠掃瞄燈 的東西。好像是用專用的ic做的。找不到相關的原始碼。自己想啊想。一直想了乙個月。直到昨天,上課的時候靈光一閃,突然想...
微控制器藍芽燒錄 用微控制器實現藍芽功能
下面的文字只是關於藍芽技術的調製演算法方面,我認為只需要將藍芽模組加 在微控制器上就可以了,而不必通過微控制器程式設計來實現具體的演算法,只需要編 寫使兩個模組的介面就可以,也就是微控制器傳送訊號時的激勵程式,接受外 來訊號後的處理程式。置於其餘就由作為硬體裝置的藍芽來自行處理。不過 我並不確定,我...
微控制器實現軟體濾波
1 限幅濾波法 又稱程式判斷濾波法 a 方法 根據經驗判斷,確定兩次取樣允許的最大偏差值 設為a 每次檢測到新值時判斷 如果本次值與上次值之差 a,則本次值有效 如果本次值與上次值之差 a,則本次值無效,放棄本次值,用上次值代替本次值 b 優點 能有效克服因偶然因素引起的脈衝干擾 c 缺點 無法抑制...