1

我在 Raspberry Pi 上有一个 Python CGI 脚本,它将文本框的内容转换为 1 和 0。我正在寻找最大 1000 ish 的字符串。

二进制字符串经过轻微格式化并通过串行端口发送到 arduino……arduino 使用字符串中的数据来处理 LED。如果我将二进制字符串剪切并粘贴到 arduino 串行监视器中,一切正常,当我尝试通过以下 python 代码自动执行此操作时,一切都开始工作,但很快就会停止进入循环。

我可以通过更改 ser.write 命令之后的 time.sleep(3) 来控制这需要多长时间.....但我不想设置不必要的长时间延迟我想确保代码等待在继续打印 HTML 内容之前发送的字符串(并停止 arduino 上的灯光显示)。

话虽如此,整个字符串必须通过 arduino,因为 arduino 在字符串末尾等待 '\n' 来处理它。

猜猜这一定是一个男生的错误......非常感谢提示和指示。这是我正在使用的 CGI 代码。

#!/usr/bin/python
# Import modules for CGI handling and serial
import cgi, cgitb, serial, time, binascii
# Create instance of FieldStorage 
form = cgi.FieldStorage() 
#define serial port
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
#Wait while serial connects
time.sleep(3)
# Get data from fields
prayer = form.getvalue('prayer')
# Convert to binary
binprayer = bin(int(binascii.hexlify(prayer), 16))
# remove the '0b' from the front end of the string
bintrimint = binprayer[2:]
# add a \n to the end
bintrim = bintrimint + '\n'

ser.write(bintrim)
time.sleep(3)

print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Binary Prayer - a test script</title>"
print "</head>"
print "<body>"
print "<h2>You entered the following text: %s</h2>" % prayer
print "<h2>%s</h2>" % binprayer
print "<h2>%s</h2>" % bintrim
print "</body>"
print "</html>"
4

1 回答 1

0

我看了一下http://pyserial.sourceforge.net/pyserial_api.html

 write(data)
    Parameters: data – Data to send.
    Returns: Number of bytes written.

我认为你应该确保你写的一切。

于 2013-05-24T12:44:28.333 回答