- C++ 52.1%
- C 47.9%
| TSSteps | ||
| .gitignore | ||
| CODESTEPS_GUIDELINES.md | ||
| quicktest-codesteps.slnx | ||
| README.md | ||
🧩 QuickTest · CodeSteps
🛠️ DLL di riferimento e linee guida per gli step C/C++ di NI TestStand 2016. Un catalogo completo, compilabile e verificabile, che copre ogni tipo di dato esposto al C/C++ DLL Adapter — il banco di prova canonico del flusso CodeSteps.
📖 Cos'è
TSSteps è una DynamicLibrary C++ pensata per essere caricata dal C/C++ DLL Adapter di TestStand.
Espone una funzione per ogni tipo di dato (bool, enum, interi con/senza segno a 8/16/32/64 bit, float/double, stringhe, array, struct), ciascuna con un'operazione semplice e verificabile a colpo d'occhio — così da validare il passaggio dei parametri in entrambe le direzioni.
🎯 Obiettivo: fornire un contratto pulito (header dei tipi + typelib) e un set di step di riferimento per chi configura sequenze TestStand col DLL Adapter.
📂 Struttura del repository
quicktest-codesteps/
├── 📄 CODESTEPS_GUIDELINES.md # 📐 Le regole d'oro (typelib, struct, enum, errori…)
├── 📄 quicktest-codesteps.slnx # 🧱 Soluzione Visual Studio
├── 📁 TSSteps/ # 💠 Progetto della DLL
│ ├── TSSteps.h / .cpp # → funzioni esportate (Test*)
│ ├── TSSteps_types.h # → tipi pubblici (enum/struct) — contratto per TestStand
│ ├── TSSteps.idl # → typelib autocontenuta (.tlb)
│ ├── TSSteps.def # → tabella export
│ ├── TSSteps.rc # → risorse
│ └── pch.* / framework.h / dllmain.cpp
└── 📁 generated/ # ⚙️ Output del codegen (workspace TestStand generati)
🧪 Step esposti dalla DLL
| 🔢 Categoria | 🧩 Funzione | ⚙️ Operazione |
|---|---|---|
| ✅ Boolean | TestBool |
outVal = NOT inVal |
| 🔁 Enum | TestEnum |
modo successivo (Passthrough → Double → Triple → …) |
| 🔟 Interi | TestInt8/16/32/64, TestUInt8/16/32/64 |
outVal = inVal + 1 |
| 🔬 Virgola mobile | TestFloat, TestDouble |
outVal = inVal + 1 |
| 🔤 Stringhe | TestString |
outVal = MAIUSCOLO(inVal) |
| 📊 Array | TestArrayDouble, TestArrayInt |
ogni elemento +1 (in-place) |
| 🧱 Struct | TestStruct |
ogni campo +1 (in-place) |
| 🚨 Errori | TestErrorParam |
outVal = inVal+1; errorCode < 0 se inVal < 0 |
🚦 Modello di errore
- Valore di ritorno
long:0 = OK,< 0 = errore - Buffer
char* errorMsgper il messaggio diagnostico - Codici standard:
TS_OK,TS_ERR_INVALID_PARAM,TS_ERR_NOT_OPEN,TS_ERR_COMM,TS_ERR_TIMEOUT,TS_ERR_GENERAL
🧬 Tipi pubblici (TSSteps_types.h)
enum TSOpMode→ categoria Enumeration in TestStandstruct MeasResult { double value; long status; double timestamp; }→ Container (packing 8)
🔨 Build
- 📂 Apri
quicktest-codesteps.slnxin Visual Studio (toolset v145). - 🧱 Seleziona la configurazione Release e fai Build / Rebuild.
- 📦 Nella
OutDirottieni il pacchetto completo:File Ruolo 🟢 TSSteps.dllla libreria 🧾 TSSteps.tlbtypelib standalone (stesso nome base, stessa cartella della DLL) 📋 TSSteps.h,TSSteps_types.hheader del contratto, copiati accanto alla DLL
⚠️ Regola vincolante: la typelib deve essere un file
.tlbcon lo stesso nome base della DLL e nella stessa cartella — non incorporata come risorsa.
🎛️ Uso in TestStand
- 🔌 Step C/C++ DLL Adapter → punta a
TSSteps.dll(la.tlbaccanto fornisce i prototipi). - 🧬 Tipi struct/enum: importa gli struct con il wizard Create/Update Custom Data Type from Struct (opzione Specify Source Code File) puntando a
TSSteps_types.h; gli enum diventano categoria Enumeration. - 📐 Per i dettagli (passaggio struct, packing, gestione errori, varianti) →
CODESTEPS_GUIDELINES.md.
🌐 Ecosistema QuickTest
Questo repo è la parte CodeSteps del sistema QuickTest:
- 🧩 quicktest-codesteps (questo repo) — DLL di riferimento + linee guida + output generato
- 🦀 quicktest-core — backend/codegen (Rust) che produce i workspace in
generated/ - 🖥️ quicktest-gui-web — interfaccia web
📜 Licenza
🔒 Progetto interno MENSYS · R&D. Tutti i diritti riservati salvo diverso accordo.