有誰(shuí)做過modbustcp 為什么我通過 sendToClient發(fā)給客戶端的內(nèi)容是16進(jìn)制 客戶端收到以后就變了呢?有做過 modbustcp 工業(yè)物聯(lián)的大神能不能指點(diǎn)一下 有償請(qǐng)教
我詳細(xì)說一下目前一個(gè)網(wǎng)絡(luò)io設(shè)備 wif版的 是用modbustcp協(xié)議傳輸 我建立了tcp的監(jiān)聽 可以接收到設(shè)備發(fā)上來(lái)的 消息 我通過 bin2hex 轉(zhuǎn)16進(jìn)制 可以拿到 00 00 00 00 00 04 01 02 01 00 我解析后可以拿到對(duì)應(yīng)數(shù)值 相當(dāng)于通道已經(jīng)建立 設(shè)備的 通道 Clientid 我存下來(lái)了 現(xiàn)在上位機(jī)需要發(fā)送控制碼給設(shè)備 00 01 00 00 00 08 01 0F 00 64 00 02 01 01 我把指令直接通過 sendToClient 發(fā)給客戶端的時(shí)候 接收到的是如果原封不動(dòng)的發(fā)送過應(yīng)該就行了 但是收到的是 30 30 20 30 31 20 30 30 20 30 30 20 30 30 20 30 38 20 30 31 20 30 46 20 30 30 20 36 34 20 30 30 20 30 32 20 30 31 20 30 31 如果我把命令轉(zhuǎn)成16進(jìn)制再發(fā)送接收到的是 01 08 01 0f 64 02 01 01 我沒搞明白我應(yīng)該怎么解析 或者怎么傳輸 望大神們指點(diǎn)
我們都理解錯(cuò)了 tcp 是tcp modbus協(xié)議是協(xié)議 你不用管協(xié)議的事情 對(duì)應(yīng)控制碼能發(fā)到指定客戶端就行了 我也是走到誤區(qū)好久
附一個(gè)轉(zhuǎn)換進(jìn)制方法
for ($i=0; $i < strlen($hex)-1; $i+=2){
$string .= chr(hexdec($hex[$i].$hex[$i+1]));
}