Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 15 additions & 9 deletions .github/workflows/CI_Pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ jobs:

#---------------------------------------------------------------------------
# Job: Build VIPM Library
# Runs first after check-broken-vis; testcases wait for this to succeed.
# Only runs when:
# 1. check-broken-vis succeeded (implicit via needs)
# 2. Branch does NOT match **testcase** (Build's original branch filter)
Expand Down Expand Up @@ -150,7 +151,7 @@ jobs:
with:
LabVIEW_Version: 2017
VipbPath: ${{ github.workspace }}
timeout-minutes: 30
timeout-minutes: 60
continue-on-error: true

- name: Retry BuildDailyVIP if failed
Expand All @@ -160,7 +161,7 @@ jobs:
with:
LabVIEW_Version: 2017
VipbPath: ${{ github.workspace }}
timeout-minutes: 30
timeout-minutes: 60

- name: Upload a Build Artifact
uses: actions/upload-artifact@v4.3.2
Expand All @@ -187,15 +188,20 @@ jobs:

#---------------------------------------------------------------------------
# Job: Run Testcases
# Runs in parallel with build-vipm after check-broken-vis succeeds.
# Skipped when ONLY .vipb files changed (Check/Test's original path filter).
# Runs after build-vipm succeeds (sequential order).
# Only runs when testcase-relevant files changed.
# When build-vipm is skipped (e.g. only testcases changed), testcases still run.
#---------------------------------------------------------------------------
run-testcases:
needs: check-broken-vis
needs: build-vipm
if: |
needs.detect-changes.outputs.testcases == 'true' ||
needs.detect-changes.outputs.internal_test == 'true' ||
needs.detect-changes.outputs.source == 'true'
always() && (
needs.build-vipm.result == 'success' || needs.build-vipm.result == 'skipped'
) && (
needs.detect-changes.outputs.testcases == 'true' ||
needs.detect-changes.outputs.internal_test == 'true' ||
needs.detect-changes.outputs.source == 'true'
)
runs-on: [self-hosted, lv2017]
steps:
- uses: actions/checkout@v4.2.2
Expand All @@ -210,7 +216,7 @@ jobs:
timeout-minutes: 60

#---------------------------------------------------------------------------
# Job: Notify — always runs after build + testcases finish
# Job: Notify — always runs after build → testcases both finish
# Serves as the "group completed" signal point.
#---------------------------------------------------------------------------
notify:
Expand Down
10 changes: 0 additions & 10 deletions .markdownlint.json

This file was deleted.

