PC Application Development Archives | DMC, Inc. https://www.dmcinfo.com/our-work/category/service/application-development/pc-application-development/ Mon, 08 Sep 2025 20:57:11 +0000 en-US hourly 1 https://wordpress.org/?v=6.8.3 https://cdn.dmcinfo.com/wp-content/uploads/2025/04/17193803/site-icon-150x150.png PC Application Development Archives | DMC, Inc. https://www.dmcinfo.com/our-work/category/service/application-development/pc-application-development/ 32 32 Autonomous Floating and Underwater Robotic Platform https://www.dmcinfo.com/our-work/autonomous-floating-and-underwater-robotic-platform/ Tue, 28 Jan 2025 00:00:00 +0000 https://www.dmcinfo.com/our-work/autonomous-floating-and-underwater-robotic-platform/ DMC’s comprehensive approach included the full implementation of the hardware, firmware, and PC application design. By integrating a solar panel and employing efficient power management strategies, the robot can maintain extended battery life, reducing the frequency of manual recharging. A high-performance MCU and IMU established a robust foundation for orientation tracking. In addition to IMU […]

The post Autonomous Floating and Underwater Robotic Platform appeared first on DMC, Inc..

]]>
DMC’s comprehensive approach included the full implementation of the hardware, firmware, and PC application design.

By integrating a solar panel and employing efficient power management strategies, the robot can maintain extended battery life, reducing the frequency of manual recharging.

A high-performance MCU and IMU established a robust foundation for orientation tracking. In addition to IMU and magnetometer, the robot’s sensors include multiple distance measurement sensors to improve obstacle detection. This comprehensive sensor data, combined with advanced motor control, supports efficient and adaptive navigation in a range of environments.

underwater robot software

The inclusion of a wireless module simplifies over-the-air firmware updates and device configuration. The main MCU can be seamlessly placed into bootloader mode by the wireless module, ensuring smooth firmware updates for the main MCU. Additionally, the wireless module features its own firmware update capability, allowing for a comprehensive firmware update system.

DMC also developed a PC-based application that allows users to monitor sensor readings, adjust parameters, visualize the robot’s orientation, and control the robot in real time. This tool streamlined testing and optimization while laying the groundwork for more complex autonomous control algorithms.

underwater robot software


Learn more about DMC’s Embedded Development and Embedded Programming expertise and contact us for your next project.

The post Autonomous Floating and Underwater Robotic Platform appeared first on DMC, Inc..

]]>
Python Modbus Communication for Environmental Monitoring https://www.dmcinfo.com/our-work/python-modbus-communication-for-environmental-monitoring/ Mon, 08 Apr 2024 00:00:00 +0000 https://www.dmcinfo.com/our-work/python-modbus-communication-for-environmental-monitoring/ For this project, we used Modbus as a communication protocol and Omega HX303C and OME-ET-7017 Ethernet I/O modules to write a driver that collects live data within 0.1 seconds. The OME-ET-7000 module requires the use of a jumper to switch from the default voltage to milliampere. The IO module uses Modbus reading input registers to store the […]

The post Python Modbus Communication for Environmental Monitoring appeared first on DMC, Inc..

]]>
For this project, we used Modbus as a communication protocol and Omega HX303C and OME-ET-7017 Ethernet I/O modules to write a driver that collects live data within 0.1 seconds.

The OME-ET-7000 module requires the use of a jumper to switch from the default voltage to milliampere. The IO module uses Modbus reading input registers to store the analog inputs of the temperature and humidity within the 4-20mA range. This will match the detection range for the sensor (0-100˚ C for temperature and 0-100% for humidity).

DMC used pyModbusTCP, which uses Modbus TCP protocols to get readings from the IO module. pyModbusTCP’s built-in method handles the address for registers when calling different methods. For this project we used input registers, which are stored by 0x04 address. pyModbusTCP automatically handled the addresses.

python modbus communication for environmental monitoring

Another feature of this driver is the ability to handle different channels’ logging frequency within a module, as well as handle different IO modules. The program is developed to scale for other IO module brands, which could potentially use other communication protocols.

Since the client required different sensors to have the ability to log the environment data under different frequencies, DMC used technology such as asyncio to allow different IO modules to work together. We also used a priority queue system based on different channels, in this case the sensor, to log frequencies to increase the scheduling performance.

