Форум сайта python.su
# -*- coding: cp1251 -*- import serial import os import sys import time import xlwt #открываем порт ser = serial.Serial('COM6', 9600, dsrdtr = 1,timeout = 0) #подготовка лог файлов для данных от разных устройств prgpath = os.path.dirname(os.path.abspath(sys.argv[0])) #основной цикл программы while 1: serialline = ser.readline().split('\n') data = serialline[0] if len(data) > 0: code = data.split(':') datastr = code[1].split(';') unitID = datastr[0] if code[0] == "GPS": lat = datastr[1].split('=') lon = datastr[2].split('=') alt = datastr[3].split('=') data_arr = [code[0], unitID, lat[1], lon[1], alt[1]] elif code[0] == "SN": pres = datastr[1].split('=') temp = datastr[2].split('=') data_arr = [code[0], unitID, pres[1], temp[1]] elif code[0] == "GY": x = datastr[1].split('=') y = datastr[2].split('=') z = datastr[3].split('=') data_arr = [code[0], unitID, x[1], y[1], z[1]] elif code[0] == "MG": x = datastr[1].split('=') y = datastr[2].split('=') z = datastr[3].split('=') data_arr = [code[0], unitID, x[1], y[1], z[1]] else: data_arr = ['UNCKNOW STRING'] print data_arr file_data = open(prgpath + "\\data.log", "a+") file_data.write(data) file_data.write('\n') file_data.close() #закрываем порт ser.close() wb = xlwt.Workbook() ws = wb.add_sheet('DATA') #Строки - Столбцы ws.write(1, 1, "GPS") wb.save('example.xls')
GPS:0000001;LAT=latitude;LON=lontitude;ALT=altitude;Все отлично работает
Traceback (most recent call last):
File “C:\Python27\projects\com.py”, line 21, in <module>
datastr = code.split(';')
IndexError: list index out of range
Отредактировано perevezenzev (Янв. 24, 2014 20:14:12)
Офлайн
if len (data) > 0: code = data.split(':') datastr = code[ 1].split(';')
Офлайн
Я вообще в приведенном вами скрипте не вижу строки, которая указана в трейсбеке.
Офлайн
потому что сайт съел там после “code” скобки квадратные и всё что между ними, надо наверно трейсы тоже в тег code обворачивать
Офлайн