Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP从python请求编写wierd字符_Php_Python_Sql_Serial Port - Fatal编程技术网

PHP从python请求编写wierd字符

PHP从python请求编写wierd字符,php,python,sql,serial-port,Php,Python,Sql,Serial Port,我有一个python脚本: #!/usr/bin/python import time import datetime import serial from time import strftime import urllib2, urllib datetimeWrite = (time.strftime("%Y-%m-%d ") + time.strftime("%H:%M:%S")) ser = serial.Serial( port='/dev/ttyUSB0',

我有一个python脚本:

#!/usr/bin/python

import time
import datetime
import serial
from time import strftime
import urllib2, urllib

datetimeWrite = (time.strftime("%Y-%m-%d ") + time.strftime("%H:%M:%S"))

ser = serial.Serial(
        port='/dev/ttyUSB0',
        baudrate = 4800,
        parity=serial.PARITY_NONE,
        stopbits=serial.STOPBITS_ONE,
        bytesize=serial.SEVENBITS,
        timeout=10 ## Tempo de espera para leitura
)

card=ser.read(size=16)

if len(card) == 16:
        result=card
else:
        result="20ERROR20"

id = 1

mydata=[('idLeitor','1'),('leitura',result),('time',datetimeWrite)]
mydata=urllib.urlencode(mydata)
path='http://0.0.0.0:8080/core/db.card.read.php'
req=urllib2.Request(path, mydata)
req.add_header("Content-type", "application/x-www-form-urlencoded")
page=urllib2.urlopen(req).read()
print page
result=''.join(e for e in result if e.isalnum())
print result
当我在控制台上的读卡器/dev/ttyUSB0上传递卡时,我得到以下信息:

20CD723CF720

我猜php写得不错,下面是我的php代码:

<?php
require 'db.connect.php';
$idLeitor = $_POST['idLeitor'];
$leitura = htmlspecialchars($_POST['leitura']);
$timestamp = $_POST['time'];

$leitura_ok = substr($leitura, 0, -2);
$leitura_ok = substr($leitura_ok, 2);

echo $leitura_ok;

$updateQry = "UPDATE CardReads SET leitura = '$leitura_ok', readTime = '$timestamp' WHERE id = '$idLeitor'";
$cardRead = sqlsrv_query($dbhandle,$updateQry);
        if (!$cardRead) {
            die( print_r( sqlsrv_errors(), true));
        } 
?>

我发现python确实发送了这些特殊字符,所以我在python脚本中这样做:

#!/usr/bin/python

import time
import datetime
import serial
from time import strftime
import urllib2, urllib

datetimeWrite = (time.strftime("%Y-%m-%d ") + time.strftime("%H:%M:%S"))

ser = serial.Serial(
        port='/dev/ttyUSB0',
        baudrate = 4800,
        parity=serial.PARITY_NONE,
        stopbits=serial.STOPBITS_ONE,
        bytesize=serial.SEVENBITS,
        timeout=10 ## Tempo de espera para leitura
)

card=ser.read(size=16)

if len(card) == 16:
        result=card
else:
        result="20ERROR20"

id = 1

mydata=[('idLeitor','1'),('leitura',result),('time',datetimeWrite)]
mydata=urllib.urlencode(mydata)
path='http://0.0.0.0:8080/core/db.card.read.php'
req=urllib2.Request(path, mydata)
req.add_header("Content-type", "application/x-www-form-urlencoded")
page=urllib2.urlopen(req).read()
print page
result=''.join(e for e in result if e.isalnum())
print result

我发现python确实发送了这些特殊字符,所以我在python脚本中这样做:

#!/usr/bin/python

import time
import datetime
import serial
from time import strftime
import urllib2, urllib

datetimeWrite = (time.strftime("%Y-%m-%d ") + time.strftime("%H:%M:%S"))

ser = serial.Serial(
        port='/dev/ttyUSB0',
        baudrate = 4800,
        parity=serial.PARITY_NONE,
        stopbits=serial.STOPBITS_ONE,
        bytesize=serial.SEVENBITS,
        timeout=10 ## Tempo de espera para leitura
)

card=ser.read(size=16)

if len(card) == 16:
        result=card
else:
        result="20ERROR20"

id = 1

mydata=[('idLeitor','1'),('leitura',result),('time',datetimeWrite)]
mydata=urllib.urlencode(mydata)
path='http://0.0.0.0:8080/core/db.card.read.php'
req=urllib2.Request(path, mydata)
req.add_header("Content-type", "application/x-www-form-urlencoded")
page=urllib2.urlopen(req).read()
print page
result=''.join(e for e in result if e.isalnum())
print result

我打赌在某个时刻,在
之外的一些PHP文件中有一个不可见的字符。可能是换行符或制表符。您可能应该解决这个问题,但如果您不希望答案中出现空格,也应该在python端删除答案:
page=page.strip()
将删除
页面的开头或结尾可能存在的空白字符。不过,也要修复PHP。(或者用一种不会在源文件末尾出现随机制表符和空行的语言重写它……在这里插入PHP仇恨)我认为情况并非如此。如果我改用pyton请求,那么会从Web服务器请求什么呢?
2016-11-16 08:33:01 0.0.0 POST/core/db.card.read.php idLeitor=1&time=2016-11-16+08%3A33%3A00&leitura=%00%0220CD723CF7%03%02208080-0.0.0 python请求/2.12.0-200 0 15
之外。可能是换行符或制表符。您可能应该解决这个问题,但如果您不希望答案中出现空格,也应该在python端删除答案:
page=page.strip()
将删除
页面的开头或结尾可能存在的空白字符。不过,也要修复PHP。(或者用一种不会在源文件末尾出现随机制表符和空行的语言重写它……在这里插入PHP仇恨)我认为情况并非如此。如果我改用pyton请求,那么会从Web服务器请求什么呢?
2016-11-16 08:33:01 0.0.0 POST/core/db.card.read.php idLeitor=1&time=2016-11-16+08%3A33%3A00&leitura=%00%0220CD723CF7%03%02208080-0.0.0 python请求/2.12.0-200 0 15
,这只是掩盖了根本问题,没有解决它。它可能会在将来的某个时候再次出现,如果你忘记了这一点,你就必须再次追查根本原因。这只是掩盖了潜在的问题,而不是解决它。它可能会在将来的某个时候再次咬人,如果你忘记了这一点,你将不得不再次追根溯源。