如果尝试将文本文件中的数据与从串行输入收集的数据进行比较。 基本上我读过' grain'从文件中通过串口发送,然后将其发送给原始发件人以确认它是否已正确发送。
在我使用的代码的其他部分:
if "AK" in command:
Do something
这会找到字母AK罚款并进入if但是对于下一部分我基本上需要:
if grain in command:
Do Something
else:
Do Something else
由于某种原因,它总是落入其他地方。我已经将串口,谷物和缓冲区(命令)全部打印出来,所以我可以看到谷粒(一个数字,通常类似于:22.4)在命令中,但它没有在if循环中注册。
任何简单的想法都是这样做的吗?
有问题的代码: 它运行愉快,但始终发送IC消息而不是底部的AK消息。
file = open("livedata.txt")
grain = file.readline()
air = file.readline()
file.close()
sending=True
send1=True
send2=False
while(sending==True):
loop=0
command=''
serialport.write("1RDRDR1R")
print ("DR Sent")
while (loop<30):
recieved = serialport.read()
command = command + recieved
loop = loop+1
if "BS" in command:
if "AK" in command:
while (send1==True):
serialport.write("1R"+grain+"1R")
print ("GrainTemp Sent")
loop=0
command=''
while (loop<30):
recieved = serialport.read()
command = command + recieved
loop = loop+1
if grain in command:
serialport.write("1RAKAK1R")
print ("GrainTemp AK Sent")
else:
serialport.write("1RICIC1R")
print ("GrainTemp IC Sent")
答案 0 :(得分:0)
grain = file.readline()
在字符串grain
中包含结尾换行符,所以当然不会在另一个字符串中找到它,而在其他字符串后面没有这样的换行符。 grain
。
使用
grain = file.readline().strip()
删除grain
两侧的空格(包括换行符)(如果 grain
中的某些空格对您很重要且您想要完全匹配你可以做更多的选择性剥离,但从你的问题看来,这个简单,广泛的剥离对你有用。)