<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Software | Khaled HAMIDI</title><link>https://khaledhamidi.com/en/category/software/</link><atom:link href="https://khaledhamidi.com/en/category/software/index.xml" rel="self" type="application/rss+xml"/><description>Software</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Thu, 01 Jan 2026 00:00:00 +0000</lastBuildDate><image><url>https://khaledhamidi.com/media/sharing.jpg</url><title>Software</title><link>https://khaledhamidi.com/en/category/software/</link></image><item><title>MATLAB Training for Engineers: Advanced Applied Approach</title><link>https://khaledhamidi.com/en/writing/matlab/</link><pubDate>Thu, 01 Jan 2026 00:00:00 +0000</pubDate><guid>https://khaledhamidi.com/en/writing/matlab/</guid><description>&lt;p>A specialized training program in MATLAB and Simulink launched with an engineering-focused applied methodology based on solving real-world problems, building models, and implementing simulations.&lt;/p>
&lt;p>The program emphasizes practical applications and direct engineering use cases, integrating AI tools to accelerate programming and analysis processes. Designed for engineers seeking to master computational tools and apply them directly in engineering projects.&lt;/p>
&lt;h2 id="training-modules">Training Modules&lt;/h2>
&lt;p>&lt;strong>MATLAB Fundamentals:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Computational operations and matrices&lt;/li>
&lt;li>Real-world engineering and mathematical applications&lt;/li>
&lt;li>Data processing and analysis&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Simulink and Modeling:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Building models and studying systems&lt;/li>
&lt;li>Dynamic simulation and analysis&lt;/li>
&lt;li>Mechanical and electrical system applications&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>AI in Programming:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Leveraging AI in code writing&lt;/li>
&lt;li>Solution optimization and accelerated development&lt;/li>
&lt;li>Intelligent data analysis&lt;/li>
&lt;/ul>
&lt;h2 id="course-introduction">Course Introduction&lt;/h2>
&lt;iframe width="100%" style="aspect-ratio: 16/9; max-width: 800px;" src="https://www.youtube.com/embed/videoseries?si=8eA4UTnMNNRuMBx2&amp;amp;list=PLapVad9ynIrP8lsshvaVNHaeArrVNwjZs" title="MATLAB Training Course" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen>&lt;/iframe>
&lt;h2 id="simulink-cinematic-introduction">Simulink Cinematic Introduction&lt;/h2>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/qzhbylIzBDA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div>
&lt;h2 id="certified-credential">Certified Credential&lt;/h2>
&lt;p>A free certified credential (basic or advanced level) is available after completing the training and passing the exam. To apply for the exam, contact through available channels.&lt;/p>
&lt;h2 id="join-now">Join Now&lt;/h2>
&lt;p>To join:
&lt;/p></description></item><item><title>Workshop on Research Paper Writing and Scientific Citation</title><link>https://khaledhamidi.com/en/writing/writing/</link><pubDate>Sat, 26 Apr 2025 00:00:00 +0000</pubDate><guid>https://khaledhamidi.com/en/writing/writing/</guid><description>&lt;p>The Student Office at the International University for Science and Renaissance, in collaboration with the Tamayuz Platform, is pleased to announce a special training workshop titled: &lt;strong>&amp;ldquo;Research Paper Writing and Scientific Citation.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;p>This practical training is designed for university students and graduates, combining scientific skills with systematic preparation to enhance your research capabilities.&lt;/p>
&lt;p>&lt;strong>Event Details:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Date:&lt;/strong> Saturday &amp;amp; Sunday, May 3-4, 2025&lt;/li>
&lt;li>&lt;strong>Time:&lt;/strong> 8:30 PM (Syria Time)&lt;/li>
&lt;li>&lt;strong>Platform:&lt;/strong> Microsoft Teams&lt;/li>
&lt;/ul>
&lt;p>An electronic certificate of attendance will be awarded to all participants. We invite you to seize this unique opportunity to strengthen your research skills and join a select group of individuals aspiring to academic excellence.&lt;/p></description></item><item><title>AI Skills for a Promising Future</title><link>https://khaledhamidi.com/en/writing/ai/</link><pubDate>Fri, 25 Apr 2025 00:00:00 +0000</pubDate><guid>https://khaledhamidi.com/en/writing/ai/</guid><description>&lt;p>Building on the incredible success of our first series, we are proud to announce the launch of the second installment of our 2025 Artificial Intelligence training program: &lt;strong>&amp;ldquo;Excel with Intelligence.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;p>This series is designed to empower participants with the essential tools and skills of AI, focusing on practical, hands-on applications in a variety of fields including writing, translation, programming, education, and scientific research.&lt;/p>
&lt;p>&lt;strong>Training Details:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Platform:&lt;/strong> Microsoft Teams&lt;/li>
&lt;li>&lt;strong>Certification:&lt;/strong> An electronic certificate of attendance will be awarded to participants who complete at least 70% of the training hours.&lt;/li>
&lt;li>&lt;strong>Cost:&lt;/strong> The series is free and open to everyone.&lt;/li>
&lt;/ul>
&lt;p>Don&amp;rsquo;t miss this opportunity to sharpen your skills and prepare for a future driven by intelligence! Follow our accounts for session schedules and registration information.&lt;/p></description></item><item><title>Geometric Drow and Collision Detection</title><link>https://khaledhamidi.com/en/projects/geosketch/</link><pubDate>Tue, 07 Feb 2023 00:00:00 +0000</pubDate><guid>https://khaledhamidi.com/en/projects/geosketch/</guid><description>&lt;h1 id="geosketch---geometric-drow-and-collision-detection">GeoSketch - Geometric Drow and Collision Detection&lt;/h1>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://github.com/khaledHamidi/GeoSketch/blob/master/images/Screenshot.jpg" alt="GeoSketch Screenshot" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>GeoSketch is a C# program that combines the joy of sketching with the power of collision detection for geometric shapes. With GeoSketch, you can unleash your creativity by drawing various geometric shapes and explore their interactions in real-time.&lt;/p>
&lt;h2 id="features">Features&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Sketch and Draw:&lt;/strong> GeoSketch provides a user-friendly drawing board that allows you to sketch and draw different geometric shapes effortlessly. Choose from a wide range of tools to create lines, circles, rectangles, and more.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Collision Detection:&lt;/strong> One of the core features of GeoSketch is its advanced collision detection engine. It automatically detects and highlights any intersections or overlaps between the geometric shapes you draw. This functionality lets you experiment and observe how shapes interact with each other.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="download">Download&lt;/h2>
&lt;p>You can download the latest version of GeoSketch from the
section of this repository. Choose the appropriate version for your operating system and follow the installation instructions provided.&lt;/p>
&lt;p>also you can download it from sourceforge:&lt;/p>
&lt;p>
&lt;/p>
&lt;h2 id="getting-stdrowed">Getting StDrowed&lt;/h2>
&lt;p>To get stDrowed with GeoSketch, follow these steps:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Download and install the program from the link provided in the Download section.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Launch GeoSketch on your computer.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Begin by selecting a drawing tool from the toolbar. For example, you can choose the &amp;ldquo;Point&amp;rdquo; tool to draw points, or the &amp;ldquo;Circle&amp;rdquo; tool to create circles.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Use your mouse or input device to sketch and draw on the canvas. Let your imagination run wild and experiment with different shapes and arrangements.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>As you draw, GeoSketch will automatically detect and highlight any intersections or overlaps between the shapes. This visual feedback helps you understand the collision behavior of the geometric objects.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Feel free to save your creations, export them as images, or stDrow a new sketch whenever you like.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="contributing">Contributing&lt;/h2>
&lt;p>If you want to contribute to GeoSketch, you&amp;rsquo;re welcome to submit bug reports, feature requests, or pull requests to the
. Please check the contribution guidelines for more information on how to get involved.&lt;/p>
&lt;h2 id="license">License&lt;/h2>
&lt;p>GeoSketch is released under the
, which means you&amp;rsquo;re free to use, modify, and distribute the program as per the terms of the license.&lt;/p>
&lt;h2 id="acknowledgements">Acknowledgements&lt;/h2>
&lt;p>We would like to express our gratitude to the open-source community for their valuable contributions and the libraries and frameworks that made GeoSketch possible.&lt;/p>
&lt;p>
&lt;/p></description></item><item><title>Qlink: Serial Command API for Arduino</title><link>https://khaledhamidi.com/en/featured/qlink/</link><pubDate>Tue, 10 Jan 2023 00:00:00 +0000</pubDate><guid>https://khaledhamidi.com/en/featured/qlink/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>&lt;strong>Qlink&lt;/strong> is a powerful yet lightweight serial command API designed for Arduino, Raspberry Pi, PC, and other embedded systems. It streamlines communication between devices by providing a simple framework for registering and handling commands sent over a serial connection. With support for multiple parameter types (INT, FLOAT, STRING, LONG), Qlink is the ideal solution for controlling your Arduino projects from external applications written in Python, C#, or from a simple serial monitor.&lt;/p>
&lt;h2 id="key-features">Key Features&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Dynamic Command System&lt;/strong>: Easily define and register custom commands with a clean macro-based syntax (&lt;code>DEF&lt;/code> and &lt;code>REG&lt;/code>).&lt;/li>
&lt;li>&lt;strong>Multi-Type Parameter Support&lt;/strong>: Natively parse integer, float, string, and long arguments from incoming serial commands.&lt;/li>
&lt;li>&lt;strong>Simplified Responses&lt;/strong>: Send formatted strings back to the host device with a single &lt;code>link.response()&lt;/code> call.&lt;/li>
&lt;li>&lt;strong>Lightweight &amp;amp; Efficient&lt;/strong>: Designed for microcontrollers, Qlink has a minimal footprint and processes commands in real-time.&lt;/li>
&lt;li>&lt;strong>Cross-Platform Control&lt;/strong>: Enables seamless control of Arduino from a PC (Windows/Linux), Mac, or Raspberry Pi.&lt;/li>
&lt;/ul>
&lt;h2 id="common-use-cases">Common Use Cases&lt;/h2>
&lt;ul>
&lt;li>Controlling robots or CNC machines from a desktop application.&lt;/li>
&lt;li>Sending sensor data from Arduino to a Python script for logging or analysis.&lt;/li>
&lt;li>Creating interactive prototypes that respond to commands from a serial terminal.&lt;/li>
&lt;li>Configuring device settings (e.g., LED brightness, motor speed) on the fly without reprogramming.&lt;/li>
&lt;/ul>
&lt;h2 id="code-example-simple-blink-control">Code Example: Simple Blink Control&lt;/h2>
&lt;p>The following example demonstrates how to control the built-in LED on an Arduino board using a &lt;code>DELAY&lt;/code> command sent over serial.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;Qlink.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">int&lt;/span> &lt;span class="n">blinkInterval&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1000&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// Default blink interval
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="n">Qlink&lt;/span> &lt;span class="nf">link&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">Serial&lt;/span>&lt;span class="p">);&lt;/span> &lt;span class="c1">// Initialize Qlink on the hardware serial port
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Define the &amp;#34;DELAY&amp;#34; command, which accepts one integer argument
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="n">DEF&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">DELAY&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">INT&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">blinkInterval&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Convert&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">Args&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="kt">int&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">link&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">response&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Blink interval updated to %d ms&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">blinkInterval&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">void&lt;/span> &lt;span class="nf">setup&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Serial&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">begin&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">9600&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">pinMode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">LED_BUILTIN&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">OUTPUT&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">REG&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">link&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">DELAY&lt;/span>&lt;span class="p">);&lt;/span> &lt;span class="c1">// Register the DELAY command
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">void&lt;/span> &lt;span class="nf">loop&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">link&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">loop&lt;/span>&lt;span class="p">();&lt;/span> &lt;span class="c1">// Continuously listen for incoming commands
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Blink the LED at the current interval
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">digitalWrite&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">LED_BUILTIN&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">HIGH&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">delay&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">blinkInterval&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">digitalWrite&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">LED_BUILTIN&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">LOW&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">delay&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">blinkInterval&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>To use this, you would simply send a command like &lt;code>DELAY 500&lt;/code> from your serial monitor or application, and the LED blink rate would instantly update.&lt;/p>
&lt;p>
&lt;/p></description></item><item><title>Qlink: Serial Command API for Arduino</title><link>https://khaledhamidi.com/en/projects/qlink/</link><pubDate>Tue, 10 Jan 2023 00:00:00 +0000</pubDate><guid>https://khaledhamidi.com/en/projects/qlink/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>&lt;strong>Qlink&lt;/strong> is a powerful yet lightweight serial command API designed for Arduino, Raspberry Pi, PC, and other embedded systems. It streamlines communication between devices by providing a simple framework for registering and handling commands sent over a serial connection. With support for multiple parameter types (INT, FLOAT, STRING, LONG), Qlink is the ideal solution for controlling your Arduino projects from external applications written in Python, C#, or from a simple serial monitor.&lt;/p>
&lt;h2 id="key-features">Key Features&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Dynamic Command System&lt;/strong>: Easily define and register custom commands with a clean macro-based syntax (&lt;code>DEF&lt;/code> and &lt;code>REG&lt;/code>).&lt;/li>
&lt;li>&lt;strong>Multi-Type Parameter Support&lt;/strong>: Natively parse integer, float, string, and long arguments from incoming serial commands.&lt;/li>
&lt;li>&lt;strong>Simplified Responses&lt;/strong>: Send formatted strings back to the host device with a single &lt;code>link.response()&lt;/code> call.&lt;/li>
&lt;li>&lt;strong>Lightweight &amp;amp; Efficient&lt;/strong>: Designed for microcontrollers, Qlink has a minimal footprint and processes commands in real-time.&lt;/li>
&lt;li>&lt;strong>Cross-Platform Control&lt;/strong>: Enables seamless control of Arduino from a PC (Windows/Linux), Mac, or Raspberry Pi.&lt;/li>
&lt;/ul>
&lt;h2 id="common-use-cases">Common Use Cases&lt;/h2>
&lt;ul>
&lt;li>Controlling robots or CNC machines from a desktop application.&lt;/li>
&lt;li>Sending sensor data from Arduino to a Python script for logging or analysis.&lt;/li>
&lt;li>Creating interactive prototypes that respond to commands from a serial terminal.&lt;/li>
&lt;li>Configuring device settings (e.g., LED brightness, motor speed) on the fly without reprogramming.&lt;/li>
&lt;/ul>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>The easiest way to install is directly through the Arduino IDE:&lt;/p>
&lt;ol>
&lt;li>Open the Arduino IDE.&lt;/li>
&lt;li>Go to &lt;strong>Sketch&lt;/strong> &amp;gt; &lt;strong>Include Library&lt;/strong> &amp;gt; &lt;strong>Manage Libraries&amp;hellip;&lt;/strong>.&lt;/li>
&lt;li>Search for &amp;ldquo;&lt;strong>Qlink&lt;/strong>&amp;rdquo;.&lt;/li>
&lt;li>Click the &lt;strong>Install&lt;/strong> button.&lt;/li>
&lt;/ol>
&lt;p>You can also install the library manually by downloading the zip file below.&lt;/p>
&lt;h2 id="code-example-simple-blink-control">Code Example: Simple Blink Control&lt;/h2>
&lt;p>The following example demonstrates how to control the built-in LED on an Arduino board using a &lt;code>DELAY&lt;/code> command sent over serial.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;Qlink.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">int&lt;/span> &lt;span class="n">blinkInterval&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1000&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// Default blink interval
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="n">Qlink&lt;/span> &lt;span class="nf">link&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">Serial&lt;/span>&lt;span class="p">);&lt;/span> &lt;span class="c1">// Initialize Qlink on the hardware serial port
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Define the &amp;#34;DELAY&amp;#34; command, which accepts one integer argument
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="n">DEF&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">DELAY&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">INT&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">blinkInterval&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Convert&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">Args&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="kt">int&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">link&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">response&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Blink interval updated to %d ms&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">blinkInterval&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">void&lt;/span> &lt;span class="nf">setup&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Serial&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">begin&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">9600&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">pinMode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">LED_BUILTIN&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">OUTPUT&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">REG&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">link&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">DELAY&lt;/span>&lt;span class="p">);&lt;/span> &lt;span class="c1">// Register the DELAY command
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">void&lt;/span> &lt;span class="nf">loop&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">link&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">loop&lt;/span>&lt;span class="p">();&lt;/span> &lt;span class="c1">// Continuously listen for incoming commands
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Blink the LED at the current interval
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">digitalWrite&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">LED_BUILTIN&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">HIGH&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">delay&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">blinkInterval&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">digitalWrite&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">LED_BUILTIN&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">LOW&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">delay&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">blinkInterval&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>To use this, you would simply send a command like &lt;code>DELAY 500&lt;/code> from your serial monitor or application, and the LED blink rate would instantly update.&lt;/p>
&lt;p>
&lt;/p></description></item><item><title>QistasLinks library</title><link>https://khaledhamidi.com/en/projects/qistaslinks/</link><pubDate>Sat, 02 Apr 2022 00:00:00 +0000</pubDate><guid>https://khaledhamidi.com/en/projects/qistaslinks/</guid><description>&lt;p style="margin-bottom: 1rem;">
&lt;a href="https://doi.org/10.5281/zenodo.8248290" target="_blank" rel="noopener">
&lt;img src="https://zenodo.org/badge/DOI/10.5281/zenodo.8248290.svg" alt="DOI"/>
&lt;/a>
&lt;/p>
&lt;p>QistasLinks: C# serial port library, Make serial interface(RS232) communication easy and efficient for any project utilizing a serial connection. With its user-friendly methods and robust features, QistasLinks simplifies the process of establishing communication with microcontrollers and facilitates seamless data exchange, By integrating QistasLinks into your application, you can benefit from enhanced performance and extended capabilities, making it the ideal choice for any project relying on serial connections in .NET .&lt;/p>
&lt;h2 id="who-can-benefit-from-using-this-project">Who can benefit from using this project&lt;/h2>
&lt;p>The QistasLinks project is designed for individuals and developers who are working on projects that rely on serial communication with microcontrollers, projects based on Arduino boards,PIC and AVR microcontrollers. also electronic devices that need to send and receive data. It provides a convenient and efficient solution and facilitates data exchange between microcontrollers and computers.
Tags: serial communication, C#, .NET, microcontrollers, Arduino, PIC, AVR,Patterns,commands system,structure&lt;/p>
&lt;h2 id="features">Features&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>Serial Communication: QistasLinks enables easy and efficient read/write operations for serial or RS232 interfaces. It provides a reliable and flexible communication channel between microcontrollers and computers.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Data Transfer Pattern: The library offers a data transfer pattern that simplifies the process of exchanging data between microcontrollers and computers. It provides a structured approach for sending and receiving data packets.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The QistasLinks offers support for a custom command or instruction format, allowing users to communicate with the serial devices in a structured manner. This format enables precise control and configuration of the connected devices based on specific commands issued.
Keywords: serial communication, microcontrollers, communication protocols, UART, I2C, SPI&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="customizable-data-transfer-pattern-support">Customizable Data Transfer Pattern Support&lt;/h3>
&lt;p>The QistasLinks library offers the flexibility for users to define their own data patterns. Instead of being restricted to a specific pattern, such as &lt;code>&amp;lt;data...&amp;gt;&lt;/code>,&lt;code>{data...}&lt;/code> or &lt;code>data...\n&lt;/code> , users have the freedom to create their own custom patterns based on their project specific requirements.&lt;/p>
&lt;h3 id="serialization-and-deserialization-commandinstruction">Serialization and Deserialization Command/Instruction&lt;/h3>
&lt;p>The QistasLinks provides a custom command or instruction format that simplifies communication with serial devices in a structured way. This format allows you to precisely control and configure connected devices by issuing specific commands.&lt;/p>
&lt;p>Let&amp;rsquo;s get an example:
In this format, each command follows a consistent structure: &lt;code>&amp;quot;&amp;lt;operation&amp;gt; &amp;lt;key&amp;gt;:&amp;lt;value&amp;gt;&amp;quot;&lt;/code>.&lt;/p>
&lt;p>To illustrate how QistasLinks works, first you have to make the pattren for that structure : &lt;code>&amp;quot;#opration# #key#:#value#&amp;quot;&lt;/code>. This format can be used as a pattern. and when data recived, its will build a dynamic object where the command elements correspond to object properties.&lt;code>obj.operation&lt;/code> &lt;code>obj.key,&lt;/code> and &lt;code>obj.value&lt;/code> that hold the respective values of the command.&lt;/p>
&lt;p>By utilizing this custom command format, you can easily construct and parse commands for interacting with serial devices using the QistasLinks DLL library. It provides a flexible and intuitive way to control device behavior and configuration.&lt;/p>
&lt;p>For more detailed instructions and specific command examples, please refer to the documentation and examples provided with the library.&lt;/p>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>To get started with QistasLinks, you have two options for installation:&lt;/p>
&lt;h3 id="manual-installation">Manual Installation&lt;/h3>
&lt;ol>
&lt;li>Download the QistasLinks.Dll file from the Downloads folder.&lt;/li>
&lt;li>Add the QistasLinks DLL reference to your C# project.&lt;/li>
&lt;li>Make sure that your project is targeting the appropriate .NET version.&lt;/li>
&lt;li>Build your project to ensure that the QistasLinks library is properly included.&lt;/li>
&lt;/ol>
&lt;h3 id="installation-via-nuget">Installation via NuGet&lt;/h3>
&lt;p>Alternatively, you can use the NuGet package manager to install QistasLinks by following these steps:&lt;/p>
&lt;ol>
&lt;li>Using .NET CLI: Run the command &lt;code>dotnet add package Qistas.QistasLinks --version 1.0.0&lt;/code>.&lt;/li>
&lt;li>Using the Package Manager Console in Visual Studio: Run the command &lt;code>NuGet\Install-Package Qistas.QistasLinks -Version 1.0.0&lt;/code>. Please note that this command is intended to be used within the Package Manager Console and utilizes the NuGet module&amp;rsquo;s version of Install-Package.&lt;/li>
&lt;/ol>
&lt;p>
&lt;br>
also you can download it from sourceforge.&lt;/p>
&lt;p>Make sure to choose the installation method that best suits your needs.&lt;/p>
&lt;h2 id="usage--examples">Usage | Examples&lt;/h2>
&lt;p>Use this space to show useful examples of how a project can be used. Additional screenshots, code examples and demos work well in this space. You may also link to more resources.
For more examples, please refer to the
folder&lt;/p>
&lt;p>
&lt;/p>
&lt;h2 id="open-source-project-files">Open-Source project files&lt;/h2>
&lt;p>you can find it in
&lt;/p>
&lt;h2 id="license">License&lt;/h2>
&lt;p>QistasLinks is open-source software licensed under the
.&lt;/p>
&lt;h2 id="support">Support&lt;/h2>
&lt;p>If you encounter any issues or have any questions, please
on the GitHub repository.&lt;/p>
&lt;h2 id="acknowledgements">Acknowledgements&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>QistasLinks is part of the Qistas project, which aims to provide a collection of libraries and tools for microcontroller communication and integration.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>We would like to express our gratitude to the open-source community for their contributions and support.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="contact">Contact&lt;/h2>
&lt;p>For any further inquiries or information, please contact our team at [eng.Hamidi@yahoo.com]&lt;/p>
&lt;p>Thank you for using QistasLinks!&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Super Intelligence — IoT control panel over the internet</title><link>https://khaledhamidi.com/en/projects/superintelligence/</link><pubDate>Sat, 18 Dec 2021 00:00:00 +0000</pubDate><guid>https://khaledhamidi.com/en/projects/superintelligence/</guid><description>&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="Super Intelligence" srcset="
/en/projects/superintelligence/featured_hu_543bc486cc5eeca7.webp 400w,
/en/projects/superintelligence/featured_hu_3bde11741bcaf88d.webp 760w,
/en/projects/superintelligence/featured_hu_a2e58c9346f2b2b3.webp 1200w"
src="https://khaledhamidi.com/en/projects/superintelligence/featured_hu_543bc486cc5eeca7.webp"
width="760"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Super Intelligence is a small system I built to talk to embedded boards (Arduino, ESP, anything that speaks RS232) from a web page. The idea was simple: every time I tested a new board, I needed a quick way to send commands and watch the replies. Writing a new UI for every project got old fast, so I built one generic system I could reuse.&lt;/p>
&lt;p>The web side is a PHP API that handles accounts and the command queue. A small C# console app runs next to the device, polls the API, and forwards commands over the serial port. Whatever the device sends back goes the same way in reverse.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/w1KoPLkr1NM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div>
&lt;h2 id="whats-in-it">What&amp;rsquo;s in it&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Virtual serial terminal on the web&lt;/strong> — type a command, see the device&amp;rsquo;s reply.&lt;/li>
&lt;li>&lt;strong>Per-user accounts&lt;/strong> so each board only listens to its owner.&lt;/li>
&lt;li>&lt;strong>Live sensor plot&lt;/strong> — incoming numeric values are charted as they arrive.&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="Image 2" srcset="
/en/projects/superintelligence/2_hu_64d86ecde10863c0.webp 400w,
/en/projects/superintelligence/2_hu_f0a20288abcf784d.webp 760w,
/en/projects/superintelligence/2_hu_922b3d2980fee629.webp 1200w"
src="https://khaledhamidi.com/en/projects/superintelligence/2_hu_64d86ecde10863c0.webp"
width="760"
height="428"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="Image 3" srcset="
/en/projects/superintelligence/3_hu_3d745aadd5a62caa.webp 400w,
/en/projects/superintelligence/3_hu_2bb7bb30cb9b7658.webp 760w,
/en/projects/superintelligence/3_hu_6b38128518ffd27.webp 1200w"
src="https://khaledhamidi.com/en/projects/superintelligence/3_hu_3d745aadd5a62caa.webp"
width="598"
height="266"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="stack">Stack&lt;/h2>
&lt;ul>
&lt;li>PHP + MySQL for the web API and account storage.&lt;/li>
&lt;li>C# console app as the local bridge between the API and the serial port.&lt;/li>
&lt;li>Plain RS232 on the device side — works with anything that can send and receive characters.&lt;/li>
&lt;/ul>
&lt;h2 id="links">Links&lt;/h2>
&lt;p>Project page:
Source:
&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Q7Gy3U4y4xc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div></description></item><item><title>A Program for Educational Pen Screens</title><link>https://khaledhamidi.com/en/projects/magical-capture-othmanli/</link><pubDate>Fri, 01 Jan 2021 00:00:00 +0000</pubDate><guid>https://khaledhamidi.com/en/projects/magical-capture-othmanli/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>I designed this program to help teachers of the YÖS curriculum for the El-Osmanli Education Center. The application aims to enhance the teaching of mathematics by leveraging smart pen screens and projectors instead of traditional whiteboards.&lt;/p>
&lt;h2 id="features">Features&lt;/h2>
&lt;p>This application enables teachers to:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Capture Questions&lt;/strong>: Teachers can capture questions directly from the screen, allowing for easy display and sharing.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Blank Page Explanation&lt;/strong>: Captured questions can be transferred to a blank page, providing a clean slate for detailed explanations and solutions.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Memorization Support&lt;/strong>: The application offers the possibility of memorizing and storing explanations, enabling teachers to revisit and review previous lessons or demonstrations.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="how-it-works">How It Works&lt;/h2>
&lt;p>The program utilizes smart pen screens and a projector to create an interactive teaching environment. Instead of a traditional whiteboard, the teacher can display questions or problems on the screen and then transfer them to a blank page for further explanation and solving.&lt;/p>
&lt;p>During the lesson, the teacher can capture the question from the screen and transfer it to a blank page. This blank page serves as a digital canvas, allowing the teacher to provide step-by-step explanations, work through solutions, and illustrate concepts using the smart pen.&lt;/p>
&lt;p>The application also offers the ability to memorize and store these explanations, enabling teachers to revisit and review previous lessons or demonstrations as needed.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/KdlR9muAwTw?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>This program for educational pen screens is a powerful tool designed to enhance the teaching of mathematics and facilitate interactive lessons. By combining the capabilities of smart pen screens, projectors, and the application&amp;rsquo;s features, teachers can create engaging and memorable learning experiences for their students.&lt;/p>
&lt;p>If you have any questions or need further assistance, please don&amp;rsquo;t hesitate to reach out to my support.&lt;/p>
&lt;h2 id="get-application">Get Application&lt;/h2>
&lt;p>the project is free, just
.
Development by
&lt;/p></description></item><item><title>Logic gates simulator</title><link>https://khaledhamidi.com/en/projects/logicgatesimulator/</link><pubDate>Thu, 20 Aug 2020 00:00:00 +0000</pubDate><guid>https://khaledhamidi.com/en/projects/logicgatesimulator/</guid><description>&lt;h1 id="logic-element-explorer">Logic Element Explorer&lt;/h1>
&lt;p>A Windows desktop tool to build and simulate digital logic circuits — gates, flip-flops, decoders, encoders, and multiplexers. I built it during my digital logic course at university, partly as a course assignment and partly because the simulators I was using either felt clunky or made me click through too many menus to test a simple circuit.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="Logic Element Explorer 1" srcset="
/en/projects/logicgatesimulator/image_hu_671b89a7b8793dbb.webp 400w,
/en/projects/logicgatesimulator/image_hu_464555ab9053715f.webp 760w,
/en/projects/logicgatesimulator/image_hu_b1f144ca82028ea6.webp 1200w"
src="https://khaledhamidi.com/en/projects/logicgatesimulator/image_hu_671b89a7b8793dbb.webp"
width="760"
height="445"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="Logic Element Explorer 2" srcset="
/en/projects/logicgatesimulator/image-1_hu_f9a5e51aeafebe67.webp 400w,
/en/projects/logicgatesimulator/image-1_hu_7394f0ab414ca0e5.webp 760w,
/en/projects/logicgatesimulator/image-1_hu_cab56aac38582d60.webp 1200w"
src="https://khaledhamidi.com/en/projects/logicgatesimulator/image-1_hu_f9a5e51aeafebe67.webp"
width="760"
height="445"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="Logic Element Explorer 3" srcset="
/en/projects/logicgatesimulator/image-2_hu_7b6a564988d46448.webp 400w,
/en/projects/logicgatesimulator/image-2_hu_20ea3478848a77e2.webp 760w,
/en/projects/logicgatesimulator/image-2_hu_4b012d19cb982e2e.webp 1200w"
src="https://khaledhamidi.com/en/projects/logicgatesimulator/image-2_hu_7b6a564988d46448.webp"
width="760"
height="445"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="what-you-can-do-with-it">What you can do with it&lt;/h2>
&lt;ul>
&lt;li>Simulate combinational gates: AND, OR, NOT, XOR, NAND, NOR.&lt;/li>
&lt;li>Simulate sequential elements: D, JK, and T flip-flops.&lt;/li>
&lt;li>Build and test decoders, encoders, multiplexers, and demultiplexers.&lt;/li>
&lt;li>Compare two signals side by side to see how an input change propagates.&lt;/li>
&lt;/ul>
&lt;h2 id="how-it-was-built">How it was built&lt;/h2>
&lt;p>C# with XAML for the UI. If you want to run it, clone the repo and open the solution in Visual Studio — there&amp;rsquo;s no installer; this was a coursework project, not a packaged product.&lt;/p>
&lt;p>
&lt;/p></description></item><item><title>MK Energy Management System</title><link>https://khaledhamidi.com/en/projects/mk_energy/</link><pubDate>Wed, 15 Jul 2020 00:00:00 +0000</pubDate><guid>https://khaledhamidi.com/en/projects/mk_energy/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>MK Energy Management System is a comprehensive management software built to handle the operational complexities of electricity distribution companies. Developed in C# and powered by a high-capacity, high-speed MS SQL Server database, the system provides a robust solution for subscriber and employee management.&lt;/p>
&lt;h2 id="key-features">Key Features&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Subscriber Management&lt;/strong>: The system supports both &lt;strong>prepaid&lt;/strong> and &lt;strong>postpaid&lt;/strong> subscriber models, offering flexibility in billing and customer service.&lt;/li>
&lt;li>&lt;strong>High-Performance Database&lt;/strong>: Utilizes MS SQL Server to ensure fast, reliable, and scalable data management for a large number of subscribers.&lt;/li>
&lt;li>&lt;strong>Employee Administration&lt;/strong>: Includes modules for managing employee records, roles, and permissions within the system.&lt;/li>
&lt;li>&lt;strong>Billing and Invoicing&lt;/strong>: Streamlines the process of generating bills and tracking payments for all subscriber types.&lt;/li>
&lt;li>&lt;strong>Reporting&lt;/strong>: Provides detailed reports on consumption, payments, and subscriber activity to support business decisions.&lt;/li>
&lt;/ul>
&lt;img src="MK_Energy.png" alt="program review" style="width:100%;"></description></item><item><title>Pharmacy Plus — desktop app for pharmacy management</title><link>https://khaledhamidi.com/en/projects/pharmacy/</link><pubDate>Tue, 10 Mar 2020 00:00:00 +0000</pubDate><guid>https://khaledhamidi.com/en/projects/pharmacy/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>Pharmacy Plus is a Windows desktop application I built for a pharmacist who needed a single place to handle his daily work — invoices, stock, customer accounts, and expiration tracking. The off-the-shelf options he tried either did too much or didn&amp;rsquo;t fit how he actually worked, so we built the app around his workflow.&lt;/p>
&lt;p>The goal was a focused tool that covers what a small-to-mid pharmacy actually does in a day, without dragging the user through unnecessary screens.&lt;/p>
&lt;h2 id="what-it-covers">What it covers&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Dashboard&lt;/strong> — sales for the day, pending invoices, and items running low or close to their expiration date.&lt;/li>
&lt;li>&lt;strong>Invoices&lt;/strong> — create, edit and print customer invoices, with items pulled straight from inventory.&lt;/li>
&lt;li>&lt;strong>Inventory&lt;/strong> — search, add, edit and categorize items (tablets, capsules, liquids, etc.).&lt;/li>
&lt;li>&lt;strong>Expiration tracking&lt;/strong> — items within a configurable expiry window show up on the dashboard, so the pharmacist sees them without running a report.&lt;/li>
&lt;li>&lt;strong>Sales view&lt;/strong> — sortable and filterable transaction list, with the option to export account statements.&lt;/li>
&lt;li>&lt;strong>Barcode scanning&lt;/strong> for quick item lookup at the counter.&lt;/li>
&lt;li>&lt;strong>Printable reports&lt;/strong> for invoices, account statements, and stock summaries.&lt;/li>
&lt;/ul>
&lt;h2 id="notes-on-the-build">Notes on the build&lt;/h2>
&lt;p>Built as a single Windows executable with a local database. The pharmacy&amp;rsquo;s internet was unreliable, so the app runs fully offline. Data stays on the local machine with a periodic backup to an external drive.&lt;/p>
&lt;h2 id="website">Website&lt;/h2>
&lt;p>More details on
.&lt;/p></description></item><item><title>European Car Wash Control System Project</title><link>https://khaledhamidi.com/en/projects/vechiles-wach-system/</link><pubDate>Thu, 01 Aug 2019 00:00:00 +0000</pubDate><guid>https://khaledhamidi.com/en/projects/vechiles-wach-system/</guid><description>&lt;p>The European Car Wash Control System project aims to develop a comprehensive software application in C# that allows users to efficiently manage and control the operations of car wash facilities. This system focuses on providing an intuitive user interface along with advanced features for managing car wash processes.&lt;/p>
&lt;h2 id="key-features">Key Features:&lt;/h2>
&lt;ul>
&lt;li>Integrated Control Dashboard&lt;/li>
&lt;li>Reports and Analytics&lt;/li>
&lt;li>Notifications and Alerts&lt;/li>
&lt;li>Security&lt;/li>
&lt;/ul>
&lt;h2 id="benefits">Benefits&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Increased Efficiency&lt;/strong>: By effectively managing operations, users can reduce wait times for customers and enhance productivity.&lt;/li>
&lt;li>&lt;strong>Improved User Experience&lt;/strong>: The easy-to-use interface allows users to manage car wash services effortlessly and effectively.&lt;/li>
&lt;li>&lt;strong>Cost Reduction&lt;/strong>: Through consumption reports and data analysis, areas for improvement can be identified to lower operational costs.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Conclusion&lt;/strong>
The European Car Wash Control System project represents a significant step towards modernizing and enhancing car wash management, combining cutting-edge technology with user-friendliness. The software offers a comprehensive solution that can greatly contribute to improving operational efficiency and enhancing customer satisfaction.&lt;/p>
&lt;p>Development by
&lt;/p></description></item><item><title>Ground Scale Management System</title><link>https://khaledhamidi.com/en/projects/zoomce/</link><pubDate>Fri, 01 Feb 2019 00:00:00 +0000</pubDate><guid>https://khaledhamidi.com/en/projects/zoomce/</guid><description>&lt;h1 id="ground-scale-management-system">Ground Scale Management System&lt;/h1>
&lt;p>This is a Windows application I built for a recycling company that operates a ground scale — the kind trucks drive onto to be weighed. The scale itself outputs the weight reading over a serial port. The application reads that reading directly, logs it against the truck and driver entering or leaving the site, and prints an invoice at the counter.&lt;/p>
&lt;p>Before the project, the operator was reading the number off the scale&amp;rsquo;s display and typing it into a spreadsheet by hand. That step is gone now.&lt;/p>
&lt;h2 id="what-it-handles">What it handles&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Live weight reading&lt;/strong> from the scale over RS232 — no manual entry.&lt;/li>
&lt;li>&lt;strong>Manual fallback&lt;/strong> when the scale is being serviced or unreachable.&lt;/li>
&lt;li>&lt;strong>Truck, driver, and customer records&lt;/strong> linked to every weighing.&lt;/li>
&lt;li>&lt;strong>Custom invoices and entry/exit receipts&lt;/strong> printed on the spot.&lt;/li>
&lt;li>&lt;strong>Daily, monthly, and yearly reports&lt;/strong> exportable to Excel.&lt;/li>
&lt;li>&lt;strong>User roles&lt;/strong> so operators can only record weights, while managers can edit historical records.&lt;/li>
&lt;/ul>
&lt;h2 id="tech">Tech&lt;/h2>
&lt;ul>
&lt;li>C# Windows desktop application.&lt;/li>
&lt;li>Talks to the scale over a serial port (RS232).&lt;/li>
&lt;li>Local database with periodic Excel backups so the accountant can pick them up without opening the app.&lt;/li>
&lt;/ul>
&lt;h2 id="gallery">Gallery&lt;/h2>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="%5czoomce%5c1.jpg" alt="Interface" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="%5czoomce%5c3.jpg" alt="Reports" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p></description></item><item><title>Qistas AC — store and accounting system</title><link>https://khaledhamidi.com/en/projects/qistasac/</link><pubDate>Fri, 01 Feb 2019 00:00:00 +0000</pubDate><guid>https://khaledhamidi.com/en/projects/qistasac/</guid><description>&lt;h2 id="what-it-is">What it is&lt;/h2>
&lt;p>Qistas AC is a Windows desktop application I built for shop owners who wanted to leave paper-based bookkeeping behind without committing to a full ERP. It runs on a single PC at the counter and covers the everyday parts: items, sales, invoices, suppliers, customer accounts, and end-of-day reports.&lt;/p>
&lt;h2 id="what-it-handles">What it handles&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Inventory&lt;/strong> — items with prices, stock levels, and low-stock alerts.&lt;/li>
&lt;li>&lt;strong>Sales and invoices&lt;/strong> — generate invoices, record payments (cash or on account), and track outstanding balances.&lt;/li>
&lt;li>&lt;strong>Customer and supplier accounts&lt;/strong> — transaction history per account, with simple receivables and payables tracking.&lt;/li>
&lt;li>&lt;strong>Basic accounting&lt;/strong> — profit and loss summaries and sales-by-period reports, exportable for the accountant.&lt;/li>
&lt;/ul>
&lt;h2 id="notes-on-the-build">Notes on the build&lt;/h2>
&lt;p>The app was designed for shops where one or two people operate the system, so the UI prioritizes keyboard shortcuts and quick item search over visual polish. Data lives in a local database on the same machine, with backup to an external drive.&lt;/p>
&lt;p>I worked directly with the first shops using it, so most of the workflow choices came from watching how cashiers actually entered sales and what slowed them down.&lt;/p></description></item><item><title>ZOOM WIFI Hotspot: A Community-Driven Connectivity Solution</title><link>https://khaledhamidi.com/en/projects/zoom-wifi-hotspot/</link><pubDate>Wed, 01 Feb 2017 00:00:00 +0000</pubDate><guid>https://khaledhamidi.com/en/projects/zoom-wifi-hotspot/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>In a period when internet connectivity in Syria was unstable and intermittent, I built ZOOM WIFI Hotspot — a small Windows utility that turns any computer into a Wi-Fi access point so nearby devices can share its connection. The idea wasn&amp;rsquo;t complicated, but at the time there wasn&amp;rsquo;t a clean, free tool that did just this and nothing else.&lt;/p>
&lt;h2 id="from-idea-to-release">From idea to release&lt;/h2>
&lt;p>The project started from a personal need: I had an internet connection, and people nearby needed to share it. The existing options were either obscure command-line invocations, heavy paid software, or unreliable freeware bundled with adware.&lt;/p>
&lt;p>The app is written in C# and uses the Windows WMI interface to control network sharing. The UI is intentionally minimal — one button to start the hotspot, one field for the SSID, one for the password.&lt;/p>
&lt;blockquote>
&lt;p>The main challenge was making it stable enough to run for hours on low-spec machines without crashing or eating CPU.&lt;/p>&lt;/blockquote>
&lt;h2 id="highlights">Highlights&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Worked on every major Windows version&lt;/strong> — XP, 7, 8, 8.1, and 10.&lt;/li>
&lt;li>&lt;strong>Completely free&lt;/strong>, with no paid tier or usage limits.&lt;/li>
&lt;li>&lt;strong>Very light&lt;/strong> — small footprint, low memory use.&lt;/li>
&lt;li>&lt;strong>Bilingual UI&lt;/strong> — Arabic and English.&lt;/li>
&lt;/ul>
&lt;h2 id="how-it-spread">How it spread&lt;/h2>
&lt;p>In its first year ZOOM WIFI Hotspot passed 3,000 downloads, and people in besieged areas used it to share a single connection across several devices. I got messages from users I never expected to reach.&lt;/p>
&lt;h2 id="gallery">Gallery&lt;/h2>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="Screenshots" srcset="
/en/projects/zoom-wifi-hotspot/1_hu_8763ac72da435469.webp 400w,
/en/projects/zoom-wifi-hotspot/1_hu_94f3f2f970f057f2.webp 760w,
/en/projects/zoom-wifi-hotspot/1_hu_b334e8aef17e5020.webp 1200w"
src="https://khaledhamidi.com/en/projects/zoom-wifi-hotspot/1_hu_8763ac72da435469.webp"
width="760"
height="428"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="Screenshots" srcset="
/en/projects/zoom-wifi-hotspot/2_hu_3c1609189b75300c.webp 400w,
/en/projects/zoom-wifi-hotspot/2_hu_4c782f6795019423.webp 760w,
/en/projects/zoom-wifi-hotspot/2_hu_297df1f081492c3d.webp 1200w"
src="https://khaledhamidi.com/en/projects/zoom-wifi-hotspot/2_hu_3c1609189b75300c.webp"
width="760"
height="428"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="Screenshots" srcset="
/en/projects/zoom-wifi-hotspot/3_hu_f7dba5946fb2f82c.webp 400w,
/en/projects/zoom-wifi-hotspot/3_hu_8e66d98f44ca92f7.webp 760w,
/en/projects/zoom-wifi-hotspot/3_hu_ac106c498a432b03.webp 1200w"
src="https://khaledhamidi.com/en/projects/zoom-wifi-hotspot/3_hu_f7dba5946fb2f82c.webp"
width="760"
height="427"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>After Windows 10 version 1703 added a built-in Mobile Hotspot option, updates to the app stopped.&lt;/p>
&lt;h2 id="what-i-took-from-it">What I took from it&lt;/h2>
&lt;p>ZOOM WIFI Hotspot wasn&amp;rsquo;t a commercial product or a graduation project. It was the first time I saw a tool I&amp;rsquo;d written travel without any marketing and reach people I&amp;rsquo;d never meet. The lesson stayed with me: simple tools that solve a real problem spread on their own.&lt;/p></description></item><item><title>CS-ZOOM — a Counter-Strike 1.6 mod</title><link>https://khaledhamidi.com/en/projects/cszoom/</link><pubDate>Tue, 01 Mar 2016 00:00:00 +0000</pubDate><guid>https://khaledhamidi.com/en/projects/cszoom/</guid><description>&lt;p>CS-ZOOM is a Counter-Strike 1.6 mod I made back in 2016 — a personal project that mixed game-server admin work and learning C through AMX Mod X plugins. It&amp;rsquo;s one of the older things on this site, but I keep it here because it was the first project where I went from &amp;ldquo;writing scripts&amp;rdquo; to actually shipping something other people used.&lt;/p>
&lt;h2 id="whats-in-it">What&amp;rsquo;s in it&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Adjustable gameplay&lt;/strong> — gravity, bot behavior, and other server settings that can be changed live without restarting the server.&lt;/li>
&lt;li>&lt;strong>HD mode&lt;/strong> — re-tuned graphics settings for cleaner visuals than vanilla 1.6.&lt;/li>
&lt;li>&lt;strong>Bot play&lt;/strong> — single-player practice against bots, which mattered for people who didn&amp;rsquo;t have an internet connection good enough for online matches.&lt;/li>
&lt;li>&lt;strong>ZConfig&lt;/strong> — a small in-game utility that maps weapon loadouts to single keys (X / C / V) so you don&amp;rsquo;t have to dig through the buy menu mid-round.&lt;/li>
&lt;li>&lt;strong>Multiple modes in one install&lt;/strong> — deathmatch, classic, knife-only, and a few others, switchable per-server.&lt;/li>
&lt;li>&lt;strong>Custom in-game logos&lt;/strong> — over a hundred logos you can swap with the T key.&lt;/li>
&lt;/ul>
&lt;h2 id="the-community-part">The community part&lt;/h2>
&lt;p>I ran a public server for the mod for a while. It was small — a weekend group of friends and a few people from the local gaming community. Nothing official, but it stayed active long enough to build a regular group of players around it.&lt;/p>
&lt;h2 id="videos">Videos&lt;/h2>
&lt;p>The plugin code in AMX Mod X / C:
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Bg9t9qv6Eyc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div>
&lt;/p>
&lt;p>The mod&amp;rsquo;s intro screen:
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/1YcwAC9gBBM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div>
&lt;/p>
&lt;p>
&lt;/p></description></item></channel></rss>