The resulting solution increased the client’s scheduling performance and met strict sensitivity and temperature consistency requirements.

Learn more about DMC’s Python Development Services and contact us today for your next project.

The post Python Modbus Communication for Environmental Monitoring appeared first on DMC, Inc..

]]>
Flexible Desktop Application for Automotive Chip Flashing https://www.dmcinfo.com/our-work/flexible-desktop-application-for-automotive-chip-flashing/ Tue, 28 Nov 2023 00:00:00 +0000 https://www.dmcinfo.com/our-work/flexible-desktop-application-for-automotive-chip-flashing/ DMC’s client had a dynamic manufacturing line that supported multiple variations of a product, each with its own unique firmware. The client needed a modular system to automate their labor-intensive flashing process. DMC developed the initial proof of concept using the client’s hardware samples and flashing equipment at our facility. After working with the client […]

The post Flexible Desktop Application for Automotive Chip Flashing appeared first on DMC, Inc..

]]>
DMC’s client had a dynamic manufacturing line that supported multiple variations of a product, each with its own unique firmware. The client needed a modular system to automate their labor-intensive flashing process.

DMC developed the initial proof of concept using the client’s hardware samples and flashing equipment at our facility. After working with the client to verify the proof-of-concept system and requirements, DMC worked with the client to commission and test the application at their production facility.

The resulting solution replaced the original, manual process with an automated system. The application’s automated firmware selection allowed multiple products, including new models in the future, to be supported on a single line.

The application also features logging capabilities and a user interface, granting the client the information needed to pinpoint which parts of the system require attention when issues arise.  

Learn more about DMC’s PC application development expertise and contact us for your next project. 

The post Flexible Desktop Application for Automotive Chip Flashing appeared first on DMC, Inc..

]]>
NI Data Acquisition Library and Calibration Utility in Python https://www.dmcinfo.com/our-work/ni-data-acquisition-library-and-calibration-utility-in-python/ Tue, 06 Dec 2022 00:00:00 +0000 https://www.dmcinfo.com/our-work/ni-data-acquisition-library-and-calibration-utility-in-python/ The client requested two deliverables from DMC. They wanted a Python package that wraps NI’s DAQmx hardware drivers and provides an easy interface that they could use to integrate these measurements in their automated test sequences. Additionally, they wanted to have an easy-to-use calibration GUI for their operators, to ensure that precise power measurements could be made reliably. […]

The post NI Data Acquisition Library and Calibration Utility in Python appeared first on DMC, Inc..

]]>
The client requested two deliverables from DMC. They wanted a Python package that wraps NI’s DAQmx hardware drivers and provides an easy interface that they could use to integrate these measurements in their automated test sequences. Additionally, they wanted to have an easy-to-use calibration GUI for their operators, to ensure that precise power measurements could be made reliably.

DMC’s approach was to develop a Python package that wrapped NI’s nidaqmx package and provided a more convenient interface to the rest of their automations. The nidaqmx package contained the official DAQmx bindings but familiarity with DAQmx is required to use it easily.

DMC first trained the client to use NI-MAX to configure DAQmx tasks, which are convenient abstractions that can help set up, use, test, and debug data acquisition hardware. DMC worked with the client to formulate an appropriate test methodology, and we then assisted in the configuration of the DAQmx task to provide the required measurements.

Next, we developed a Python package that gets used as the back-end of both the calibration and data acquisition features. This package was written to provide a convenient API for acquiring calibration data and for applying that data to live measurements.

Finally, DMC developed a simple graphical application for operators to conduct regular calibrations. For this, we used QtQuick, a graphical framework provided by the Qt library. Qt provides Python bindings via the PySide6 package, allowing QtQuick to integrate well with Python, and making it easy to produce professional, customizable, highly-dynamic user interfaces. All of the system’s software and hardware components can be visualized as follows:

Software Stack

Our approach and the technologies we employed had several benefits to our client. The NI hardware provided high-quality, high-precision measurements of the values of interest. The NI-MAX utility and the DAQmx drivers improved the debugging experience and allowed DMC to use simulated devices to keep costs low by eliminating travel and/or shipping costs.

