以前interCharTimeout,从3.0版开始inter_byte_timeout.
API:http://pyserial.readthedocs.org/en/latest/pyserial_api.html#serial.Serial.inter_byte_timeout
我怀疑以下是常规timeout和inter_byte_timeout以下之间的区别:
我这是对的吗?
我怀疑没有,因为我只是无法使功能超时.我试过下面的例子.我期待inter_byte_timeout能够读取并打印一个"字符串",因为它们是由arduino写的,每秒一个.相反,它每三秒超时一次,然后打印那段时间内的内容.
写入序列的Arduino草图:
void setup() {
Serial.begin(9600);
while(!Serial); //wait for connection
for (int i=0;true;i++){
Serial.printf("=== iteration %d ===\n", i);
delay(1000); //ms
}
}
void loop() {
}
Run Code Online (Sandbox Code Playgroud)
Python脚本:
import serial
ser=serial.Serial(port='/dev/ttyACM0', timeout=3,inter_byte_timeout=0.01)
for i in range(100):
a = ser.read(10000)
print i, len(a), repr(a)
Run Code Online (Sandbox Code Playgroud)
命令行输出:
~$ python test.py
0 60 '=== iteration 0 ===\n=== iteration 1 ===\n=== iteration 2 ===\n'
1 60 …Run Code Online (Sandbox Code Playgroud) 我刚刚了解了 SIGPIPE,然后阅读了如何在 Python 中处理这些。
在其他来源中,我读过:如何在 python 中处理损坏的管道 (SIGPIPE)?
假设管道读取脚本退出,那么所有答案都表明写入脚本将其写入调用包装在 try 子句中。
但是,我无法完成这项工作。这是我的代码:
# printer.py
import time
try:
for i in range(10):
time.sleep(1)
print i
except:
print 'We caught the problem'
Run Code Online (Sandbox Code Playgroud)
和
#nonreader.py
#read nothing, but stay alive for 5 sec
import time, sys
time.sleep(5)
sys.exit(0)
Run Code Online (Sandbox Code Playgroud)
在外壳中:
$ python printer.py | python nonreader.py
close failed in file object destructor:
Error in sys.excepthook:
Original exception was:
Run Code Online (Sandbox Code Playgroud)
很明显,什么都没抓到。此外,当它打印“原始异常是:”时,它看起来真的错了,然后就没有了。
有什么问题/我误解了什么?
托马斯
一些图表/绘图库,例如Python的matplotlib,具有主要和次要刻度的概念(具有相应的主要和次要网格线).我一直在四处寻找,我认为这在FLOT中不存在.似乎只有一类蜱.
是不是可以制作类似下面的东西,如果是,那怎么样?
例如,如下图所示,每1.0的主要滴答,每0.2的次要滴答.

我想创建一个视图,用户可以在其中更改其用户对象的属性:名字、姓氏和电子邮件地址。Django 有一个内置的 UserCreationForm 用于创建用户。我已经有一个扩展版本,其中还包括电子邮件、名字和姓氏。现在我试图扩展那个不包括密码和用户名。
from django.contrib.auth.forms import UserCreationForm
class ExtendedUserCreationForm(UserCreationForm):
class Meta:
model = User
fields = ('username', 'password1', 'password2',
'email', "first_name", 'last_name' )
class UserEditForm(ExtendedUserCreationForm):
class Meta:
model = User
exclude = ('username', 'password1', 'password2')
Run Code Online (Sandbox Code Playgroud)
我正在寻找的 UserEditForm 当然不能创建新实例,但它只能用于编辑现有实例:
form = UserEditForm(instance=request.user)
Run Code Online (Sandbox Code Playgroud)
但是,用户名字段和密码字段仍会显示。我怎样才能排除这些?
我有一个太阳能电池板指向(它是正常的矢量)在某个方向.我想计算它与太阳当前位置之间的角度.我正在使用pyephem,我有两对方位角和高度信息.
panel_az = ephem.degrees('180')
panel_alt = ephem.degrees('45')
sun_az = ephem.degrees('245')
sun_alt = ephem.degrees('22')
Run Code Online (Sandbox Code Playgroud)
找到面板法线向量和指向太阳的向量之间的角度最简单的方法是什么?