2017-07-22 3 views
0

私はPythonのpyserialパッケージを使用して私のコンピュータのseralポートを介してデータを読んでいます。ソースはFPGAボードです。python pyserialいくつかの特定の値の後にデータを格納する方法

ソースは、それに応じて24個のバイトを送信し、アイドル期間があります。このプロセスは繰り返されます。したがって、24回の転送の最初のバイトを見つけるには、マーキングバイトの一種である0バイトがあります。だから私はこのマーキングのバイトを得たときに、私は次の24バイトの記録を開始し、これを次の24バイトのリアルタイムで繰り返していきたいと思います。私は第0バイトを識別することができますが、次のステップに固執します。あなたは以下の現在のコードを見ることができ

...事前に

おかげ

import serial 
port = serial.Serial('/dev/ttyUSB1', 115200) 
file = open("my_file.txt","a") 
i=0 
j=0 
while True: 
    i=i+1 
    print "  i --> % d " % (i) 

    raw_data = ord(port.read()) 

    if raw_data==127: 
     j=j+1 
     print('-----',j,'------------------------------') 
    else : 
     print(raw_data,a) 
     file.write(str(raw_data) + "\n")    

file.close() 
+0

はあなたが_ **ゼロ番目の識別方法を見ていませんでしたバイト** _、 'raw_data == 127:'がゼロでない場合? – stovfl

+0

127インジケータまたは0番目のビットは、それ以降に有用な24バイトが有効であることを通知します。 "1バイトインジケータ+ 24バイト" – macellan

答えて

0

質問:...いくつかの特定の値の後にデータを格納するための方法を

24バイトをlistに集約します。

# Get in Sync with Byte == 127 
while True: 
    raw_data = ord(port.read()) 
    if raw_data == 127: 
     break 


record = [] 
while True: 
    raw_data = ord(port.read()) 

    if raw_data != 127: 
     record.append(raw_data) 
    else: 
     # Write Record 
     print('record[{}]:{}'.format(len(record), record)) 
     # Empty Record List 
     record = [] 

のPython»3.6.2ドキュメント:パイソンでテストclass list([iterable])

Lists may be constructed in several ways: 

    Using a pair of square brackets to denote the empty list: [] 
    Using square brackets, separating items with commas: [a], [a, b, c] 
    Using a list comprehension: [x for x in iterable] 
    Using the type constructor: list() or list(iterable) 

:3.4.2

関連する問題