Ahoj.

Pro každá vstupní data by se dal napsat regulární výraz, který by je testoval. 
V Pythonu je k tomu určen modul re.

Například pro stav relé by to mohlo vypadat takto:

import re
re.match(r'^[01]{10}$', '1010010110')

re.match testuje regulární výraz proti zadanému vstupu. Pokud vyhovuje, vrátí 
ti Match object, pokud nesedí, vrátí None. Konkrétně tento testuje, zda je celý 
řetězec kombinací jen jedniček a nul v počtu deseti. Pokud tam bude kdekoli 
jakýkoli jiný znak, nebo bude vstup delší či kratší, bude vracet None.

Analogicky pro stav napětí (to samé, jen pro kratší řetězec):

re.match(r'^[01]{2}$', '01')

Pro stav teplot je to drobet složitější, ale princip je pořád stejný:

re.match(r'^[0-9]{4}\|[0-9]{4}\|[0-9]{4}\|$', '1256|1360|1150|')

Jednoduše řečeno - hledej od začátku čísla 0-9 v počtu čtyř, pak svislítko, pak 
další čtyři čísla, pak zase svislítko atp. až do konce.

Na poslední vstup bych regulární výrazy nepoužil. Místo toho bych si datum 
nechal konvertovat do objektu datetime takto:

from datetime import datetime
datetime.strptime('23.06.2015 16:01:35', '%d.%m.%Y %H:%M:%S')

Funkce v tomto případě vyrobí objekt reprezentující datum a čas rozparsované z 
řetězce dle zadaného formátu. Pokud by řetězec tomuto formátu neodpovídal, 
funkce vyvolá výjimku. Výjimku také vyvolá, pokud by na vstup přišlo nějaké 
nesmyslné datum jako 32. den v měsíci či 17. měsíc apod.

Snad je to srozumitelné. Před použitím doporučuji otestovat, zda naměřené 
hodnoty opravdu odpovídají těmto reg. výrazům.

Hezký den.
Lumír


Dne pondělí 29. června 2015 21:07:36 UTC+2 "Ing. Vladislav Ludík" napsal(a):
> Zdravím,
> 
> moje elektronika mi vrací po sériovém portu několik druhů dat:
> 
> stav relé: "010101010101" - 10-ti místný výstup 0 nebo 1
> stav napětí: "01" - 2-místný výstup 0 nebo 1
> stav teplot: "1256|1360|1150|" 15-ti místný výstup tří skupin oddělených |
> datum a čas: "23.06.2015 16:01:35" 19-ti místný výstup
> 
> Složitě to otestovat umím.
> Test by měl rozpoznat chybnou délku, formát a nelegální znaky 
> testovaných dat.
> Chtěl bych použít co nejjednodušší test.
> Zatím se mi to moc nedaří.
> Poradí mi někdo ?
> 
> Díky Vláďa
> 
> 
> 
> --- news://freenews.netfront.net/ - complaints: n...@netfront.net ---
_______________________________________________
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz

Odpovedet emailem