我想知道如何在格式为的表单中选择选项
<td align="left">
<select name="FORM1" id="FORM1" multiple="multiple" size="5">
<option value="Value1">Value1</option>
<option value="Value2">Value2</option>
</select>
</td>
Run Code Online (Sandbox Code Playgroud)
现在,我正在使用mechanize连接到网站并遍历到所需的页面.此页面有多种形式,如FORM1,FORM2,FORM3等,带有选项.我想选择(启用)Value1然后告诉mechanize实例点击提交按钮.哪个是基于表单名称启用选项的快速方法?
如果我手动调用cython,我可以删除文档字符串,例如:
cython -D mmod.py
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用设置实用程序时,我无法传递-D参数.
setup.py
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
ext_modules = [Extension("mmod", ["mmod.py"])]
setup(
cmdclass = {'build_ext': build_ext},
ext_modules = ext_modules
)
Run Code Online (Sandbox Code Playgroud)
与使用-D运行时相比,这会生成一个包含所有可用文档字符串的库.
我有一个简单的程序来测试串行功能。我的串行设备对两个输入做出反应。如果用户输入“a”,它会以“fg”响应。如果用户输入任何其他字符/字节,它会以“z”响应。如果我将“b”发送到串行设备,它会返回“z”就好了。当我发送 'a' 时,它应该返回 'f' 和 'g',所以是两个字节而不是一个字节。
请参阅下面的代码。
#!/usr/bin/env python
import serial
ser = serial.Serial(
port = '/dev/ttyUSB0',
baudrate = 9600,
parity = serial.PARITY_NONE,
stopbits = serial.STOPBITS_ONE,
bytesize = serial.EIGHTBITS
)
ser.write('a')
byteData = ser.read(1) # read one, blocking
moreBytes = ser.inWaiting()
if moreBytes:
byteData = byteData + ser.read(moreBytes)
print byteData
print byteData
ser.close()
Run Code Online (Sandbox Code Playgroud)
输出是:
user@ubuntu:~/code/native$ ./serialTesting.py
f
Run Code Online (Sandbox Code Playgroud)
inWaiting() 的值为 0,因此它永远不会读取第二个字节。如果我对代码做一个小的改动,并手动读取两个预期的字节,它就可以正常工作。
#!/usr/bin/env python
import serial
ser = serial.Serial(
port = '/dev/ttyUSB0',
baudrate = 9600,
parity = serial.PARITY_NONE,
stopbits = serial.STOPBITS_ONE,
bytesize …Run Code Online (Sandbox Code Playgroud) 需要注意的一些有趣的事情,我尚未完全理解。我的UART初始化为9600波特。我已经通过逻辑分析仪查看了线路上的TX,并且我发送的字节具有最小的延迟。预期为每字节36µs。
现在,如果我使用不同的波特率(例如115,200)初始化该UART,则发送的每个字节之间的延迟将大大增加。它跳至每字节125µs。
这引起了一个问题,因为我必须在某个时候提高波特率,但是响应时间有限。
延迟是否应该在字节之间减少,因为它应该以相同的频率发送更多的比特?
此阻塞方法用于写入UART。
static inline void uart2_putchar(uint8_t data)
{
// Disable interrupts to get exclusive access to ring_buffer_out.
cli();
if (ring_buffer_is_empty(&ring_buffer_out2)) {
// First data in buffer, enable data ready interrupt
UCSR2B |= (1 << UDRIE2);
}
// Put data in buffer
ring_buffer_put(&ring_buffer_out2, data);
// Re-enable interrupts
sei();
}
Run Code Online (Sandbox Code Playgroud)
这是基于中断触发的。
ISR(USART2_UDRE_vect)
{
// if there is data in the ring buffer, fetch it and send it
if (!ring_buffer_is_empty(&ring_buffer_out2)) {
UDR2 = ring_buffer_get(&ring_buffer_out2);
}
else {
// …Run Code Online (Sandbox Code Playgroud) 我在我的Linux机箱上测试了这个,它有gcc,编译得很好.
void myFunc(int* &input);
Run Code Online (Sandbox Code Playgroud)
编译没有错误.
在我的avr上,声明相同的功能:
void myFunc(int* &input);
Run Code Online (Sandbox Code Playgroud)
导致编译错误:
expected ';', ',' or ')' before '&' token
Run Code Online (Sandbox Code Playgroud)
linux上的gcc版本是4.6.3
avr(avr-gcc)的gcc版本是3.4.2