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