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