半導體設備通信標準—secsgem v0.3.0版本使用說明文檔(4)之HSMS(SEMI E37)

文章目錄

  • 1、消息快
    • 1.1、選擇 請求
    • 1.2、選擇響應
    • 1.3、取消選擇請求
    • 1.4、取消選擇響應
    • 1.5、Linktest 請求
    • 1.6、Linktest 響應
    • 1.7、拒絕請求
    • 1.8、單獨請求
    • 1.9、數據消息
  • 2、 協議
    • 2.1、 事件

SEMI E37

HSMS 定義主機和設備之間通過 TCP 協議的通信。 它指定用于啟動和終止連接的數據包,檢查鏈路是否仍處于活動狀態并傳輸實際數據。

1、消息快

一個 HSMS 消息 {py:class}secsgem.hsms.HsmsMessage 由一個頭部 {py:class}secsgem.hsms.HsmsHeader 和一個塊列表 {py:class}secsgem.hsms.HsmsBlock 組成。

它初始化時會有一個數據字段,該字段用于自動生成數據塊。
這些數據塊是數據字段的一部分,會進行傳輸。
對于 HSMS 數據而言,在一條消息中只存在一個數據塊,因為該消息無需分割。

>>> secsgem.hsms.HsmsMessage(secsgem.hsms.HsmsLinktestReqHeader(2), b"")
HsmsMessage({'header': HsmsLinktestReqHeader({device_id:0xffff, stream:00, function:00, p_type:0x00, s_type:0x05, system:0x00000002, require_response:False}), 'data': ''})

每個頭部都有一個系統標識符,用于匹配針對某一請求的響應。
系統標識符是 headers 構造函數的第一個參數。
連接會跟蹤系統標識符,可以通過調用 {py:func} secsgem.hsms.HsmsProtocol.get_next_system_counter 函數來請求一個新的系統標識符。

HSMS 塊對象可以通過調用 {py:func}secsgem.hsms.HsmsBlock.encode 函數將自身編碼為一個字節數組,該字節數組可以通過 TCP 連接進行傳輸。

>>> message = secsgem.hsms.HsmsMessage(secsgem.hsms.HsmsLinktestReqHeader(2), b"")
>>> secsgem.common.format_hex(message.blocks[0].encode())
'00:00:00:0a:ff:ff:00:00:00:05:00:00:00:02'

反過來講,HSMS 塊對象可以通過使用 {py:func}secsgem.hsms.HsmsBlock.decode 函數對字節數組進行處理來創建。

>>> secsgem.hsms.HsmsBlock.decode(packetData)
<secsgem.hsms.message.HsmsBlock object at 0x1082c4f80>

對于所有可用的 HSMS 數據包類型,都有從 {py:class}secsgem.hsms.HsmsHeader 繼承而來的類:

TypeClassSType
Select Request{py:class}secsgem.hsms.HsmsSelectReqHeader1
Select Response{py:class}secsgem.hsms.HsmsSelectRspHeader2
Deselect Request{py:class}secsgem.hsms.HsmsDeselectReqHeader3
Deselect Response{py:class}secsgem.hsms.HsmsDeselectRspHeader4
Linktest Request{py:class}secsgem.hsms.HsmsLinktestReqHeader5
Linktest Response{py:class}secsgem.hsms.HsmsLinktestRspHeader6
Reject Request{py:class}secsgem.hsms.HsmsRejectReqHeader7
Separate Request{py:class}secsgem.hsms.HsmsSeparateReqHeader9
Data Message{py:class}secsgem.hsms.HsmsStreamFunctionHeader0

1.1、選擇 請求

建立 HSMS 通信

>>> secsgem.hsms.HsmsSelectReqHeader(14)
HsmsSelectReqHeader({device_id:0xffff, stream:00, function:00, p_type:0x00, s_type:0x01, system:0x0000000e, require_response:False})

1.2、選擇響應

select 請求的結果

