編輯器格式和屬性
這是關於CANlib SDK中使用轉換庫(kvlclib)3篇系列文章第1篇
1. 編輯器格式和屬性(1/3) 2. 轉換為純SCII碼(2/3) 3. 特殊轉換情況(3/3) 包含在Kvaser Memorator配置工具中的轉換器已發布,它是CANlib SDK v5.19中的一個名為kvlclib的單獨轉換器庫。.[1] 如果您使用Kvaser Memorator 配置工具中的「提取和轉換文件」(Extract and convert files)嚮導,則您已經訪問了轉換器庫,可查看具體功能。" + 』=』 * 50) # Ask kvlclib for the first supported writer format
id = kvlc.WriterFormat.getFirstWriterFormat()
while True: fmt = kvlc.WriterFormat(id) print(str(fmt)) 11 # Ask kvlclib for the next supported writer format id = kvlc.WriterFormat.getNextWriterFormat(fmt.id_) # If no more writer formats were supported, we get id 0. if id == 0: break列表1:使用轉換器程序庫輸出支持的格式
運行列表1中的代碼生成所有支持的編輯器(即輸出)格式列表:[5]
Supported formats: Id Name (Extension), Description 4: CSV Frame (.csv), CAN frames in CSV format 100: CSV Signal (.csv), Selected signals in CSV format 200: CSV CCP/XCP (.csv), CCP/XCP calibration in CSV format 102: Matlab (.mat), Selected signals in Matlab format for ATI Vision 1: KME 2.4 (.kme), Kvaser binary format (KME 2.4) - used for Vector CANalyzer 2: KME 2.5 (.kme25), Kvaser binary format (KME 2.5) 7: KME 4.0 (.kme40), Kvaser binary format (KME 4.0)9: KME 5.0 (.kme50), Kvaser binary format (KME 5.0)
5: Plain text (.txt), CAN frames in plain text format 105: FAMOS (.dat), Selected signals in FAMOS format 201: FAMOS CCP/XCP (.dat), CCP/XCP calibration in FAMOS format 3: Vector ASCII (.asc), CAN frames in Vector ASCII format 8: Vector BLF (.blf), CAN frames in Vector BLF format 1000: Debug output (.dbg), RAW Debug output 101: MDF (.log), CAN frames in Vector Mdf 107: MDF v4.1 (.mf4), CAN frames in MDF v4.1 for Vector CANalyzer 106: MDF Signal (.mdf), Selected signals in MDF format for Vector CANalyzer108: MDF v4.1 Signal (.mf4), Selected signals in MDF v4.1 for Vector CANalyzer
103: ASCII J1587 (.asc), Vector ASCII J1587每個編輯器格式都有多個屬性,並使用函數kvlcIsPropertySupported(),我們可以找出特定編輯器格式是否支持單個屬性。例如:屬性KVLC_PROPERTY_ATTACHMENTS表示是否可以將文件附加到輸出文件。
import canlib.kvlclib as kvlc # Set output format fmt = kvlc.WriterFormat(kvlc.FILE_FORMAT_PLAIN_ASC) # check if format supports KVLC_PROPERTY_ATTACHMENTS if fmt.isPropertySupported(kvlc.PROPERTY_ATTACHMENTS): print("PROPERTY_ATTACHMENTS is supported") else: print("PROPERTY_ATTACHMENTS is not supported")列表2:檢查編輯器格式屬性存在的示例代碼
運行列表2中的代碼顯示編輯器格式KVLC_FILE_FORMAT_PLAIN_ASC不支持編輯器屬性KVLC_PROPERTY_ATTACHMENTS. PROPERTY_ATTACHMENTS is not supported一旦我們實例化了轉換器,大多數(但不是全部)編輯器屬性可以使用 kvlcSetProperty() 和 kvlcGetProperty()進行讀寫。[6] 也可以使用kvlcGetWriterPropertyDefault()檢查單個屬性的默認值。例如:屬性KVLC_PROPERTY_CHANNEL_MASK 設置為在轉換時應該使用的通道的位掩碼。
import canlib.kvlclib as kvlc # set output format fmt = kvlc.WriterFormat(kvlc.FILE_FORMAT_PLAIN_ASC) # set resulting output filename taking advantage of the extension defined in # the format. outfile = "myresult." + fmt.extension# create converter
kc = kvlc.Kvlclib(outfile, fmt) # check if converter supports KVLC_PROPERTY_CHANNEL_MASK if kc.isPropertySupported(kvlc.PROPERTY_CHANNEL_MASK): # print the current (default) value (in binary format) print("Original value for CHANNEL_MASK is %s" % bin(kc.getProperty(kvlc.PROPERTY_CHANNEL_MASK))) # set a new value kc.setProperty(kvlc.PROPERTY_CHANNEL_MASK, 1) # print the current value print("New value for CHANNEL_MASK is %s" % bin(kc.getProperty(kvlc.PROPERTY_CHANNEL_MASK)))# print default value (in binary format)
print("Default value for CHANNEL_MASK is %s" % bin(kc.getPropertyDefault(kvlc.PROPERTY_CHANNEL_MASK)))列表3:讀取和寫入轉換器屬性的示例代碼
運行列表3的代碼輸出以下結果: Original value for CHANNEL_MASK is 0b11 New value for CHANNEL_MASK is 0b1 Default value for CHANNEL_MASK is 0b11腳註
1. 轉換器程序庫kvlclib,目前僅在Windows操作系統上可用。 2. CANlib SDK和Python軟體包獨立下載見www.kvaser.cn/downloads3. 我會嘗試一直在該博文中的運行文本中編寫函數名和定義的C格式。
4. 在我們的代碼中,我們通過導入canlib.kvlclib作為kvlc導入轉換器包裝庫,這就使得這個簡單的命名方案成功實施。 5. 基於執行細節,結果可以任意順序返回。 6. 除KVLC_PROPERTY_ATTACHMENTS之外,屬性KVLC_PROPERTY_SIGNAL_BASED 和KVLC_PROPERTY_SHOW_SIGNAL_SELECT 僅可用於函數 kvlcIsPropertySupported().推薦閱讀:
※移動端內容編輯器(鍵盤)的設計參考
※如何從頭打造一個Markdown編輯器(序章)
※收集漂亮的 Vim 主題
※Confluence 6 在編輯器中控制參數的顯示