第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用struct.pack格式構(gòu)造字節(jié)?

如何使用struct.pack格式構(gòu)造字節(jié)?

蝴蝶刀刀 2022-12-20 15:18:48
背景我正在使用python-seabreeze與光譜儀交談。一些但不是所有可用命令都在 python-seabreeze 中實(shí)現(xiàn)。從OceanOptics Flame-T手冊(cè)中可以看到有如下命令(舉例):..0x09 Request Spectra0x0A Set Trigger Mode0x0B Query number of Plug-in Accessories Present0x0C Query Plug-in Identifiers0x0D Detect Plug-ins0x12 LED Status0x60 General I2C Read0x61 General I2C Write0x62 General SPI I/O0x68 PSOC Read0x69 PSOC Write0x6A Write Register Information0x6B Read Register Information0x6C Read PCB Temperature0x6D Read Irradiance Calibration..從seabreeze/pyseabreeze/protocol.py我可以看到這些命令是這樣形成的:import functoolsimport struct  msgs = {     code: functools.partial(struct.Struct(msg).pack, code)    for code, msg in {        0x01: "<B",  # OP_INITIALIZE         0x02: "<BI",  # OP_ITIME         0x03: "<BH",  # set Strobe/Lamp enable Line         0x05: "<BB",  # OP_GETINFO         0x09: "<B",  # OP_REQUESTSPEC         0x0A: "<BH",  # OP_SETTRIGMODE         0x6A: "<BBH",  # OP_WRITE_REGISTER         0x6B: "<BB",  # OP_READ_REGISTER         0x71: "<BBB",  # OP_TECENABLE_QE         0x72: "<B",  # OP_READTEC_QE         0x73: "<Bh",  # OP_TECSETTEMP_QE         0xFE: "<B",  # OP_USBMODE     }.items() }  # add more here if you implement new features例如Request Spectra,根據(jù)手冊(cè)是0x09,當(dāng)它來(lái)自 python 時(shí),一條消息struct.Struct('<B').pack(0x09)已發(fā)送。我試圖通過(guò)閱讀struct format strings來(lái)了解發(fā)生了什么,我發(fā)現(xiàn)這<意味著“小端”, B意味著無(wú)符號(hào)字符,h意味著短,等等。題從手冊(cè)中應(yīng)該如何知道格式是,而格式OP_GETINFO是?這是什么邏輯?你會(huì)把什么格式和為什么?<BBOP_WRITE_REGISTER<BBH0x6C Read PCB Temperature
查看完整描述

1 回答

?
慕田峪4524236

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊


似乎您需要閱讀需要使用哪些參數(shù)才能發(fā)送合法命令,該協(xié)議僅定義了您希望發(fā)送的一些項(xiàng)目,例如:


code_partial_function = functools.partial(struct.Struct(msg).pack, code)

...

0x6B: "<BB",  # OP_READ_REGISTER

...


# used like this later:

# example for register number 1

# final_packed_bytes will contain both the operation id and the register number

final_packed_bytes = code_partial_function(0x1)

對(duì)于這個(gè)讀取寄存器的操作,protocol.py 將創(chuàng)建一個(gè)已經(jīng)包含操作 id (0x6b) 的部分函數(shù),并將要求您提供額外的“B”,表示另一個(gè)無(wú)符號(hào)字符,可能是您希望讀取的寄存器編號(hào)。


該協(xié)議僅提供 ID 作為 pack 函數(shù)的第一個(gè)輸入,而將其余值留給用戶。每個(gè)操作在操作 ID 后需要不同的值,有些需要更多(“BBH”),有些需要更少(“B”)。


對(duì)于 0x6c,我會(huì)搜索格式并從那里了解我還剩下什么來(lái)提供這個(gè)包功能。


查看完整回答
反對(duì) 回復(fù) 2022-12-20
  • 1 回答
  • 0 關(guān)注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)