Furthermore, Python enabled the client to easily integrate these measurements into their existing (Python-based) automations. NI’s nidaqmx package provided a convenient Python interface for DAQmx so the hardware could be integrated quickly and easily. QtQuick as a graphical framework allowed DMC to quickly create a simple, portable GUI application in Python.

Overall, we met the client’s goals and provided their deliverables using our expertise with NI’s DAQ hardware, the Python interface to that hardware, and a simple but powerful GUI framework.

Read more about DMC’s Python Development Services, and contact us today for your next project!

The post NI Data Acquisition Library and Calibration Utility in Python appeared first on DMC, Inc..

]]>
Compact Wireless Micro-Pump Controller for Prototype Device https://www.dmcinfo.com/our-work/compact-wireless-micro-pump-controller-for-prototype-device/ Fri, 12 Aug 2022 00:00:00 +0000 https://www.dmcinfo.com/our-work/compact-wireless-micro-pump-controller-for-prototype-device/ We provided the client with a device and system they were able to reliably use in their research as they designed a compact micropump controller and supporting application to assist in their research and testing. The solution included features such as a Nordic Bluetooth Module for communicating with a Python based PC application for data […]

The post Compact Wireless Micro-Pump Controller for Prototype Device appeared first on DMC, Inc..

]]>
We provided the client with a device and system they were able to reliably use in their research as they designed a compact micropump controller and supporting application to assist in their research and testing. The solution included features such as a Nordic Bluetooth Module for communicating with a Python based PC application for data logging and control as well as for over-the-air firmware updates. The system also included a wireless Qi charging system, a high voltage pump driver and flow monitor, and a fuel gauge sensor. The fuel gauge sensor was used to determine the battery health and charge levels. DMC focused on fully supporting these sensors with the firmware and PC application.

For the customer to accurately monitor the state of charge remotely, DMC integrated a fuel gauge into the device, transmitted its status via Bluetooth, and created a manufacturing process to commission each unit during assembly.  DMC wrote a custom I2C driver for a TI fuel gauge sensor utilizing Texas Instruments Impedance Track (TM) Based Fuel Gauging. To accurately determine the battery status, a series of tests were performed to profile the battery pack and determine the battery chemistry. This battery chemistry ID was used by the fuel gauge to accurately determine the state of charge of the battery pack compensating for self-discharging as well as battery aging. During manufacturing, each fuel gauge was programmed and calibrated using TI’s Battery Management Studio (bqStudio).

Texas Instrument’s Battery Management Studio used to program and calibrate the fuel gauge devices
Texas Instrument’s Battery Management Studio used to program and calibrate the fuel gauge devices.

DMC helped the customer solidify their hardware design for manufacturability and consistency. DMC used reverse engineering to recover their existing design files.  DMC applied our best practices for printed circuit board (PCB) design to improve the client’s latest revision of the device; so, it could be utilized in their research. This additionally included updating and modifying the Python-based PC application to support plotting and report generation to be able to properly evaluate the performance of the prototype system.

Image of redesigned PCB prior to final assembly and calibration
Image of redesigned PCB prior to final assembly and calibration.

In the end, we leveraged our extensive hardware design experience and vast embedded software experience to pick up existing designs and to build upon them — yielding a testable device for our client that is efficient and functional.

Learn more about DMC’s product development expertise and contact us to get started on your next project!

The post Compact Wireless Micro-Pump Controller for Prototype Device appeared first on DMC, Inc..

]]>
Bluetooth Add-on and Windows Application for Measurement Automation https://www.dmcinfo.com/our-work/bluetooth-add-on-and-windows-application-for-measurement-automation/ Wed, 01 Aug 2018 00:00:00 +0000 https://www.dmcinfo.com/our-work/bluetooth-add-on-and-windows-application-for-measurement-automation/ DMC’s client manufactures a wide range of quality control inspection equipment worldwide. The client contacted DMC for our software, embedded, and electronic design services due to our expertise developing solutions with Bluetooth communication.  DMC developed a circuit board which serves as the wireless interface between the customer’s measurement gauges and a Windows application that receives, […]

The post Bluetooth Add-on and Windows Application for Measurement Automation appeared first on DMC, Inc..

]]>
DMC’s client manufactures a wide range of quality control inspection equipment worldwide. The client contacted DMC for our software, embedded, and electronic design services due to our expertise developing solutions with Bluetooth communication. 

