Python 该脚本在Windows7下工作,而不是在raspberry pi上使用debian,它只显示方括号[]
#脚本在Win7 PYTHON下工作,但在raspberry pi上不是debian,它只显示方括号[] #它不会出错。数据是通过ftdi电缆的异步串行rs232 #这是一条测试线Python 该脚本在Windows7下工作,而不是在raspberry pi上使用debian,它只显示方括号[],python,raspberry-pi,Python,Raspberry Pi,#脚本在Win7 PYTHON下工作,但在raspberry pi上不是debian,它只显示方括号[] #它不会出错。数据是通过ftdi电缆的异步串行rs232 #这是一条测试线 import serial def tobits(s): result = [] for c in s: bits = bin(ord(c))[2:] bits = '00000000'[len(bits):] + bits result.exte
import serial
def tobits(s):
result = []
for c in s:
bits = bin(ord(c))[2:]
bits = '00000000'[len(bits):] + bits
result.extend([int(b) for b in bits])
return result
def frombits(bits):
chars = []
for b in range(len(bits) / 8):
byte = bits[b*8 :(b+1) * 8]
chars.append(chr(int(''.join([str(bit) for bit in byte]), 2)))
return ''.join(chars)
def bin(x, digits=0):
oct2bin = ['000', '001', '010', '011', '100', '101', '110', '111']
binstring = [oct2bin[int(n)] for n in oct(x)]
return ''.join(binstring).lstrip('0').zfill(digits)
def chomp(s):
if s.endwith('\n'):
return s[:-1]
else:
return s
haveradar = True
if haveradar == True:
serradar = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
print "Radar is using " + serradar.portstr
radarf = open('/home/pi/scripts/dump1.txt', 'w')
else:
serradar = " !R"
print "dummy radar feed"
timerf = open('/home/pi/scripts/dump2.txt', 'w')
# Loop for data collection
x=0
while x < 200:
if haveradar == True:
radarline = serradar.readline() # variable holder radarline = radar output data
radarf.write(radarline)
else:
radarline = serradar
# Extract radar data
radarsplitstring = [ord(c) for c in radarline]
print radarsplitstring
# if len(radarsplitstring) >= 3:
if len(radarsplitstring) >= 3:
#Two car mode: Target=field 2, Lock=field 4, Patrol=field 3, PatrolLock= field 6
#Three car mode: Target=field 2, Lock=field 4, Patrol=Patrol ?
#radarstring uses binary numbering, to extract Target from binary stream:value=ascii-1 '1=T, 3=L, 5=P'
radarstring = "T: " + str(radarsplitstring[1]) + " L: " + str(radarsplitstring[3]) + " P: " + str(radarsplitstring[5])
#print radarsplitstring prints parsed radar output converted to ascii
#print radarstring prints
try:
outf = open('/home/pi/scripts/dump3.txt', 'w')
outf.write(radarstring)
outf.flush
outf.close()
except:
print "**file write failure**"
# Wrap up
if haveradar == True:
serradar.close()
radarf.close()
timerf.close()
导入序列号
def托比特币:
结果=[]
对于s中的c:
bits=bin(ord(c))[2:]
位='00000000'[len(位):]+位
结果.扩展([int(b)表示b的位])
返回结果
def frombits(位):
字符=[]
对于范围内的b(长度(位)/8):
字节=位[b*8:(b+1)*8]
chars.append(chr(int(“”.join([str(bit)表示字节中的位]),2)))
返回“”。加入(字符)
def箱(x,数字=0):
oct2bin=['000','001','010','011','100','101','110','111']
binstring=[oct2bin[int(n)]表示10月(x)的n
返回“”。join(bin字符串).lstrip('0').zfill(数字)
def chomp(s):
如果s.endwith('\n'):
返回s[:-1]
其他:
返回s
haveradar=True
如果haveradar==真:
serradar=serial.serial('/dev/ttyUSB0',9600,超时=1)
打印“雷达正在使用”+serradar.portstr
radarf=open('/home/pi/scripts/dump1.txt',w')
其他:
serradar=“!R”
打印“虚拟雷达馈送”
timerf=open('/home/pi/scripts/dump2.txt',w')
#数据收集循环
x=0
当x<200时:
如果haveradar==真:
雷达线=serradar.readline()#可变支架雷达线=雷达输出数据
radarf.write(雷达线)
其他:
雷达线
#提取雷达数据
radarsplitstring=[ord(c)表示radarline中的c]
打印雷达管柱
#如果len(radarsplitstring)>=3:
如果len(radarsplitstring)>=3:
#两车模式:目标=场2,锁定=场4,巡逻=场3,巡逻锁定=场6
#三车模式:目标=场2,锁定=场4,巡逻=巡逻?
#radarstring使用二进制编号,从二进制流中提取目标:value=ascii-1'1=T,3=L,5=P'
radarstring=“T:”+str(radarsplitstring[1])+“L:”+str(radarsplitstring[3])+“P:”+str(radarsplitstring[5]))
#打印雷达plitString打印转换为ascii的解析雷达输出
#打印雷达串打印
尝试:
outp=open('/home/pi/scripts/dump3.txt',w')
输出写入(雷达管柱)
冲水
出口关闭()
除:
打印“**文件写入失败**”
#收尾
如果haveradar==真:
serradar.close()
radarf.close()
timerf.close()
我建议您考虑添加一些日志记录:。这就像调用logging.info(“这是一条日志行”)
一样简单,可以让您更好地了解程序正在做什么。