#脚本在win7python下工作,但在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.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()
目前没有回答
相关问题 更多 >
编程相关推荐