服務(wù)器和硬件通訊,由于數(shù)據(jù)包較大,硬件小伙伴說需要字節(jié)流分幀,空間有限不能整個字節(jié)流發(fā)送,需要按幀發(fā)送;大佬有沒有提供關(guān)于具體的協(xié)議這塊實(shí)現(xiàn)指導(dǎo)~
之前搞過一個類似的
當(dāng)時那個數(shù)據(jù)是有開始標(biāo)記以及結(jié)束標(biāo)記的,當(dāng)下位機(jī)發(fā)送數(shù)據(jù)時,服務(wù)器接收到開始標(biāo)記數(shù)據(jù),進(jìn)行保存變量中,直到收到結(jié)束標(biāo)記數(shù)據(jù),然后對保存變量的數(shù)據(jù)進(jìn)行處理,處理完成后銷毀保存的數(shù)據(jù)
呃 我只是個小垃圾 不是大佬。
定義一個全局變量,然后根據(jù)下位機(jī)的uid或其他唯一編碼,做一個鍵,當(dāng)收到下位機(jī)發(fā)送的數(shù)據(jù)開始標(biāo)記,在全局變量中創(chuàng)建一個 $data[$uid] = array(); 并且把數(shù)據(jù)放到數(shù)組中,直到收到數(shù)據(jù)結(jié)束標(biāo)記時,然后處理$data[$uid]里的數(shù)據(jù),此時數(shù)據(jù)可能不是完整或有誤的,需要自行判斷一下,當(dāng)處理完后進(jìn)行銷毀$data[$uid]里的數(shù)據(jù),然后等待下一次的數(shù)據(jù)開始標(biāo)記。
當(dāng)時我們那個設(shè)備不多,數(shù)據(jù)容易判斷,和硬件協(xié)議好通訊規(guī)則協(xié)議,就很容易了,好幾年的事情了