{"id":40022,"date":"2025-12-16T07:00:00","date_gmt":"2025-12-16T12:00:00","guid":{"rendered":"https:\/\/www.dmcinfo.com\/?post_type=our_work&#038;p=40022"},"modified":"2025-12-10T11:23:49","modified_gmt":"2025-12-10T16:23:49","slug":"integrating-multi-instrument-test-stands-into-a-unified-api-framework","status":"publish","type":"our_work","link":"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/","title":{"rendered":"Integrating Multi-Instrument Test Stands into a Unified API Framework\u00a0"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\" id=\"h-unified-api\">Unified API<\/h3>\n\n\n\n<p>While there are drivers&nbsp;to control&nbsp;each device, most importantly,&nbsp;this application orchestrates smart switching and connection rules. For each API request, the application checks a series of rules to ensure the requested measurement is safe to conduct. Here&nbsp;is&nbsp;a subset of the enforced rules and features:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Free matrix y-lines&nbsp;<\/li>\n\n\n\n<li>Avoid matrix&nbsp;<a href=\"https:\/\/www.pickeringtest.com\/en-us\/kb\/hardware-topics\/switching-system-specifications\/hot-switching-relays\" target=\"_blank\" rel=\"noreferrer noopener\">hot switching<\/a>&nbsp;<\/li>\n\n\n\n<li>Power sourcing instruments are not connected to a DMM in a low impedance mode (current measurement)&nbsp;<\/li>\n\n\n\n<li>Automatic y-line and internal switch control, so the client application only&nbsp;has to&nbsp;request the test points to measure rather than specifying every relay in the circuit&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>This allows the sequencers to safely perform measurements on any instrument without worrying about&nbsp;additional&nbsp;connection logic.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-easy-integration\">Easy Integration<\/h3>\n\n\n\n<p>The application is self-describing, so a&nbsp;client&nbsp;application knows what devices are present and lists the available APIs. The application hosts a&nbsp;<a href=\"https:\/\/swagger.io\/tools\/swagger-ui\/\" target=\"_blank\" rel=\"noreferrer noopener\">Swagger<\/a>&nbsp;page, so&nbsp;it\u2019s&nbsp;easy to test and visualize the available API.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"535\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/11\/24164647\/function-generator-api-1024x535.png\" alt=\"Function Generator api interface\" class=\"wp-image-40030\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/11\/24164647\/function-generator-api-1024x535.png 1024w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/11\/24164647\/function-generator-api-300x157.png 300w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/11\/24164647\/function-generator-api-768x401.png 768w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/11\/24164647\/function-generator-api.png 1478w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"723\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/11\/24164713\/function-generator-test-1-1024x723.png\" alt=\"Function generator test itnerface\" class=\"wp-image-40031\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/11\/24164713\/function-generator-test-1-1024x723.png 1024w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/11\/24164713\/function-generator-test-1-300x212.png 300w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/11\/24164713\/function-generator-test-1-768x542.png 768w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/11\/24164713\/function-generator-test-1.png 1440w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-highly-tested\">Highly Tested<\/h3>\n\n\n\n<p>We&nbsp;leverage&nbsp;the API interface to write&nbsp;PyTests&nbsp;that test each API. The test scripts are automated, making it easy for our team to test the whole application and&nbsp;produce&nbsp;a test report. Since we test through the API interface, testing is&nbsp;exactly the same&nbsp;as&nbsp;the way&nbsp;client applications will use the application.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-modern-and-version-controlled-deployment\">Modern and Version Controlled Deployment<\/h3>\n\n\n\n<p>To provide a stable and controlled deployment environment, we build the application into a Docker image and run the image within a container on a Linux industrial PC. The entire build process is managed through a Continuous Integration\/Continuous Deployment pipeline for end-to-end traceability.\u00a0<\/p>\n\n\n\n<p>Key advantages:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>No issues with Windows updates<\/li>\n\n\n\n<li>Traceable \u2013 we know exactly what code went into the build&nbsp;<\/li>\n\n\n\n<li>Testable \u2013 we can run the exact same tests on the source and containerized version of the application&nbsp;<\/li>\n<\/ul>\n\n\n\n<p><strong>If&nbsp;you\u2019re&nbsp;interested in highly tested, modular <a href=\"https:\/\/www.dmcinfo.com\/services\/test-and-measurement-automation\/\">test and measurement systems<\/a> like this one,&nbsp;<a href=\"https:\/\/www.dmcinfo.com\/contact\/#get-in-touch\" target=\"_blank\" rel=\"noreferrer noopener\">contact DMC<\/a>&nbsp;to discuss your project. <\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Unified API While there are drivers&nbsp;to control&nbsp;each device, most importantly,&nbsp;this application orchestrates smart switching and connection rules. For each API request, the application checks a series of rules to ensure the requested measurement is safe to conduct. Here&nbsp;is&nbsp;a subset of the enforced rules and features:&nbsp; This allows the sequencers to safely perform measurements on any [&hellip;]<\/p>\n","protected":false},"author":46,"featured_media":40028,"template":"","meta":{"customer":"","summary":"<p>DMC developed a reconfigurable automated test system (ATE) with a generic, unified API. Rather than worrying about individual instrument control, client applications (sequencers) can focus on the Device Under Test (DUT) and not the instruments in the test. The unified API solution simplified the interactions of the sequencers during a test while still allowing complete measurement control.<\/p>","description":"","customer_benefits":"<ul>\r\n<li>Cohesive control of multiple instruments, allowing client applications to focus on the DUT<\/li>\r\n<li>Highly tested with full API coverage using PyTest<\/li>\r\n<li>Easily integrated into any client application (C#, Python, LabVIEW) with RESTful Interface<\/li>\r\n<li>Traceable, consistent deployment process with CI\/CD and Docker guaranteeing ATE performance<\/li>\r\n<\/ul>","components_used":"The application is built on the <a href=\"https:\/\/fastapi.tiangolo.com\/\">FastAPI<\/a> framework, allowing for integration into any number of languages through web requests. The application is entirely written in Python and controls the following devices: \r\n<ul>\r\n<li>Oscilloscope<\/li>\r\n<li>DMM<\/li>\r\n<li>Power Supply<\/li>\r\n<li>Multiple high density switch matrices<\/li>\r\n<li>Function Generator<\/li>\r\n<li>Source Measurement Unit<\/li>\r\n<\/ul>\r\n<br>\r\nThe software is packaged into a Docker image that runs in a container on a Linux industrial PC (IPC). This simplifies build times and is done completely in CI\/CD.","project":"","author":"","notes":""},"work_category":[684],"class_list":["post-40022","our_work","type-our_work","status-publish","has-post-thumbnail","hentry","work_category-test-measurement-automation"],"yoast_head":"<title>Integrating Multi-Instrument Test Stands into a Unified API Framework\u00a0 | DMC, Inc.<\/title>\n<meta name=\"description\" content=\"Learn how DMC, Inc.&#039;s unified API solution simplified sequencer interactions during a test while still allowing complete measurement control.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Integrating Multi-Instrument Test Stands into a Unified API Framework\u00a0\" \/>\n<meta property=\"og:description\" content=\"Learn how DMC, Inc.&#039;s unified API solution simplified sequencer interactions during a test while still allowing complete measurement control.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/\" \/>\n<meta property=\"og:site_name\" content=\"DMC, Inc.\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/pages\/DMC-Inc\/107982009242929\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/11\/24164604\/Measurment-Command-Universe.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1400\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/\",\"url\":\"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/\",\"name\":\"Integrating Multi-Instrument Test Stands into a Unified API Framework\u00a0 | DMC, Inc.\",\"isPartOf\":{\"@id\":\"https:\/\/www.dmcinfo.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/11\/24164604\/Measurment-Command-Universe.jpg\",\"datePublished\":\"2025-12-16T12:00:00+00:00\",\"description\":\"Learn how DMC, Inc.'s unified API solution simplified sequencer interactions during a test while still allowing complete measurement control.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/#primaryimage\",\"url\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/11\/24164604\/Measurment-Command-Universe.jpg\",\"contentUrl\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/11\/24164604\/Measurment-Command-Universe.jpg\",\"width\":1400,\"height\":500,\"caption\":\"Measure Command devices with a space background\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Work\",\"item\":\"https:\/\/www.dmcinfo.com\/our-work\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Integrating Multi-Instrument Test Stands into a Unified API Framework\u00a0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dmcinfo.com\/#website\",\"url\":\"https:\/\/www.dmcinfo.com\/\",\"name\":\"DMC, Inc.\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.dmcinfo.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dmcinfo.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.dmcinfo.com\/#organization\",\"name\":\"DMC, Inc.\",\"url\":\"https:\/\/www.dmcinfo.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dmcinfo.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27171146\/dmc-logo-1.png\",\"contentUrl\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27171146\/dmc-logo-1.png\",\"width\":418,\"height\":167,\"caption\":\"DMC, Inc.\"},\"image\":{\"@id\":\"https:\/\/www.dmcinfo.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/pages\/DMC-Inc\/107982009242929\",\"https:\/\/www.instagram.com\/dmcengineering\",\"https:\/\/www.youtube.com\/DMCEngineering\",\"https:\/\/www.linkedin.com\/company\/dmc-engineering\"]}]}<\/script>","yoast_head_json":{"title":"Integrating Multi-Instrument Test Stands into a Unified API Framework\u00a0 | DMC, Inc.","description":"Learn how DMC, Inc.'s unified API solution simplified sequencer interactions during a test while still allowing complete measurement control.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/","og_locale":"en_US","og_type":"article","og_title":"Integrating Multi-Instrument Test Stands into a Unified API Framework\u00a0","og_description":"Learn how DMC, Inc.'s unified API solution simplified sequencer interactions during a test while still allowing complete measurement control.","og_url":"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/","og_site_name":"DMC, Inc.","article_publisher":"https:\/\/www.facebook.com\/pages\/DMC-Inc\/107982009242929","og_image":[{"width":1400,"height":500,"url":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/11\/24164604\/Measurment-Command-Universe.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/","url":"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/","name":"Integrating Multi-Instrument Test Stands into a Unified API Framework\u00a0 | DMC, Inc.","isPartOf":{"@id":"https:\/\/www.dmcinfo.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/#primaryimage"},"image":{"@id":"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/11\/24164604\/Measurment-Command-Universe.jpg","datePublished":"2025-12-16T12:00:00+00:00","description":"Learn how DMC, Inc.'s unified API solution simplified sequencer interactions during a test while still allowing complete measurement control.","breadcrumb":{"@id":"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/#primaryimage","url":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/11\/24164604\/Measurment-Command-Universe.jpg","contentUrl":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/11\/24164604\/Measurment-Command-Universe.jpg","width":1400,"height":500,"caption":"Measure Command devices with a space background"},{"@type":"BreadcrumbList","@id":"https:\/\/www.dmcinfo.com\/our-work\/integrating-multi-instrument-test-stands-into-a-unified-api-framework\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Work","item":"https:\/\/www.dmcinfo.com\/our-work\/"},{"@type":"ListItem","position":2,"name":"Integrating Multi-Instrument Test Stands into a Unified API Framework\u00a0"}]},{"@type":"WebSite","@id":"https:\/\/www.dmcinfo.com\/#website","url":"https:\/\/www.dmcinfo.com\/","name":"DMC, Inc.","description":"","publisher":{"@id":"https:\/\/www.dmcinfo.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dmcinfo.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.dmcinfo.com\/#organization","name":"DMC, Inc.","url":"https:\/\/www.dmcinfo.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dmcinfo.com\/#\/schema\/logo\/image\/","url":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27171146\/dmc-logo-1.png","contentUrl":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27171146\/dmc-logo-1.png","width":418,"height":167,"caption":"DMC, Inc."},"image":{"@id":"https:\/\/www.dmcinfo.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/pages\/DMC-Inc\/107982009242929","https:\/\/www.instagram.com\/dmcengineering","https:\/\/www.youtube.com\/DMCEngineering","https:\/\/www.linkedin.com\/company\/dmc-engineering"]}]}},"_links":{"self":[{"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/our_work\/40022","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/our_work"}],"about":[{"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/types\/our_work"}],"author":[{"embeddable":true,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/users\/46"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/media\/40028"}],"wp:attachment":[{"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/media?parent=40022"}],"wp:term":[{"taxonomy":"work_category","embeddable":true,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/work_category?post=40022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}