DMC developed a circuit board which serves as the wireless interface between the customer’s measurement gauges and a Windows application that receives, interprets, and records the data. Before working with DMC, measurements were done manually as parts came off the manufacturing line, which took significantly more time and left room for human error. 

DMC began by developing a proof of concept (POC) prototype using a development kit, which confirmed we could read measurements from the gauges and transmit them over Bluetooth to a simple application. Our engineers then built a first round of prototype boards using Altium Designer based on the development kit work and continued to add features to the Windows application.

The final stage of the product to date involved the second round of prototype boards with altered battery size and type for longer battery life. The client wanted the add-on to be as small as possible, which required minimizing the size of the circuit board and the battery without compromising on battery life. The new lithium polymer batteries charge in under two hours and provide up to two weeks of operation.

Windows Application

The Windows application functions as a series of workflows. The application can record many different variables depending on the type of object being measured, including the minimum/maximum measurement over a duration of time, pitch, and taper. The application receives data over Bluetooth and records each measurement into a spreadsheet, applies formulas to perform calculations, and allows the user to redo incorrect measurements.

Learn more about DMC’s low-power embedded development expertise.

The post Bluetooth Add-on and Windows Application for Measurement Automation appeared first on DMC, Inc..

]]>
IoT Waste Management with Siemens PLCs and Microsoft Azure https://www.dmcinfo.com/our-work/iot-waste-management-with-siemens-plcs-and-microsoft-azure/ Thu, 05 Oct 2017 00:00:00 +0000 https://www.dmcinfo.com/our-work/iot-waste-management-with-siemens-plcs-and-microsoft-azure/ Waste Harmonics provides businesses around North America with outsourced waste management solutions including a trash compactor and baler monitoring service. Their unique solutions lower costs for customers and address common challenges in the industry. Waste Harmonics reached out to Siemens who recommended DMC due to our extensive experience with Siemens PLC programming and IoT solutions. […]

The post IoT Waste Management with Siemens PLCs and Microsoft Azure appeared first on DMC, Inc..

]]>
Waste Harmonics provides businesses around North America with outsourced waste management solutions including a trash compactor and baler monitoring service. Their unique solutions lower costs for customers and address common challenges in the industry.

Waste Harmonics reached out to Siemens who recommended DMC due to our extensive experience with Siemens PLC programming and IoT solutions. The first phase of the project involved programming the Siemens S7-1200 PLCs to connect to a web service. A few years later, Waste Harmonics contacted DMC again to further increase scalability by building out the app service end.

How It Works

The solution uses Siemens modems on the PLCs that communicate with the web service via the AT&T machine-to-machine network on Jasper, which increases security by not having public IP addresses. The original system relied on two Cisco routers and a physical server hosting the web service that required regular clean-up to maintain its speed. DMC developed a cloud-based Microsoft Azure solution with significantly less maintenance required that can easily scale by clicking a button to add resources with no downtime. The database was migrated to Azure SQL DB and the web service was ported to an Azure App Service. Messages from the PLCs are processed via Azure Service Bus. If a message requires a notification, an email is generated. The database holds the historical and status data for each compactor. Users can log into the App Service with a web browser, allowing them to check on the status of each compactor and schedule pickups or maintenance.

In a subsequent phase, the routers were replaced by a connection directly from Jasper to an Azure VPN and the physical server was replaced by an Azure VM, reducing monthly hosting costs and enabling future scalability at the click of a button.

Learn more about DMC’s Siemens PLC Programming and Microsoft Azure expertise.

The post IoT Waste Management with Siemens PLCs and Microsoft Azure appeared first on DMC, Inc..

]]>
Product Selection Tool and Catalog Web Application https://www.dmcinfo.com/our-work/product-selection-tool-and-catalog-web-application/ Tue, 29 Aug 2017 00:00:00 +0000 https://www.dmcinfo.com/our-work/product-selection-tool-and-catalog-web-application/ Portescap manufactures high-quality miniature electric motors for integration into medical and industrial products. During product development, the engineers and product developers of Portescap’s clients often need to obtain sample products to test in their potential designs. Sifting through Portescap’s extensive catalog for products that fit clients’ specific application needs can be challenging, so DMC helped develop […]