11 changes: 11 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,15 @@
{
"markdownlint.config": {
"MD033": false,
"MD013": false,
"MD032": false,
"MD028": false,
"MD024": false,
"MD007": false,
"MD022": false,
"MD040": false,
"MD041": false
},
"cSpell.words": [
"Cacher",
"cloneable",
Expand Down
21 changes: 3 additions & 18 deletions Communicable State Machine(CSM).vipb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<VI_Package_Builder_Settings Version="2020.1" Created_Date="2023-07-01 11:20:47" Modified_Date="2026-07-13 14:08:21" Creator="liyao" Comments="" ID="0c29beabc891db75bf98ee70ecd8d4cc">
<VI_Package_Builder_Settings Version="2020.1" Created_Date="2023-07-01 11:20:47" Modified_Date="2026-07-28 13:59:44" Creator="liyao" Comments="" ID="70691c5c870962702e3ec364d7ff8f97">
<Library_General_Settings>
<Package_File_Name>NEVSTOP_lib_Communicable_State_Machine</Package_File_Name>
<Library_Version>2026.4.0.1</Library_Version>
Expand Down Expand Up @@ -66,23 +66,8 @@ For information on NEVSTOP-LAB, visit: &lt;color=blue&gt;&lt;u&gt;&lt;i&gt;https
<Copyright/>
<Packager>NEVSTOP</Packager>
<URL>https://github.com/NEVSTOP-LAB</URL>
<Release_Notes>Core
[update] #606 Add "Sync Response Only (F)" optional input for CSM - Run Script.vi
[update] #607 Expose "Wait (5000ms)" input for CSM watchdog thread
[fix] #620 Fix bug in CSM - Convert Argument to Error.vi
[update] #611 Set Menu Entry VIs as "Run When Opened", hide FP when run
[update] #612 Add CSM version in csmlog file
[update] #613 Update icon of "CSMLS - Define Loop State(s).vi" to indicate wiring order

Debug Tools
[fix] Fix CSM_LAUNCH_INTERFACE_BROWSER loading
[update] Update Interface Browser.vi
[fix] Minor fix on module information page of Debug Console

Doc/Palette
[doc] #617 Clarify chain mode routing semantics in zh/en API docs
[doc] #614 Add warning about reversed wiring in CSMLS - Define Loop State(s).vi help (en+zh)
[doc] Update documentation and fix type errors</Release_Notes>
<Release_Notes>[feature] #550 Linux support validation
[fix] #626 lvcsm is created when CSM is not used at all in project.</Release_Notes>
</Description>
<Destinations>
<Toolkit_VIs>
Expand Down
6 changes: 3 additions & 3 deletions README(zh-cn).md
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ _**CSM 函数面板**_

![image](.doc/_img/CSM%20Palette.png)

**代码模板介绍:**
**代码模板介绍:**
[English](src/help/NEVSTOP/Communicable%20State%20Machine(CSM)/Template%20Description(EN).md) | [中文](src/help/NEVSTOP/Communicable%20State%20Machine(CSM)/Template%20Description(zh-cn).md)

**API 介绍:**
**API 介绍:**
[English](src/help/NEVSTOP/Communicable%20State%20Machine(CSM)/VI%20Description(EN).md) | [中文](src/help/NEVSTOP/Communicable%20State%20Machine(CSM)/VI%20Description(zh-cn).md)

## 创建可重用模块
Expand Down Expand Up @@ -82,7 +82,7 @@ _**CSM 函数面板**_
JKISM 仅支持 STRING 类型参数,但应用需要传输各种数据类型。下表列出了当前参数支持选项,部分为内置功能,其他需要安装插件。

| 参数 | 类型 | 描述 |
|---|---|---|
| --- | --- | --- |
| SafeStr | 内置 | 特殊字符("->\| -> -@ & <- , ; []{}`")将被替换为 %[HEXCODE] |
| HexStr | 内置 | 数据转换为 variant 并编码为十六进制字符串 |
| [MassData](https://github.com/NEVSTOP-LAB/CSM-MassData-Parameter-Support) | 插件 | 数据存储在循环缓冲区中,传递起始位置和长度作为参数 |
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ _**CSM API Palette**_

![image](.doc/_img/CSM%20Palette.png)

**Template Description:**
**Template Description:**
[English](src/help/NEVSTOP/Communicable%20State%20Machine(CSM)/Template%20Description(EN).md) | [中文](src/help/NEVSTOP/Communicable%20State%20Machine(CSM)/Template%20Description(zh-cn).md)

**API Description:**
**API Description:**
[English](src/help/NEVSTOP/Communicable%20State%20Machine(CSM)/VI%20Description(EN).md) | [中文](src/help/NEVSTOP/Communicable%20State%20Machine(CSM)/VI%20Description(zh-cn).md)

## Create Reusable Modules
Expand Down Expand Up @@ -82,7 +82,7 @@ See _**/Example/3. Caller is Other Framework Scenario**_ for an example.
JKISM only supports STRING parameters, but applications need to transmit various data types. The table below lists current parameter support options—some built-in, others requiring addon installation.

| Parameter | Type | Description |
|---|---|---|
| --- | --- | --- |
| SafeStr | Built-in | Special characters ("->\| -> -@ & <- , ; []{}`") are replaced with %[HEXCODE] |
| HexStr | Built-in | Data is converted to variant and encoded as hex string |
| [MassData](https://github.com/NEVSTOP-LAB/CSM-MassData-Parameter-Support) | Addon | Data is stored in a circular buffer; StartPos with length is passed as parameter |
Expand Down
Binary file modified src/API Tree.vi
Binary file not shown.
Binary file added src/_TEST/test distributeControlsEvenly.vi
Binary file not shown.
Binary file modified src/_vipm/Post-Install Custom Action.vi
Binary file not shown.
Binary file modified src/_vipm/Pre-Build Custom Action.vi
Binary file not shown.
Binary file modified src/_vipm/Pre-Uninstall Custom Action.vi
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,62 +1,62 @@
# CSM Debug Tools

## ɨÃèÌí¼Ó"VI Reference" ·ÖÖ§(CSM - Add VI Reference Case to CSMs.vi)
## 扫描添加"VI Reference" 分支(CSM - Add VI Reference Case to CSMs.vi)

CSM Ä£°åÖбØÐë°üº¬"VI Reference" ·ÖÖ§£¬ÓÃÓÚÍⲿ»ñÈ¡VIµÄÒýÓá£ÔÚÔçÆÚµÄÄ£°åÖв¢²»°üº¬´Ëcase£¬´Ë¹¤¾ßÓÃÓÚÌí¼ÓËü¡£
CSM 模板中必须包含"VI Reference" 分支,用于外部获取VI的引用。在早期的模板中并不包含此case,此工具用于添加它。

´Ë¹¤¾ß»áɨÃè lvproj Ŀ¼ÖÐËùÓÐµÄ VI£¬Èç¹ûÕâ¸ö VI °üº¬ CSM Ä£¿é£¬Ëü½«±»ÂÞÁгöÀ´£¬È»ºóÄã¿ÉÒÔÑ¡ÔñÅúÁ¿µÄÌí¼Ó "VI Reference" ·ÖÖ§¡£
此工具会扫描 lvproj 目录中所有的 VI,如果这个 VI 包含 CSM 模块,它将被罗列出来,然后你可以选择批量的添加 "VI Reference" 分支。

## CSMµ÷ÊÔ¿ØÖÆÌ¨-¾É°æ±¾(CSM - Debug Console - previous.vi)
## CSM调试控制台-旧版本(CSM - Debug Console - previous.vi)

CSM µ÷ÊÔ¿ØÖÆÌ¨£¬Äã¿ÉÒÔʹÓô˹¤¾ß£º
CSM 调试控制台,你可以使用此工具:

1. Ñ¡ÔñÒÑÓÐµÄ CSM ʵÀý£¬´ò¿ªÇ°Ãæ°å¡¢ºóÃæ°å¡£
2. ɨÃèÒÑÓÐµÄ CSM ʵÀýµÄAPI½Ó¿Ú¡£
3. Ñ¡ÔñÒ»¸öAPI½Ó¿Ú£¬Í¬²½¡¢Òì²½µ÷Ó㬲鿴·µ»ØÖµ¡£
4. ²é¿´ÕûÌå³ÌÐòµÄÔËÐÐÈÕÖ¾¡£
1. 选择已有的 CSM 实例,打开前面板、后面板。
2. 扫描已有的 CSM 实例的API接口。
3. 选择一个API接口,同步、异步调用,查看返回值。
4. 查看整体程序的运行日志。

## CSMµ÷ÊÔ¿ØÖÆÌ¨(CSM - Debug Console - DebugTool.vi)
## CSM调试控制台(CSM - Debug Console - DebugTool.vi)

¸üкóµÄCSM µ÷ÊÔ¿ØÖÆÌ¨£¬Äã¿ÉÒÔʹÓô˹¤¾ß£º
更新后的CSM 调试控制台,你可以使用此工具:

1. Ñ¡ÔñÒÑÓÐµÄ CSM ʵÀý£¬´ò¿ªÇ°Ãæ°å¡¢ºóÃæ°å¡£
2. ɨÃèÒÑÓÐµÄ CSM ʵÀýµÄAPI½Ó¿Ú¡£
3. Ñ¡ÔñÒ»¸öAPI½Ó¿Ú£¬Í¬²½¡¢Òì²½µ÷Ó㬲鿴·µ»ØÖµ¡£
4. ²é¿´ÕûÌå³ÌÐòµÄÔËÐÐÈÕÖ¾¡£
5. ÔËÐÐ Scripts¡£
1. 选择已有的 CSM 实例,打开前面板、后面板。
2. 扫描已有的 CSM 实例的API接口。
3. 选择一个API接口,同步、异步调用,查看返回值。
4. 查看整体程序的运行日志。
5. 运行 Scripts。

## ÒÆ³ý CSM Ä£¿éÖÐËùÓеÄÊéÇ©(CSM - Remove all CSM Bookmarks.vi)
## 移除 CSM 模块中所有的书签(CSM - Remove all CSM Bookmarks.vi)

ÒÆ³ý CSM Ä£¿éÖÐËùÓеÄÊéÇ©¡£
移除 CSM 模块中所有的书签。

## ÈÕ־ʵʱ²é¿´¹¤¾ß(CSM - Running Log - DebugTool.vi)
## 日志实时查看工具(CSM - Running Log - DebugTool.vi)

CSMÕûÌå³ÌÐòµÄÔËÐÐÈÕ־ʵʱ²é¿´¹¤¾ß¡£
CSM整体程序的运行日志实时查看工具。

## ÊµÊ±×´Ì¬Ãæ°å(CSM - State Dashboard - DebugTool.vi)
## 实时状态面板(CSM - State Dashboard - DebugTool.vi)

CSMÕûÌå³ÌÐòÄ£¿éµÄÊµÊ±×´Ì¬Ãæ°å¡£
CSM整体程序模块的实时状态面板。

## ʵʱ״̬±í(CSM - State Table - DebugTool.vi)
## 实时状态表(CSM - State Table - DebugTool.vi)

<¿ª·¢ÖÐ> CSMÕûÌå³ÌÐòÄ£¿éµÄʵʱ״̬±í¡£
<开发中> CSM整体程序模块的实时状态表。

## Çл» CSM Ä£¿é VIÃèÊö¡¢×¢Ê͵ÄÓïÑÔ(CSM - Switch Language Tool.vi)
## 切换 CSM 模块 VI描述、注释的语言(CSM - Switch Language Tool.vi)

Çл» CSM Ä£¿é VIÃèÊö¡¢×¢Ê͵ÄÓïÑÔ¡£Ä¿Ç°Ö§³ÖÖÐÎÄ¡¢Ó¢ÎÄ¡£
切换 CSM 模块 VI描述、注释的语言。目前支持中文、英文。

## ÐÞ¸´ JKISM State Editor ÓÒ¼üµ¯³ö²Ëµ¥(CSM - Fix JKISM Editor RCM Entry.vi)
## 修复 JKISM State Editor 右键弹出菜单(CSM - Fix JKISM Editor RCM Entry.vi)

ÐÞ¸´ JKISM State Editor ÓÒ¼üµ¯³ö²Ëµ¥ÔÚ CSMÖв»Äܵ¯³öµÄÎÊÌâ¡£
修复 JKISM State Editor 右键弹出菜单在 CSM中不能弹出的问题。

## ÔÚÏîÄ¿¸ùĿ¼´´½¨ CSM Ä£¿éµÄº¯ÊýÑ¡°å(CSM - Create CSM Palette at Root.vi)
## 在项目根目录创建 CSM 模块的函数选板(CSM - Create CSM Palette at Root.vi)

ÔÚÏîÄ¿¸ùĿ¼´´½¨ CSM Ä£¿éµÄº¯ÊýÑ¡°å¡£
在项目根目录创建 CSM 模块的函数选板。

## CSM ʾÀýä¯ÀÀÆ÷(CSM - Example Browser.vi)
## CSM 示例浏览器(CSM - Example Browser.vi)

CSM ʾÀýä¯ÀÀÆ÷£¬ÔÊÐíÄúÇáËÉä¯ÀÀ CSM ʾÀý³ÌÐò¡£
CSM 示例浏览器,允许您轻松浏览 CSM 示例程序。

## CSM½Ó¿Úä¯ÀÀÆ÷(CSM - Interface Browser.vi)
## CSM接口浏览器(CSM - Interface Browser.vi)

ÓÃÓÚä¯ÀÀ CSM Ä£¿é½Ó¿ÚµÄ¹¤¾ß£¬ÔÊÐíÄú¿ìËٲ鿴ºÍËÑË÷ÏîÄ¿ÖÐ CSM Ä£¿éµÄ API ½Ó¿Ú¡£
用于浏览 CSM 模块接口的工具,允许您快速查看和搜索项目中 CSM 模块的 API 接口。
Loading
Loading