>>> secsgem.hsms.HsmsSelectRspHeader(24)
HsmsSelectRspHeader({device_id:0xffff, stream:00, function:00, p_type:0x00, s_type:0x02, system:0x00000018, require_response:False})

1.3、取消選擇請求

在斷開連接之前關閉 HSMS 通信

>>> secsgem.hsms.HsmsDeselectReqHeader(1)
HsmsDeselectReqHeader({device_id:0xffff, stream:00, function:00, p_type:0x00, s_type:0x03, system:0x00000001, require_response:False})

1.4、取消選擇響應

取消選擇請求的結果

>>> secsgem.hsms.HsmsDeselectRspHeader(1)
HsmsDeselectRspHeader({device_id:0xffff, stream:00, function:00, p_type:0x00, s_type:0x04, system:0x00000001, require_response:False})

1.5、Linktest 請求

檢查 HSMS 連接鏈接是否正常

>>> secsgem.hsms.HsmsLinktestReqHeader(2)
HsmsLinktestReqHeader({device_id:0xffff, stream:00, function:00, p_type:0x00, s_type:0x05, system:0x00000002, require_response:False})

1.6、Linktest 響應

linktest 請求的結果

>>> secsgem.hsms.HsmsLinktestRspHeader(10)
HsmsLinktestRspHeader({device_id:0xffff, stream:00, function:00, p_type:0x00, s_type:0x06, system:0x0000000a, require_response:False})

1.7、拒絕請求

對不支持的 HSMS 消息的響應

>>> secsgem.hsms.HsmsRejectReqHeader(17, secsgem.hsms.HsmsSType.DESELECT_REQ, 4)
HsmsRejectReqHeader({device_id:0xffff, stream:03, function:04, p_type:0x00, s_type:0x07, system:0x00000011, require_response:False})

1.8、單獨請求

立即終止 HSMS 連接

>>> secsgem.hsms.HsmsSeparateReqHeader(17)
HsmsSeparateReqHeader({device_id:0xffff, stream:00, function:00, p_type:0x00, s_type:0x09, system:0x00000011, require_response:False})

1.9、數據消息

秒流和函數消息

>>> secsgem.hsms.HsmsStreamFunctionHeader(22, 1, 1, True, 100)
HsmsStreamFunctionHeader({device_id:0x0064, stream:01, function:01, p_type:0x00, s_type:0x00, system:0x00000016, require_response:True})

2、 協議

{py:class}secsgem.hsms.protocol.HsmsProtocol 類內置了基本的 HSMS 連接處理功能。
它會自動選擇和取消選擇鏈路,并定期執行鏈路測試。
它還會自動回復諸如鏈路測試之類的來自 HSMS 的請求。

>>> def on_connect(event, data):
...     print "Connected"
...
>>> client = secsgem.hsms.HsmsProtocol("10.211.55.33", 5000, False, 0, "test")
>>> client.events.connected += on_connect
>>> client.enable()
Connected
>>> client.protocol.send_linktest_req()
HsmsMessage({'header': HsmsHeader({device_id:0xffff, stream:00, function:00, p_type:0x00, s_type:0x06, system:0x75b78c48, require_response:False}), 'data': ''})
>>> client.disable()

該處理程序具備發送請求和響應以及等待特定響應的功能。

2.1、 事件

可以通過使用 secsgem.common.EventHandler 類來接收事件處理程序所引發的事件。該事件處理程序會發送以下事件:

Event nameDescription
connectedConnection was established
communicatingConnection was selected
disconnectedConnection was terminated

For an example on how to use these events see the code fragment above.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/77014.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/77014.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/77014.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

通過GO后端項目實踐理解DDD架構

最近在工作過程中重構的項目要求使用DDD架構&#xff0c;在網上查詢資料發現教程五花八門&#xff0c;并且大部分內容都是長篇的概念講解&#xff0c;晦澀難懂&#xff0c;筆者看了一些github上入門的使用DDD的GO項目&#xff0c;并結合自己開發中的經驗&#xff0c;談談自己對…

Ubuntu系統連網問題

