2015-04-05 50 views
-4

我會將此Python代碼轉換爲在PHP中讀取DHT22傳感器數據。我不知道python所以我不能轉換php corrispondent中的所有功能。將python腳本轉換爲php用於dht22傳感器數據讀取

的Python腳本爲here(我加numpy的庫,因爲我是一個錯誤,沒有它)

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import socket 
import numpy 

TCP_ADDR = 'MYIP' 
TCP_PORT = 8899 

PACK_LEN = 11 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

s.settimeout(30) 

s.connect((TCP_ADDR, TCP_PORT)) 

bytes_data = numpy.zeros(PACK_LEN,int) 

str_data = s.recv(PACK_LEN) #this should probably have a timeout 
hex_data = str_data.encode('hex') 

for n in range(0,PACK_LEN): #convert to array of bytes 
    lower = 2*n 
    upper = lower + 2 
    bytes_data[n] = int(hex_data[lower:upper],16) 


humid = (((bytes_data[6])<<8)+(bytes_data[7]))/10.0 
temp = (((((bytes_data[8])&0x7F)<<8)+(bytes_data[9]))/10.0) 

if int(bytes_data[8]) & 0x80: #invert temp if sign bit is set 
    temp = -1.0* temp 

checksum = (int(sum(bytes_data[0:10])) & 0xFF)+1 

if checksum == bytes_data[10]: 
    print "T" + str(temp) + " H" + str(humid) 
else: 
    print "Invalid. :(" 
+2

將幾乎看幾乎在PHP中也一樣。請張貼你到目前爲止所嘗試的任何內容 – 2015-04-05 08:17:04

+0

我建議你添加一個PHP標籤 – cdarke 2015-04-05 08:23:44

+0

謝謝cdarke,我添加了PHP標籤。 – Saibal 2015-04-05 14:33:16

回答

0

這只是一個PHP測試

$fp = fsockopen("192.168.0.12", 8899, $errno, $errstr, 20); 

if (!$fp) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 

    fwrite($fp, "\n"); 
    $code = fread($fp, 26); 
    fclose($fp); 

    $code = array_shift(unpack('H*', $code)); 
    echo $code; 
}