gpt4 book ai didi

javascript - Python索引错误列表索引超出范围

转载 作者:太空宇宙 更新时间:2023-11-03 18:59:33 26 4
gpt4 key购买 nike

我有一个 python 代码,它将串行命令发送到设备并从中获取回复。

 def control(command):
serialport= serial.Serial ("/dev/ttyAMA0", 9600, timeout=0.5)
serialport.write(command)
return serialport.readlines(1)

我有一本字典,它映射一些代码以传递给 command 。然后我会把回复打印出来。

response = control(code_map.get(key,None))
print response, type(response)

编辑:打印输出的示例是 ['\x03O?0201\r'] <type 'list'>

收到回复后,我必须检查回复中的某些字符,如下所示:

if "O?" in response[0]:
if "01" in response[0]:
if "0100" in response[0]:
status="off"
else:
status="on"
else:
status="off"

如果只回复一次就可以了。但是,当有 2 个或更多请求时,它会引发索引错误并且不会显示状态。

这是我用于发布并获取状态回复的 javascript:

        $('#monitor').click(function(){
setInterval(function(){
$('#status_table tr [id^="monitor_"]:checked').each(function () {
monitoring($(this).parents('tr'));
});
},15000);
});

function monitoring($row) {
$('#test').append("checked");
fbType = $row.find('td:nth-child(3)').html();
fbNum = $row.find('td:nth-child(4)').html();
eachStatus =$row.find('td:nth-child(5)').attr('id');
$('#test').append(fbType + ' '+ fbNum+' '+ eachStatus +'<br>');

$.post('/request', {inputText: fbNum,key_pressed: fbType.toString()}).done(function (reply) {
if (reply == "on") {
$('#status_table tr #status_'+eachStatus).append("on");
$('#test').append("on");
} else if (reply =="off") {
$('#status_table tr #'+eachStatus).empty().append("off");
$('#test').append("off");
}
});
}

回溯:

[03/May/2013:14:36:35] HTTP Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/CherryPy-3.2.2-py2.7.egg/cherrypy/_cprequest.py", line 656, in respond
response.body = self.handler()
File "/usr/local/lib/python2.7/dist-packages/CherryPy-3.2.2-py2.7.egg/cherrypy/lib/encoding.py", line 188, in __call__
self.body = self.oldhandler(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/CherryPy-3.2.2-py2.7.egg/cherrypy/_cpdispatch.py", line 34, in __call__
return self.callable(*self.args, **self.kwargs)
File "remote_control_keypad_new52.py", line 677, in request
if "O?" in response[0]:
IndexError: list index out of range

[03/May/2013:14:36:35] HTTP
Request Headers:
Content-Length: 31
REFERER: http://localhost:8080/
HOST: localhost:8080
ORIGIN: http://localhost:8080
CONNECTION: Keep-Alive
Remote-Addr: 127.0.0.1
ACCEPT: */*
USER-AGENT: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/535+ (KHTML, like Gecko) Version/5.0 Safari/535.22+ Midori/0.4
X-REQUESTED-WITH: XMLHttpRequest
ACCEPT-LANGUAGE: en-us;q=0.750
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
ACCEPT-ENCODING: gzip, deflate
127.0.0.1 - - [03/May/2013:14:36:35] "POST /request HTTP/1.1" 500 1460 "http://localhost:8080/" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/535+ (KHTML, like Gecko) Version/5.0 Safari/535.22+ Midori/0.4"
['\x03O?0101\r\x03O?0201\r'] <type 'list'>
on
127.0.0.1 - - [03/May/2013:14:36:36] "POST /request HTTP/1.1" 200 2 "http://localhost:8080/" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/535+ (KHTML, like Gecko) Version/5.0 Safari/535.22+ Midori/0.4"
Button one is assigned with Response number None
Button one is assigned with Response number None
Button one is assigned with Response number None
output number selected is 01
R!None
R!None
R!None
R!None
Button one is assigned with Response number None
Button one is assigned with Response number None
Button one is assigned with Response number None
output number selected is 02
R!None
R!None
R!None
R!None
[03/May/2013:14:36:50] HTTP Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/CherryPy-3.2.2-py2.7.egg/cherrypy/_cprequest.py", line 656, in respond
response.body = self.handler()
File "/usr/local/lib/python2.7/dist-packages/CherryPy-3.2.2-py2.7.egg/cherrypy/lib/encoding.py", line 188, in __call__
self.body = self.oldhandler(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/CherryPy-3.2.2-py2.7.egg/cherrypy/_cpdispatch.py", line 34, in __call__
return self.callable(*self.args, **self.kwargs)
File "remote_control_keypad_new52.py", line 674, in request
response = comfort_control(code_map.get(key,None))
File "remote_control_keypad_new52.py", line 639, in comfort_control
return serialport.readlines(1)
File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 456, in read
raise SerialException('device reports readiness to read but returned no data (device disconnected?)')
SerialException: device reports readiness to read but returned no data (device disconnected?)

[03/May/2013:14:36:50] HTTP
Request Headers:
Content-Length: 31
REFERER: http://localhost:8080/
HOST: localhost:8080
ORIGIN: http://localhost:8080
CONNECTION: Keep-Alive
Remote-Addr: 127.0.0.1
ACCEPT: */*
USER-AGENT: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/535+ (KHTML, like Gecko) Version/5.0 Safari/535.22+ Midori/0.4
X-REQUESTED-WITH: XMLHttpRequest
ACCEPT-LANGUAGE: en-us;q=0.750
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
ACCEPT-ENCODING: gzip, deflate
127.0.0.1 - - [03/May/2013:14:36:50] "POST /request HTTP/1.1" 500 1839 "http://localhost:8080/" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/535+ (KHTML, like Gecko) Version/5.0 Safari/535.22+ Midori/0.4"
['\x03O?0101\r\x03O?0201\r'] <type 'list'>
on
127.0.0.1 - - [03/May/2013:14:36:51] "POST /request HTTP/1.1" 200 2 "http://localhost:8080/" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/535+ (KHTML, like Gecko) Version/5.0 Safari/535.22+ Midori/0.4"
^C[03/May/2013:14:36:56] ENGINE Keyboard Interrupt: shutting down bus
[03/May/2013:14:36:56] ENGINE Bus STOPPING

最佳答案

也许您的回复是一个空列表

>>> response = []
>>> response[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range

也许您的设备并不总是足够快来响应此问题

serialport.write(command)
return serialport.readlines(1)

特别是如果您有 2 个重叠的请求,则需要确保您的程序一次向设备提供一个请求。

关于javascript - Python索引错误列表索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16352583/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com