The post Product Selection Tool and Catalog Web Application appeared first on DMC, Inc..

]]>
Portescap manufactures high-quality miniature electric motors for integration into medical and industrial products. During product development, the engineers and product developers of Portescap’s clients often need to obtain sample products to test in their potential designs. Sifting through Portescap’s extensive catalog for products that fit clients’ specific application needs can be challenging, so DMC helped develop the Portescap MotionCompass site to meet this need. 

This project started with Portescap’s internal motor selection algorithm. Portescap developed a system that allows the user to input the desired motor torque, speed, power, and other criteria, such as size and electrical requirements. The algorithm then returns motors that fit the user’s application based on the target specs. DMC worked with Portescap to transfer this algorithm to the web, giving end users the ability to browse the product catalogue and compare product specification and operating graphs at the operating points specific to their application. 

DMC and Portescap worked together on a UI design concept phase to determine the layout of the tool’s desired features. The process included brainstorming sessions, research, sketches, and complete design mockups. 

Motion Compass uses a SQL server database backend containing the catalogue and an ASP.NET front end with custom C# code. The system is built using existing third-party tools, such as DNN for user integration, to reduce development time and cost. Other features include Salesforce integration, allowing Portescap to use this as a lead generation tool for new users that register on the site, and E-commerce and order fulfillment integration. DMC hosts the development site locally to test upgrades and changes before deployment with the help of Portescap’s IT department.

Interactive Product Catalog and Web Development
Portescap Motion Compass Web Application with Performance Graphs

Learn more about DMC’s Web Application Development services.

The post Product Selection Tool and Catalog Web Application appeared first on DMC, Inc..

]]>
Office 365 Exchange and SharePoint Calendar Synchronization https://www.dmcinfo.com/our-work/office-365-exchange-and-sharepoint-calendar-synchronization/ Thu, 29 Oct 2015 00:00:00 +0000 https://www.dmcinfo.com/our-work/office-365-exchange-and-sharepoint-calendar-synchronization/ DMC’s client uses SharePoint for matter management, utilizing both top-level client sites and sub-sites for specific matters. Additionally, a Common Calendar was created in Exchange to track all docketed appointments across all firm matters. This calendar was accessible in Outlook, but the client wanted the ability to view the docketing calendar from SharePoint as well. DMC […]

The post Office 365 Exchange and SharePoint Calendar Synchronization appeared first on DMC, Inc..

]]>
DMC’s client uses SharePoint for matter management, utilizing both top-level client sites and sub-sites for specific matters. Additionally, a Common Calendar was created in Exchange to track all docketed appointments across all firm matters. This calendar was accessible in Outlook, but the client wanted the ability to view the docketing calendar from SharePoint as well. DMC was asked to implement a solution to synchronize docketed appointments with a centralized calendar in SharePoint. In addition, each docketed appointment needed to be pushed to individual matter site calendars so documents, contacts, and appointments for each matter could be viewed in one place. 

Multiple items are synced on a given day

Unfortunately, out-of-the-box SharePoint does not provide a way to view shared or public folder calendars in Exchange. DMC developed an automatic process to set up synchronization between the Outlook Common Calendar and the SharePoint homepage’s Common Calendar. This was accomplished using a windows service that was set up to run on the SharePoint server at regular 15-minute intervals.

One key challenge that DMC had to address was the custom docketing appointment form that had been implemented on Exchange. This posed an issue when working with those items programmatically, as it was not as simple as copying the appointment object between systems. DMC created a custom appointment parsing algorithm in order to extract the necessary data out of those custom appointments and create a SharePoint appointment containing all of this information.

Beyond the custom forms in the Exchange appointments, the synchronization process also had to address the fact that the appointment objects within SharePoint and Exchange do not have a clear 1-to-1 mapping; copying the object directly was out of the question. The sync had to read all of the information on the Exchange appointment and create a corresponding SharePoint appointment object from scratch. This was particularly tricky when dealing with recurring appointments, as the way that Exchange handles the list of recurrences and any modifications (like changes to a single recurrence item) is very different than SharePoint. That said, DMC was able to solve this issue by coding a mapping between the two specifications.

Once the two-way sync was set up between Exchange and SharePoint, a process was built to push appointments from the central docketing calendar in SharePoint to the individual matter sites. Since the appointments were all within SharePoint, DMC was able to use the client object model to copy the objects to the corresponding matter sites using the Matter Number (in the appointment’s category field) as the means to identify which matter site each appointment was supposed to be added to.

