Я создал программу передачи данных, используя python и модуль pyserial. В настоящее время я использую его для передачи текстового файла по радиоустройству между Raspberry Pi и моим компьютером. Проблема в том, что файл, который я пытаюсь отправить, который содержит 5000 строк текста и имеет размер 93,0 КБ, отправляется довольно долго. Если быть точным, это занимает около полной минуты. Мне нужно, чтобы это было сделано за секунды. Вот следующий код, я уверен, что есть много оптимизаций, которые можно сделать с чтением файлов и таких, которые бы увеличили скорость передачи данных. У моего радиоустройства скорость передачи данных 250 кбит/с, что явно недостижимо. Любая помощь будет принята с благодарностью.
Код для отправки (находится на raspberry pi)
def s_file():
print 'start'
readline = lambda : iter(lambda:ser.read(1),"\n")
name = "".join(readline())
print name
file_loc = directory_name + name
sleep(1)
print('Waiting for command from client to send file...')
while "".join(readline()) != "<<SENDFILE>>":
pass
with open(file_loc) as FileObj:
for lines in FileObj:
ser.write(lines)
ser.write("\n<<EOF>>\n")
print 'done'
Код для получения (на моем ноутбуке)
def r_f_bird(self): #send command to bird to start func,
if ser_open == True:
readline = lambda : iter(lambda:ser.read(1),"\n")
NAME = self.tb2.get()
ser.write('/' + NAME)
print NAME
sleep(0.5)
ser.write('\n<<SENDFILE>>\n')
start = clock()
with open(str(NAME),"wb") as outfile:
while True:
line = "".join(readline())
if line == "<<EOF>>":
break
print >> outfile, line
elapsed = clock() - start
print elapsed
ser.flush()
else:
pass