我正在尝试使用ProtoRPC的memcache来加速某些过程(使用Python的Google App Engine).为了简化问题,我使用了Hello World示例,并对其进行了一些修改.这是我的版本:
from protorpc import messages
from protorpc import remote
from protorpc.wsgi import service
from google.appengine.api import memcache
class HelloRequest(messages.Message):
my_name = messages.StringField(1, required=True)
class ElementOfArrayResponse(messages.Message):
value=messages.IntegerField(1)
class HelloResponse(messages.Message):
hello = messages.StringField(1, required=True)
list = messages.MessageField(ElementOfArrayResponse, 2, repeated=True)
class HelloService(remote.Service):
@remote.method(HelloRequest, HelloResponse)
def hello(self, request):
response = memcache.get(request.my_name)
if response is None:
list = []
for i in range(7):
list.append(SomeElementResponse(value=i))
response = HelloResponse(hello='Hello there, %s!' % request.my_name, list=list)
memcache.set(request.my_name,response)
return response
app = service.service_mappings([('/hello.*', HelloService)])
Run Code Online (Sandbox Code Playgroud)
但是,不幸的是,这段代码返回的错误是: …
我正在使用Winstar Display LCD(WH2004A-YYK-CP)和STM32处理器,代码用C语言编写.我需要以4位模式运行它.我运行它并写下我想要的东西.
如您所知,4位模式将8位数据发送为2位4位.问题是,当我在2个半字节之间重置时,它会输出奇怪的字符,无论我重置多少,它都无法正常工作.我提出的唯一解决方案是多次重置它.
为了弄清楚发生了什么,我在2个半字节(每个4位)之间增加了2秒延迟,并打印了一个长句.因此每当我重置它,处理器等待发送第二个半字节.
我正在重置它,它打印一些奇怪的东西,在第二次重置后它什么都没打印,在第三次重置后它再次正确打印.第四次重置它再次打印出一些奇怪的东西,第五次打印没有任何东西,第六次再次正确打印......并继续这样下去.因此,我现在确定问题是这些划分的字节.
类似的代码在8位模式下工作得非常好.
我要问的是:我怎么能确定"当我重置STM32处理器时,LCD没有等待在前一个会话中发送第一个半字节的某些数据的第二个半字节." 使用C代码?
更新:
我也在这里发送我的代码:http://pastebin.com/kHQQEqjx
LCD命令也在这里:http://imgur.com/mfDlj