0. Preface 給一臺新電腦裝上Ubuntu系統后&#xff0c;接好網線&#xff0c;發現上不了網&#xff0c;右上角是有網絡連接的圖標的&#xff0c;也能獲取到ip地址&#xff0c;就是沒辦法連網&#xff0c;ping www.google.com也沒反應。 其實應該是網絡設置有點問題&#xff0c;…

C/C++---頭文件保護機制

在 C 和 C 編程里&#xff0c;頭文件保護機制是一種防止頭文件被重復包含的技術&#xff0c;它主要借助 #ifndef、#define 和 #endif 這些預處理指令來達成&#xff0c;也可以使用 #pragma once 這一編譯器特定指令。下面詳細闡述這一機制&#xff1a; 1. 頭文件重復包含的問題…

藍橋杯 8. 分巧克力

分巧克力 原題目鏈接 問題描述 兒童節那天有 K 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友們。 小明一共有 N 塊巧克力&#xff0c;其中第 i 塊是 H? W? 的長方形。為了公平起見&#xff0c;小明需要從這 N 塊巧克力中切出 K 塊巧克力分給小朋友們。 要求…

從 SQL2API 到 Text2API:開啟數據應用開發的新征程

在技術革新浪潮的席卷下&#xff0c;數據應用開發領域正經歷著深刻變革。曾經&#xff0c;構建數據 API 需要開發者具備扎實的數據庫知識和編程技能&#xff0c;手動編寫復雜的 SQL 查詢與 API 代碼&#xff0c;這一過程不僅耗時費力&#xff0c;還將眾多非技術人員阻擋在數據應…

繼承:(開始C++的進階)

我們今天來學習C的進階&#xff1a; 面向對象三大特性&#xff1a;封裝&#xff0c;繼承&#xff0c;多態。 封裝我們在前面已經學了&#xff0c;我們細細理解&#xff0c;我們的類的封裝&#xff0c;迭代器的封裝&#xff08;vector的迭代器可以是他的原生指針&#xff0c;li…

冒泡排序、插入排序、快速排序、堆排序、希爾排序、歸并排序

目錄 冒泡排序插入排序快速排序(未優化版本)快速排序(優化版本)堆排序希爾排序歸并排序各排序時間消耗對比 冒泡排序 冒泡排序核心邏輯就是對數組從第一個位置開始進行遍歷&#xff0c;如果發現該元素比下一個元素大&#xff0c;則交換位置&#xff0c;如果不大&#xff0c;就…

JavaScript:表單及正則表達式驗證

今天我要介紹的是在JavaScript中關于表單驗證內容的知識點介紹&#xff1a; 關于表單驗證&#xff0c;我接下來則直接將內容以及效果顯示出來并作注解&#xff0c;這樣可以清晰看見這個表達驗證的妙用&#xff1a; <form id"ff" action"https://www.baidu.…

天元證券|調倉曝光!首批科技基金一季報出爐

4月15日&#xff0c;中歐基金、永贏基金、長城基金等公募基金公司旗下部分權益類基金產品一季報出爐。 券商中國記者梳理發現&#xff0c;永贏信息產業智選混合主要聚焦信息技術領域布局&#xff0c;前十大重倉股中9只股票屬于信息技術行業&#xff0c;合計占基金資產凈值比例達…

SpringAI版本更新:向量數據庫不可用的解決方案!

Spring AI 前兩天&#xff08;4.10 日&#xff09;更新了 1.0.0-M7 版本后&#xff0c;原來的 SimpleVectorStore 內存級別的向量數據庫就不能用了&#xff0c;Spring AI 將其全部源碼刪除了。 此時我們就需要一種成本更低的解決方案來解決這個問題&#xff0c;如何解決呢&…

Sklearn入門之datasets的基本用法

、 Sklearn全稱:Scipy-toolkit Learn是 一個基于scipy實現的的開源機器學習庫。它提供了大量的算法和工具&#xff0c;用于數據挖掘和數據分析&#xff0c;包括分類、回歸、聚類等多種任務。本文我將帶你了解并入門Sklearn下的datasets在機器學習中的基本用法。 獲取方式 pi…

