{"id":9642,"date":"2025-09-09T08:03:46","date_gmt":"2025-09-09T06:03:46","guid":{"rendered":"https:\/\/medtech-ingenieur.de\/?p=9642"},"modified":"2025-09-19T16:20:32","modified_gmt":"2025-09-19T14:20:32","slug":"embedded-software-timeouts","status":"publish","type":"post","link":"https:\/\/medtech-ingenieur.de\/en\/embedded-software-timeouts\/","title":{"rendered":"Embedded Software: Everything has an end \u2013 Timeouts"},"content":{"rendered":"<p data-pm-slice=\"0 0 []\">In previous blog posts, I introduced two essential components of a simple and universally applicable software architecture: events with dispatchers, listeners, and data pools. These already make it easy to implement many simple use cases.<\/p>\n<p>But it&#039;s rarely that simple. When communicating with remote systems (e.g., a second MCU via UART), you have to react to timeouts for safety reasons. This means you have to set a timer each time and react accordingly in the timer callback function (which is called when the timer expires). Oh, and if the desired action was successful, you mustn&#039;t forget to cancel the timer as well.<\/p>\n<p>That means a lot of code, plus the necessary error handling and unit tests. And let&#039;s be honest: which software developer is really up for that? I&#039;m way too lazy for it, frankly! So, what would a minimally labor-intensive solution look like?<\/p>\n<h2>Planned delay<\/h2>\n<p>The solution is &quot;Delayed Events&quot;. The necessary ingredients are:<\/p>\n<ol>\n<li>A delayed event that contains the event to be scheduled at a later time as a payload, along with the timeout time.<\/li>\n<li>A delayed event scheduler: It receives all delayed events and adds them to its internal queue in order of expiration time. A thread simply waits until the timeout of the next delayed event expires.<\/li>\n<li>The delayed event scheduler passes the payload event to the &quot;normal&quot; scheduler after the timeout period has expired.<\/li>\n<li>The delayed event scheduler gets a \u201ccancel\u201d function that removes corresponding timeout events from the queue.<\/li>\n<\/ol>\n<p><span><img decoding=\"async\" alt=\"\" data-id=\"9643\" width=\"900\" data-init-width=\"950\" height=\"1026\" data-init-height=\"1083\" title=\"delayed_events\" loading=\"lazy\" src=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2024\/12\/delayed_events.png\" data-width=\"900\" data-height=\"1026\" style=\"aspect-ratio: auto 950 \/ 1083;\"\/><\/span><\/p>\n<p>We now have all the important components needed to model even complex, time-dependent processes.<\/p>\n<p>Now some of you might be asking: \u201cHow on earth do you model it?\u201d Well, that\u2019s the topic of the next blog post, which deals with the modeling and generation of state machines.<\/p>\n<h2>outlook<\/h2>\n<p>But here&#039;s a (highly simplified) state machine for controlling a defibrillator MCU via a state machine running in the host MCU. The nice thing about this method is that the timeout handling is visualized along with the &quot;good path.&quot;<\/p>\n<p>The pattern is always the same: Along with the entry action, an event with a corresponding delay is triggered, and the entry action cancels it. It doesn&#039;t matter whether the state transition occurs due to the delayed event or another event. In this example, all timeout events lead from the root state to the state `DefiTimeoutOccured`. Of course, individual timeouts could be handled separately if needed.<\/p>\n<p><span><img decoding=\"async\" alt=\"\" data-id=\"9644\" width=\"900\" data-init-width=\"1101\" height=\"634\" data-init-height=\"775\" title=\"delayed_events_defi_stm\" loading=\"lazy\" src=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2024\/12\/delayed_events_defi_stm.png\" data-width=\"900\" data-height=\"634\" style=\"aspect-ratio: auto 1101 \/ 775;\"\/><\/span><\/p>\n<p>Do you need support with designing a software architecture or developing embedded software? Then please contact us. Our experienced MEDtech engineers will be happy to help you develop your medical device or clarify any outstanding questions.<\/p>","protected":false},"excerpt":{"rendered":"<p>In vorangegangenen Blogbeitr\u00e4gen habe ich zwei wesentliche Komponenten einer einfachen und universell einsetzbaren Software-Architektur vorgestellt: Events mit Dispatcher, Listeners und Datapool. Damit lassen sich bereits sehr viele einfache Use-Cases einfach umsetzen. Aber einfach ist es ja nur in den seltensten F\u00e4llen. Bei der Kommunikation mit Remote-Systemen (z.B. mit einer zweiten MCU, mit der via UART [&hellip;]<\/p>\n","protected":false},"author":31,"featured_media":11964,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","tve_updated_post":"<div class=\"thrv_wrapper thrv_text_element\"><p data-pm-slice=\"0 0 []\">In vorangegangenen Blogbeitr\u00e4gen habe ich zwei wesentliche Komponenten einer einfachen und universell einsetzbaren Software-Architektur vorgestellt: Events mit Dispatcher, Listeners und Datapool. Damit lassen sich bereits sehr viele einfache Use-Cases einfach umsetzen.<\/p><p>Aber einfach ist es ja nur in den seltensten F\u00e4llen. Bei der Kommunikation mit Remote-Systemen (z.B. mit einer zweiten MCU, mit der via UART kommuniziert wird) muss zur Sicherheit immer wieder auf Timeouts reagiert werden. Das hei\u00dft, man muss jedes Mal einen Timer \u201eaufziehen\" und in der Timer-Callback-Funktion (die aufgerufen wird, wenn der Timer abl\u00e4uft) entsprechend reagieren. Ach ja, wenn die gew\u00fcnschte Aktion erfolgreich war, darf man nicht vergessen, den Timer auch noch zu canceln.<\/p><p>Das bedeutet ziemlich viel Code mit der obendrein n\u00f6tigen Fehlerbehandlung nebst erforderlichen Unittests. Und sind wir mal ehrlich: Welcher Softwareentwickler hat da wirklich Bock d'rauf? Ich bin daf\u00fcr ehrlich gesagt viel zu faul! Nur: Wie k\u00f6nnte eine minimal arbeitsaufw\u00e4ndige L\u00f6sung aussehen?<\/p><h2 class=\"\">Geplante Versp\u00e4tung<\/h2><p>Das L\u00f6sungswort lautet \u201eDelayed Events\". Die daf\u00fcr n\u00f6tigen Zutaten sind:<\/p><ol class=\"\"><li>Ein Delayed Event, das als Payload das Event mitbekommt, das zu einem sp\u00e4teren Zeitpunkt gescheduled werden soll, nebst der Timeout-Zeit.<\/li><li>Ein Delayed-Event-Scheduler: Er bekommt alle Delayed-Events und f\u00fcgt sie in der Reihenfolge der Ablaufzeit in seine interne Queue. Ein Thread wartet lediglich so lange, bis das Timeout des n\u00e4chsten Delayed-Event abl\u00e4uft.<\/li><li>Der Deleyed-Event-Scheduler gibt das Payload-Event nach Ablauf der Timeout-Zeit an den \u201enormalen\" Scheduler weiter.<\/li><li>Der Delayed-Event-Scheduler bekommt eine \u201ecancel\u201c-Funktion, die entsprechende Timeout-Events aus der Queue entfernt.<\/li><\/ol><\/div><div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-1970ba06bf9\"><span class=\"tve_image_frame\"><img decoding=\"async\" class=\"tve_image wp-image-9643\" alt=\"\" data-id=\"9643\" width=\"900\" data-init-width=\"950\" height=\"1026\" data-init-height=\"1083\" title=\"delayed_events\" loading=\"lazy\" src=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2024\/12\/delayed_events.png\" data-width=\"900\" data-height=\"1026\" style=\"aspect-ratio: auto 950 \/ 1083;\"><\/span><\/div><div class=\"thrv_wrapper thrv_text_element\"><p>Nun haben wir alle wichtigen Komponenten beisammen, um selbst komplexe, zeitabh\u00e4ngige Abl\u00e4ufe zu modellieren.<\/p><p>Jetzt fragen sich wohlm\u00f6glich einige: \u201eWie bittesch\u00f6n, modellieren?\u201c Nun, um dieses Thema geht es im Folge-Blogbeitrag, wo es um die Modellierung und Generierung von Statemachines geht.<\/p><h2 class=\"\">Ausblick<\/h2><p>Aber hier ist schon mal (in stark vereinfachter Form) eine Statemachine zur Steuerung einer Defi-MCU \u00fcber eine Statemachine, die in der Host-MCU l\u00e4uft. Das Sch\u00f6ne an dieser Methode ist, dass die Timeout-Behandlung zusammen mit dem \u201egood path\u201c visualisiert ist.<\/p><p>Das Pattern ist dabei immer dasselbe: Zusammen mit der Entry-Action wird ein Event mit entsprechendem Delay \u201eaufgezogen\" und in der Entry-Action wird es gecancelt. Dabei ist es egal, ob der State\u00fcbergang aufgrund des Delayed-Events erfolgt oder durch ein anderes Event. In diesem Beispiel f\u00fchren alle Timeout-Events vom Root-State zum State DefiTimeoutOccured. Bei Bedarf k\u00f6nnte selbstverst\u00e4ndlich auf die einzelnen Timeouts individuell reagiert werden.<\/p><\/div><div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-1970bad8c94\"><span class=\"tve_image_frame\"><img decoding=\"async\" class=\"tve_image wp-image-9644\" alt=\"\" data-id=\"9644\" width=\"900\" data-init-width=\"1101\" height=\"634\" data-init-height=\"775\" title=\"delayed_events_defi_stm\" loading=\"lazy\" src=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2024\/12\/delayed_events_defi_stm.png\" data-width=\"900\" data-height=\"634\" style=\"aspect-ratio: auto 1101 \/ 775;\"><\/span><\/div><div class=\"thrv_wrapper thrv_text_element\">\t<p>Brauchen Sie Unterst\u00fctzung beim Design einer Software-Architektur oder bei der Entwicklung von Embedded Software? Dann wenden Sie sich gerne an uns. Unsere erfahrenen MEDtech Ingenieurinnen und Ingenieure helfen ihnen gerne dabei ihr Medizinprodukt zu entwickeln oder offene Fragen zu kl\u00e4ren.<\/p><\/div><div class=\"thrv_wrapper thrv-button thrv-button-v2 tcb-local-vars-root\" data-css=\"tve-u-1970b96ab29\">\n\t<div class=\"thrive-colors-palette-config\" style=\"display: none !important\">__CONFIG_colors_palette__{\"active_palette\":0,\"config\":{\"colors\":{\"62516\":{\"name\":\"Main Accent\",\"parent\":-1}},\"gradients\":[]},\"palettes\":[{\"name\":\"Default Palette\",\"value\":{\"colors\":{\"62516\":{\"val\":\"var(--tcb-skin-color-0)\"}},\"gradients\":[]}}]}__CONFIG_colors_palette__<\/div>\n\t<a href=\"https:\/\/medtech-ingenieur.de\/kontakt\/\" class=\"tcb-button-link tcb-plain-text\" target=\"_blank\" rel=\"nofollow\">\n\t\t<span class=\"tcb-button-texts\"><span class=\"tcb-button-text thrv-inline-text\"><strong>Kontaktanfrage<\/strong><\/span><\/span>\n\t<\/a>\n<\/div>","tve_custom_css":"@media (min-width: 300px){.tcb-post-list[data-css=\"tve-u-18d31773283\"] .post-wrapper.thrv_wrapper { width: calc(33.3333% - 13.3333px); }.tcb-post-list[data-css=\"tve-u-18d31773283\"] .post-wrapper.thrv_wrapper:nth-child(n+4) { margin-top: 20px !important; }.tcb-post-list[data-css=\"tve-u-18d31773283\"] .post-wrapper.thrv_wrapper:not(:nth-child(n+4)) { margin-top: 0px !important; }.tcb-post-list[data-css=\"tve-u-18d31773283\"] .post-wrapper.thrv_wrapper:not(:nth-child(3n)) { margin-right: 20px !important; }.tcb-post-list[data-css=\"tve-u-18d31773283\"] .post-wrapper.thrv_wrapper:nth-child(3n) { margin-right: 0px !important; }[data-css=\"tve-u-1970b96ab29\"] .tcb-button-link { letter-spacing: 2px; background-image: linear-gradient(var(--tcb-local-color-62516,rgb(19,114,211)),var(--tcb-local-color-62516,rgb(19,114,211))); --tve-applied-background-image: linear-gradient(var$(--tcb-local-color-62516,rgb(19,114,211)),var$(--tcb-local-color-62516,rgb(19,114,211))); background-size: auto; background-attachment: scroll; border-radius: 5px; padding: 18px; background-position: 50% 50%; background-repeat: no-repeat; background-color: transparent !important; }[data-css=\"tve-u-1970b96ab29\"] .tcb-button-link span { color: rgb(255, 255, 255); --tcb-applied-color: #fff; }[data-css=\"tve-u-1970b96ab29\"] { --tcb-local-color-62516: var(--tcb-skin-color-0) !important; }[data-css=\"tve-u-1970ba06bf9\"] { width: 950px; }[data-css=\"tve-u-1970bad8c94\"] { width: 1101px; }}@media (max-width: 767px){.tcb-post-list[data-css=\"tve-u-18d31773283\"] .post-wrapper.thrv_wrapper { width: calc(100% + 0px); }.tcb-post-list[data-css=\"tve-u-18d31773283\"] .post-wrapper.thrv_wrapper:nth-child(n+2) { margin-top: 20px !important; }.tcb-post-list[data-css=\"tve-u-18d31773283\"] .post-wrapper.thrv_wrapper:not(:nth-child(n+2)) { margin-top: 0px !important; }.tcb-post-list[data-css=\"tve-u-18d31773283\"] .post-wrapper.thrv_wrapper:not(:nth-child(n)) { margin-right: 20px !important; }.tcb-post-list[data-css=\"tve-u-18d31773283\"] .post-wrapper.thrv_wrapper:nth-child(n) { margin-right: 0px !important; }}","tve_user_custom_css":"","tve_globals":{"e":"1","font_cls":[]},"tcb2_ready":1,"tcb_editor_enabled":1,"tve_landing_page":"","_tve_header":"","_tve_footer":""},"categories":[2,6],"tags":[302,291,292],"class_list":["post-9642","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allgemein","category-software","tag-embedded-entwicklung","tag-embedded-software","tag-software-architektur","post-wrapper","thrv_wrapper"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Embedded Software: Alles hat ein Ende - Timeouts - MEDtech Ingenieur GmbH<\/title>\n<meta name=\"description\" content=\"Wir zeigen dir wie man mit Timeouts und Delayed Events in Embedded-Software elegante und wartbare L\u00f6sungen f\u00fcr zeitabh\u00e4ngige Abl\u00e4ufe schafft\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/medtech-ingenieur.de\/en\/embedded-software-timeouts\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Embedded Software: Alles hat ein Ende - Timeouts - MEDtech Ingenieur GmbH\" \/>\n<meta property=\"og:description\" content=\"Wir zeigen dir wie man mit Timeouts und Delayed Events in Embedded-Software elegante und wartbare L\u00f6sungen f\u00fcr zeitabh\u00e4ngige Abl\u00e4ufe schafft\" \/>\n<meta property=\"og:url\" content=\"https:\/\/medtech-ingenieur.de\/en\/embedded-software-timeouts\/\" \/>\n<meta property=\"og:site_name\" content=\"MEDtech Ingenieur GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/medtechIngenieur\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-09T06:03:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-19T14:20:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2025\/09\/Blog-Header-Image-2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"J\u00fcrgen Welzenbach\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@MedtechIng\" \/>\n<meta name=\"twitter:site\" content=\"@MedtechIng\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"J\u00fcrgen Welzenbach\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/embedded-software-timeouts\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/embedded-software-timeouts\\\/\"},\"author\":{\"name\":\"J\u00fcrgen Welzenbach\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#\\\/schema\\\/person\\\/dd3cdc59cbb669fb0280a19479a5b1ab\"},\"headline\":\"Embedded Software: Alles hat ein Ende &#8211; Timeouts\",\"datePublished\":\"2025-09-09T06:03:46+00:00\",\"dateModified\":\"2025-09-19T14:20:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/embedded-software-timeouts\\\/\"},\"wordCount\":459,\"publisher\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/embedded-software-timeouts\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/Blog-Header-Image-2.png\",\"keywords\":[\"Embedded-Entwicklung\",\"Embedded-Software\",\"Software Architektur\"],\"articleSection\":[\"Allgemein\",\"Software\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/embedded-software-timeouts\\\/\",\"url\":\"https:\\\/\\\/medtech-ingenieur.de\\\/embedded-software-timeouts\\\/\",\"name\":\"Embedded Software: Alles hat ein Ende - Timeouts - MEDtech Ingenieur GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/embedded-software-timeouts\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/embedded-software-timeouts\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/Blog-Header-Image-2.png\",\"datePublished\":\"2025-09-09T06:03:46+00:00\",\"dateModified\":\"2025-09-19T14:20:32+00:00\",\"description\":\"Wir zeigen dir wie man mit Timeouts und Delayed Events in Embedded-Software elegante und wartbare L\u00f6sungen f\u00fcr zeitabh\u00e4ngige Abl\u00e4ufe schafft\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/embedded-software-timeouts\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/medtech-ingenieur.de\\\/embedded-software-timeouts\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/embedded-software-timeouts\\\/#primaryimage\",\"url\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/Blog-Header-Image-2.png\",\"contentUrl\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/Blog-Header-Image-2.png\",\"width\":1600,\"height\":400},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/embedded-software-timeouts\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/medtech-ingenieur.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Embedded Software: Alles hat ein Ende &#8211; Timeouts\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#website\",\"url\":\"https:\\\/\\\/medtech-ingenieur.de\\\/\",\"name\":\"MEDtech Ingenieur GmbH\",\"description\":\"Ingenieursdienstleister f\u00fcr Medizintechnik\",\"publisher\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#organization\"},\"alternateName\":\"MEDtech\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/medtech-ingenieur.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#organization\",\"name\":\"MEDtech Ingenieur\",\"alternateName\":\"MEDtech\",\"url\":\"https:\\\/\\\/medtech-ingenieur.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/logo-700x700-1.png\",\"contentUrl\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/logo-700x700-1.png\",\"width\":700,\"height\":700,\"caption\":\"MEDtech Ingenieur\"},\"image\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/medtechIngenieur\",\"https:\\\/\\\/x.com\\\/MedtechIng\",\"https:\\\/\\\/www.instagram.com\\\/medtech.ingenieure\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/37871229\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#\\\/schema\\\/person\\\/dd3cdc59cbb669fb0280a19479a5b1ab\",\"name\":\"J\u00fcrgen Welzenbach\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/cropped-Med_Mit-013-scaled-1-96x96.jpg\",\"url\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/cropped-Med_Mit-013-scaled-1-96x96.jpg\",\"contentUrl\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/cropped-Med_Mit-013-scaled-1-96x96.jpg\",\"caption\":\"J\u00fcrgen Welzenbach\"},\"description\":\"J\u00fcrgen hat nach seinem Elektrotechnikstudium in Erlangen seine Diplomarbeit in Kooperation mit einem Hersteller von ophthalmologischen Ger\u00e4ten und der Universit\u00e4tsaugenklinik durchgef\u00fchrt. In zwei Erlanger Unternehmen fand er zur Embedded Software und hat vor allem HMIs f\u00fcr Baumaschinen und Laboranalyseger\u00e4te entwickelt.\",\"url\":\"https:\\\/\\\/medtech-ingenieur.de\\\/en\\\/author\\\/jwelzenbach\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Embedded Software: Everything has an end - Timeouts - MEDtech Ingenieur GmbH","description":"We&#039;ll show you how to create elegant and maintainable solutions for time-dependent processes using timeouts and delayed events in embedded software.","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:\/\/medtech-ingenieur.de\/en\/embedded-software-timeouts\/","og_locale":"en_US","og_type":"article","og_title":"Embedded Software: Alles hat ein Ende - Timeouts - MEDtech Ingenieur GmbH","og_description":"Wir zeigen dir wie man mit Timeouts und Delayed Events in Embedded-Software elegante und wartbare L\u00f6sungen f\u00fcr zeitabh\u00e4ngige Abl\u00e4ufe schafft","og_url":"https:\/\/medtech-ingenieur.de\/en\/embedded-software-timeouts\/","og_site_name":"MEDtech Ingenieur GmbH","article_publisher":"https:\/\/www.facebook.com\/medtechIngenieur","article_published_time":"2025-09-09T06:03:46+00:00","article_modified_time":"2025-09-19T14:20:32+00:00","og_image":[{"width":1600,"height":400,"url":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2025\/09\/Blog-Header-Image-2.png","type":"image\/png"}],"author":"J\u00fcrgen Welzenbach","twitter_card":"summary_large_image","twitter_creator":"@MedtechIng","twitter_site":"@MedtechIng","twitter_misc":{"Written by":"J\u00fcrgen Welzenbach","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/medtech-ingenieur.de\/embedded-software-timeouts\/#article","isPartOf":{"@id":"https:\/\/medtech-ingenieur.de\/embedded-software-timeouts\/"},"author":{"name":"J\u00fcrgen Welzenbach","@id":"https:\/\/medtech-ingenieur.de\/#\/schema\/person\/dd3cdc59cbb669fb0280a19479a5b1ab"},"headline":"Embedded Software: Alles hat ein Ende &#8211; Timeouts","datePublished":"2025-09-09T06:03:46+00:00","dateModified":"2025-09-19T14:20:32+00:00","mainEntityOfPage":{"@id":"https:\/\/medtech-ingenieur.de\/embedded-software-timeouts\/"},"wordCount":459,"publisher":{"@id":"https:\/\/medtech-ingenieur.de\/#organization"},"image":{"@id":"https:\/\/medtech-ingenieur.de\/embedded-software-timeouts\/#primaryimage"},"thumbnailUrl":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2025\/09\/Blog-Header-Image-2.png","keywords":["Embedded-Entwicklung","Embedded-Software","Software Architektur"],"articleSection":["Allgemein","Software"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/medtech-ingenieur.de\/embedded-software-timeouts\/","url":"https:\/\/medtech-ingenieur.de\/embedded-software-timeouts\/","name":"Embedded Software: Everything has an end - Timeouts - MEDtech Ingenieur GmbH","isPartOf":{"@id":"https:\/\/medtech-ingenieur.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/medtech-ingenieur.de\/embedded-software-timeouts\/#primaryimage"},"image":{"@id":"https:\/\/medtech-ingenieur.de\/embedded-software-timeouts\/#primaryimage"},"thumbnailUrl":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2025\/09\/Blog-Header-Image-2.png","datePublished":"2025-09-09T06:03:46+00:00","dateModified":"2025-09-19T14:20:32+00:00","description":"We&#039;ll show you how to create elegant and maintainable solutions for time-dependent processes using timeouts and delayed events in embedded software.","breadcrumb":{"@id":"https:\/\/medtech-ingenieur.de\/embedded-software-timeouts\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/medtech-ingenieur.de\/embedded-software-timeouts\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/medtech-ingenieur.de\/embedded-software-timeouts\/#primaryimage","url":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2025\/09\/Blog-Header-Image-2.png","contentUrl":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2025\/09\/Blog-Header-Image-2.png","width":1600,"height":400},{"@type":"BreadcrumbList","@id":"https:\/\/medtech-ingenieur.de\/embedded-software-timeouts\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/medtech-ingenieur.de\/"},{"@type":"ListItem","position":2,"name":"Embedded Software: Alles hat ein Ende &#8211; Timeouts"}]},{"@type":"WebSite","@id":"https:\/\/medtech-ingenieur.de\/#website","url":"https:\/\/medtech-ingenieur.de\/","name":"MEDtech Ingenieur GmbH","description":"Engineering service provider for medical technology","publisher":{"@id":"https:\/\/medtech-ingenieur.de\/#organization"},"alternateName":"MEDtech","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/medtech-ingenieur.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/medtech-ingenieur.de\/#organization","name":"MEDtech Engineer","alternateName":"MEDtech","url":"https:\/\/medtech-ingenieur.de\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/medtech-ingenieur.de\/#\/schema\/logo\/image\/","url":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2024\/01\/logo-700x700-1.png","contentUrl":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2024\/01\/logo-700x700-1.png","width":700,"height":700,"caption":"MEDtech Ingenieur"},"image":{"@id":"https:\/\/medtech-ingenieur.de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/medtechIngenieur","https:\/\/x.com\/MedtechIng","https:\/\/www.instagram.com\/medtech.ingenieure\/","https:\/\/www.linkedin.com\/company\/37871229\/"]},{"@type":"Person","@id":"https:\/\/medtech-ingenieur.de\/#\/schema\/person\/dd3cdc59cbb669fb0280a19479a5b1ab","name":"J\u00fcrgen Welzenbach","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2025\/04\/cropped-Med_Mit-013-scaled-1-96x96.jpg","url":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2025\/04\/cropped-Med_Mit-013-scaled-1-96x96.jpg","contentUrl":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2025\/04\/cropped-Med_Mit-013-scaled-1-96x96.jpg","caption":"J\u00fcrgen Welzenbach"},"description":"After completing his electrical engineering studies in Erlangen, J\u00fcrgen wrote his diploma thesis in cooperation with a manufacturer of ophthalmic devices and the university eye clinic. He then worked for two companies in Erlangen, where he discovered embedded software and primarily developed HMIs for construction machinery and laboratory analysis equipment.","url":"https:\/\/medtech-ingenieur.de\/en\/author\/jwelzenbach\/"}]}},"_links":{"self":[{"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/posts\/9642","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/users\/31"}],"replies":[{"embeddable":true,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/comments?post=9642"}],"version-history":[{"count":12,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/posts\/9642\/revisions"}],"predecessor-version":[{"id":9928,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/posts\/9642\/revisions\/9928"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/media\/11964"}],"wp:attachment":[{"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/media?parent=9642"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/categories?post=9642"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/tags?post=9642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}