update: decoder course

This commit is contained in:
dreamsourcelabTAI 2022-03-11 11:47:21 +08:00
parent fff00618f5
commit 67d6802508
2 changed files with 15 additions and 22 deletions

Binary file not shown.

View File

@ -30,12 +30,13 @@
## text block fill color table:
## [#EF2929,#F66A32,#FCAE3E,#FBCA47,#FCE94F,#CDF040,#8AE234,#4EDC44,#55D795,#64D1D2
## ,#729FCF,#D476C4,#9D79B9,#AD7FA8,#C2629B,#D7476F]
## 导出核心模块类
import sigrokdecode as srd
## 本协议模块具体代码
## 本协议模块
class Decoder(srd.Decoder):
## 必须的
api_version = 3
## 协议标识,必须唯一
@ -70,7 +71,7 @@ class Decoder(srd.Decoder):
## 必须要绑定的通道定义,将在界面上可见
## id:通道标识, 任意命名
## type:类型,根据需要设置一个值
## type:类型,根据需要设置一个值, -1:COMMON,0:SCLK,1:SDATA,2:ADATA
## name:标签名
## desc:该通道的说明
channels = (
@ -88,14 +89,13 @@ class Decoder(srd.Decoder):
{'id': 'mode', 'desc': 'work mode', 'default': 'up','values': ('up','low')},
)
## 解析结果定义
## 解析结果定义
# annotations里的每一项可以有2到3个属性当有个属性时第一个表示类型
## 类型对应0-16个颜色当类型范围在200-299时将绘制边沿箭头
annotations = (
(100, 'test-data1', 'example test data1'),
(201, 'test-data2', 'example test data2'),
(1, 'test-data3', 'example test data3'),
('1', 'test-data1', 'example test data1'),
('2', 'test-data2', 'example test data2'),
('222', 'test-data3', 'example test data3'),
)
## 解析结果的行定义
@ -122,24 +122,20 @@ class Decoder(srd.Decoder):
## 定义一个输出函数
## a,b为采样起点和终点, value为要输出的数值
def put_row1(self, a, b, value):
#'@%02X', 前边加@是告诉底层模块这是一个数值数据显示格式可转化为hex/oct/bin/acii/dec
# '@%02X', 前边加@是告诉底层模块这是一个数值数据显示格式可转化为hex/oct/bin/acii/dec
# {$}是占位符,内容由数值部分填充
# @特殊符号和{$}占位符的特性只有DSView版本在1.2.0以上才支持
# []描述输出内容第一个元素表示annotation序号,annotation的由annotation_row决定
self.put(a, b, self.out_ann, [0, ['{$}', '@%02X' % value]])
# []描述输出内容第一个元素表示annotation序号,annotation的输出在哪一行由annotation_rows集合定决定
self.put(a, b, self.out_ann, [0, ['r1:{$}', '@%02X' % value]])
def put_row2(self, a, b, value):
self.put(a, b, self.out_ann, [1, ['{$}', '@%02X' % value]])
def put_row3(self, a, b, value):
self.put(a, b, self.out_ann, [2, ['row3']])
self.put(a, b, self.out_ann, [2, ['r2:{$}', '@%02X' % value]])
## 触发解析工作
def decode(self):
step = 0
times = 0
lst_dex = self.samplenum
b_f = False
flag_arr = [{0:'r'}, {0:'f'}]
flag_dex = 0
@ -151,14 +147,12 @@ class Decoder(srd.Decoder):
(a,b) = self.wait(flag_arr[flag_dex])
if b_f == False:
b_f = True
if flag_dex == 0:
flag_dex = 1
lst_dex = self.samplenum
else:
flag_dex = 0
b_f = False
times += 1
times += 1
if times % 2 == 0:
self.put_row1(lst_dex, self.samplenum, self.samplenum - lst_dex)
else:
@ -171,4 +165,3 @@ class Decoder(srd.Decoder):
# h:高电平l:低电平r:上边沿f:下边沿e:上沿或下沿, n:要么0,要么1
# (a,b) = self.wait([{0:'f'}])
step += 1