優化 Dockerfile 性能之實踐(Practice of Optimizing Dockerfile Performance)

優化 Dockerfile 性能之實踐 構建 Docker 鏡像時&#xff0c;Dockerfile 的性能會顯著影響構建過程的效率。經過優化的 Dockerfile 可以縮短構建時間、最小化鏡像大小并提高整體容器性能。在本文中&#xff0c;我們將探討優化 Dockerfile 性能的最佳實踐。 盡量減少層數 影響…

出現 ERR_CERT_COMMON_NAME_INVALID | 301 302 重定向的解決方法

目錄 前言1. 問題所示2. 原理分析3. 解決方法前言 ?? 找工作,來萬碼優才:?? #小程序://萬碼優才/r6rqmzDaXpYkJZF 爬蟲神器,無代碼爬取,就來:bright.cn 1. 問題所示 執行代碼時,出現如下提示: GET https://xxxx/admin-api/system

C語言 —— 指尖躍遷 刻印永恒 - 文件操作

目錄 1. 什么是文件 1.1 程序文件 1.2 數據文件 1.3 文件名 2. 二進制文件和文本文件 3. 文件的打開與關閉 3.1 流和標準流 3.2 文件指針 3.3 文件的打開與關閉 fopen fclose 4. 文件的順序讀寫 4.1 fgetc和fputc fgetc fputc 4.2 fgets和fputs fgets fputs…

用css給div列表加個序號

用 CSS 的 counter 相關屬性來為列表添加序號。以下是具體的代碼&#xff0c;我將以 HTML 文件的形式提供&#xff0c;并且會運行展示效果&#xff1a; .as-div {// counter-reset: my-counter; /* 計數器名稱是my-counter */// counter-reset: small-apple; /* 計數器名稱是s…

Rust : 關于*const () 與type erase

*const () 可以替代泛型&#xff0c;更加靈活。 一、 代碼 //use std::mem::transmute; trait Work {fn process(&self); } struct Foo(String);impl Work for Foo {fn process(&self) {println!("process work from Foo : {}", self.0);} } struct Bar(S…

【專題刷題】雙指針(二)

&#x1f4dd;前言說明&#xff1a; 本專欄主要記錄本人的基礎算法學習以及LeetCode刷題記錄&#xff0c;按專題劃分每題主要記錄&#xff1a;&#xff08;1&#xff09;本人解法 本人屎山代碼&#xff1b;&#xff08;2&#xff09;優質解法 優質代碼&#xff1b;&#xff…

吉爾吉斯斯坦工商會代表團赴齊河德瑞新能源汽車考察

德州齊河&#xff0c;2025年4月15日電 時中美貿易突變之際&#xff0c;乘國家一帶一路之風。 展中國新能源之宏圖&#xff0c;塑國貿體系之新方向。 今日上午&#xff0c;吉爾吉斯斯坦共和國工商會代表團一行三人受邀抵達濟南&#xff0c;開啟對德瑞新能源科技有限公司&…

【記錄condapack打包環境到超算上順利運行】

以安裝CLRNet為例子 本地Linux系統上的操作步驟。 由于官方的安裝包的步驟&#xff0c;執行condapack的時候會報錯&#xff0c;所以使用以下步驟進行安裝包。 安裝其他 Python 依賴包 pip install -r requirements.txt? 二、構建并打包項目&#xff08;核心步驟&#xff…

Windows OpenUtau-v0.1.529-開源歌曲合成軟件[提供MIDI編輯、歌詞調整、音色修改 等功能,音樂創作者的必備工具]

Windows OpenUtau 鏈接&#xff1a;https://pan.xunlei.com/s/VONy_Refvo6_813Ig--nu5_rA1?pwdejzc# 引擎&#xff08;Resampler&#xff09;和拼接器&#xff08;Wavtool&#xff09;是UTAU協議中音頻處理的兩大組件。前端編輯器通過調用引擎和拼接器&#xff0c;對音頻進行…