Learn more about DMC’s Exchange and SharePoint Calendar Synchronization services.

The post Office 365 Exchange and SharePoint Calendar Synchronization appeared first on DMC, Inc..

]]>
Database-Driven Web and Desktop Applications for Custom Label Management System https://www.dmcinfo.com/our-work/database-driven-web-and-desktop-applications-for-custom-label-management-system/ Thu, 29 Oct 2015 00:00:00 +0000 https://www.dmcinfo.com/our-work/database-driven-web-and-desktop-applications-for-custom-label-management-system/ DMC developed a label management system comprised of three components: Database The database serves as a central repository for all label configuration data. It is a Microsoft SQL database stored in an on-premise server to ensure continuous stable connectivity from the desktop application and web application. The database schema was designed to support change tracking, […]

The post Database-Driven Web and Desktop Applications for Custom Label Management System appeared first on DMC, Inc..

]]>
DMC developed a label management system comprised of three components:

Database

The database serves as a central repository for all label configuration data. It is a Microsoft SQL database stored in an on-premise server to ensure continuous stable connectivity from the desktop application and web application. The database schema was designed to support change tracking, so the edit history of any given label can be retrieved and viewed. In additional to label data, the database stores records of all batch printing jobs initiated by the desktop application.

Desktop Application

The desktop application allows operators to manage and initiate batch label print jobs. Users log in to the application with the same Active Directory credentials they use to log in elsewhere in the company network; once the credentials are verified, the application checks the database to determine if the user has access to the application.

Use of the application centers around the management of new print jobs. Users can switch between existing print jobs and add new ones by using the tabbed interface along the left side of the screen. Users may also view a summary screen showing detailed information on all active print jobs.

Creating a print job follows a simple and straightforward process. Users first enter a material number located on the bill of work for the print job they will be initiating. The application retrieves all label artworks associated with that material number and places them into a dropdown for the user to select from. Once an artwork is selected, read-only information pulled from the database is displayed on the right side of the screen so the user may verify they have selected the correct label artwork to print.

Additionally, a list of variable data parameters that need to be filled in for the selected artwork appear. The user must provide data for all of these parameters. Indicators next to each field let the user know what sort of data needs to be supplied for each parameter (e.g. the Expiration Date parameter requires a future date) and whether or not the entered data is valid. Once all data has been entered correctly, the user may generate a print preview to verify the label is formatted correctly.

The final step is to select a printer. This brings up status information about the selected printer (such as whether it is idle, currently printing, in an error state, etc.) and allows the user to bring up the print preferences dialog to configure any printer settings. The user is also allowed to print sample labels as a final check to make sure everything is correct. Once the user is ready, they fill in the number of labels to print and initiate the job. All fields and dropdowns are locked until the print job completes or is manually stopped. 

Web Application

The web application serves as a front-end to the database, allowing for the creation, modification, and management of labels. This includes managing the label stock that labels are printed on, the artwork defining what the labels look like, and the products that the labels are for.

The web application automatically grabs a user’s Active Directory credentials to log them in. The actions a user can take as well as the portions of the web application they can see are tied to their permissions. By default, users can only view label data. Users with administrative privileges can grant additional permissions to any user, expanding their list of capabilities to modifying label data, approving label changes, and uses the desktop application to print labels.

When a record is changed, it moves from an “Approved” state to a “Pending” state. No more changes to that record can occur until a user with approval permissions either approves or rejects the changes. Until that happens, the desktop application uses the latest approved data for any print jobs that are initiated. To facilitate the approval process, users can view a side-by-side comparison of what changed in a “Delta V Report”.

Since some users may wish to request a change without having the permission to do so, a “Change Request Form” can be accessed for any given record. This lists out all the data tied to a record with a second column where the user may type in their desired changes. They can then save or print a printer-friendly version of the form.

To make creating brand new records easier, a “Copy From” feature allows users to begin creating a new record with another record’s data as a template.

Viewing the potentially large quantities of records is simple with the ability to quickly sort and filter grids on any column.

 

The post Database-Driven Web and Desktop Applications for Custom Label Management System appeared first on DMC, Inc..

]]>