EcgSoft. Software Developer s Guide to RestEcg. Innovative ECG Software. www.ecg-soft.com - e-mail: info@ecg-soft.com



Similar documents
EcgSoft. Software Developer s Guide to EcgViewer. Innovative ECG Software info@ecg-soft.com

USB CASH DRAWER INTERFACE. Introduction

Building a Simulink model for real-time analysis V Copyright g.tec medical engineering GmbH

CONTROL OF MED INPUT/OUTPUT MODULES FROM OTHER LANGUAGES

C++ Wrapper Library for Firebird Embedded SQL

VitalJacket SDK v Technical Specifications

dmxusbpro External for Max/MSP

VitalJacket SDK v Technical Specifications

TekBots TM Oregon State University. usb_cam User Guide. Version 1.0 By Adriaan Smit OSU EE Graduate Student

s!nus-elektrotechnikai bt. Industrial IT & Automation

USB / Data-Acquisition Module NOW LEAD-FREE

AN3998 Application note

1 INTRODUCTION. This document describes the procedure to upgrade LTMR.

Setting up a Local Interconnect Network (LIN) using dspace MicroAutoBox 1401/1501 Simulink Blocks

EARTH PEOPLE TECHNOLOGY SERIAL GRAPH TOOL FOR THE ARDUINO UNO USER MANUAL

Web Services for Management Perl Library VMware ESX Server 3.5, VMware ESX Server 3i version 3.5, and VMware VirtualCenter 2.5

Code Estimation Tools Directions for a Services Engagement

PC Base Adapter Daughter Card UART GPIO. Figure 1. ToolStick Development Platform Block Diagram

PicoScope 6 Self-Help Guide

COM Port Stress Test

DSX Master Communications

PN L, Revision B, October Epic 950 TM. Master Programmer User s Guide

Work with Arduino Hardware

The full setup includes the server itself, the server control panel, Firebird Database Server, and three sample applications with source code.

Installing Java (Windows) and Writing your First Program

ScanWin Installation and Windows 7-64 bit operating system

TR-3 Channel Editor. Software Manual

UniFinger Engine SDK Manual (sample) Version 3.0.0

DeviceMaster UP Modbus Controller to Controller Communication

Back Office Recorder Dig04 Installation Guide

Installing the Gerber P2C Plotter USB Driver

A Real Time, Object Oriented Fieldbus Management System

Status Monitoring. Using Drivers by Seagull to Display Printer Status Information WHITE PAPER

SIM900 Eclipse environment install Application Note_V1.00

NEW. EVEN MORE data acquisition and test stand automation

USB Driver Installation for Windows XP

OPTOFORCE DATA VISUALIZATION 3D

Evo Laser Firmware Developer s Manual

ScanShell.Net Install Guide

Analog Devices Welcomes Hittite Microwave Corporation NO CONTENT ON THE ATTACHED DOCUMENT HAS CHANGED

CB-OLP425 DEVELOPMENT KIT GETTING STARTED

Cell Phone Vibration Experiment

Installing Global Logger USB Drivers

AlazarTech SDK Programmer s Guide. Version June 16, 2011

RcWare SoftPLC Modbus server mapping editor User manual

BIODEX. ATOMLAB 500/WIPE TEST COUNTER DATA MANAGER SOFTWARE Version 1.10 (and higher). OPERATION MANUAL

Using Microsoft Windows Authentication for Microsoft SQL Server Connections in Data Archive

AXIS 5810 A Bluetooth Print Plug. Quick Start

Simple SDR Receiver. Looking for some hardware to learn about SDR? This project may be just what you need to explore this hot topic!

El poder de la Programación de Excel y Visual Basic User Review --->>> Enter Here More Details => VISIT HERE

Software User Guide UG-461

Development Hints and Best Practices for Using Instrument Drivers

Logging. Working with the POCO logging framework.

Using Xbee in Serial Communication

EDK 350 (868 MHz) EDK 350U (902 MHz) EnOcean Developer Kit

Resolving USB Driver Problems

APPLICATION NOTE. Getting Started with pylon and OpenCV

MATLAB Instrument Driver

Using the Motorola Data Collection Solution with MSP

SheevaPlug Development Kit README Rev. 1.2

Troubleshooting Tools to Diagnose or Report a Problem February 23, 2012

Modbus and ION Technology

ALL-USB-RS422/485. User Manual. USB to Serial Converter RS422/485. ALLNET GmbH Computersysteme Alle Rechte vorbehalten

Freescale Semiconductor, I

The Answer to the 14 Most Frequently Asked Modbus Questions

Sending Data from a computer to a microcontroller using a UART (Universal Asynchronous Receiver/Transmitter)

User Manual. 3-Heights PDF Producer API. Version 4.6

Using Logix5000 Controllers as Masters or Slaves on Modbus

FTP Automation Guide

Example Connection between USB Host and Android

Developing applications under CODE COMPOSER STUDIO

Quick Start Guide. Installing. Setting up the equipment

Illustration 1: Diagram of program function and data flow

APPLICATION NOTE. Atmel AVR911: AVR Open Source Programmer. 8-bit Atmel Microcontrollers. Features. Introduction

Contents Models 3500 / 3600 Software & Driver Installation... 1 Install Amplifier Control Panel... 2 Download and Install the Drivers...

Development Hints and Best Practices for Using Instrument Drivers

Disturbance Recoder SPCR 8C27. Product Guide

Experience Next-Generation WiFi

Using IRDB in a Dot Net Project

Getting Started with the Internet Communications Engine

PL-2305 USB-to-Printer Cable Windows 8 Installation Guide

DAS202Tools v1.0.0 for DAS202 Operating Manual

Embest DSO2300 USB Oscilloscope

P300 Spelling Device with g.usbamp and Simulink V Copyright 2012 g.tec medical engineering GmbH

Ethernet Interface Manual Thermal / Label Printer. Rev Metapace T-1. Metapace T-2 Metapace L-1 Metapace L-2

UM0853 User manual. 1 Introduction. M24LRxx application software user guide

Using the VEX Cortex with ROBOTC

USB 3.0 Camera User s Guide

L16. Quectel GNSS Engine. EVB User Guide L16_EVB_UGD_V1.0

MiniPlex-41USB NMEA-0183 multiplexer Manual

The Universal DAQ Device. Connect and measure immediately!

BLUETOOTH SERIAL PORT PROFILE. iwrap APPLICATION NOTE

A DIY Hardware Packet Sniffer

s!nus-elektrotechnikai bt. Industrial IT & Automation

Develop a Dallas 1-Wire Master Using the Z8F1680 Series of MCUs

P&E Microcomputer Systems, Inc. P.O. Box 2044, Woburn, MA 01888, USA

Developing an Application on Core8051s IP-Based Embedded Processor System Using Firmware Catalog Drivers. User s Guide

Using Brainmaster Discovery & Atlantis devices with OpenViBE

T E C H N I C A L B U L L E T I N # 1 1 4

Transcription:

EcgSoft Software Developer s Guide to RestEcg Innovative ECG Software www.ecg-soft.com - e-mail: info@ecg-soft.com

Open Interface This page is intentionally left blank Copyright EcgSoft, October 2012 Page 2

Contents 1. Introduction...4 2. About the Guide...4 3. RestEcg Open Interface Block Diagram...5 4. Creating an OemDeviceLib.dll for your ECG device......6 5. Sample Projects...8 6. AcqDevice Abstract Class...9. Copyright EcgSoft, October 2012 Page 3

EcgViewer User Manual 1. Introduction RestEcg is a real-time 12 channel resting ECG software application. It enables you to monitor, record, review, edit, filter and print ECG signals acquired from any ECG device that implements the Open Interface Access of the RestEcg software. Open Interface Access is the key to the universal usage of the RestEcg with various proprietary ECG devices. Real-time ECG signals from proprietary ECG devices can be acquired if a suitable plug in DLL (Dynamically Linked Library) is created conforming to Open Interface Access. 2. About the Guide This guide will help you create a suitable DLL software for your proprietary ECG device with minimal effort and time on your side. Copyright EcgSoft, July 2010 Page 4

3. RestEcg Open Interface Block Diagram As illustrated in the diagram below, all data transfers to and from RestEcg is realized over the OemDeviceLib.dll. This dll is inherited from the AcqDevice abstract class and implements the methods of the abstract class. Copyright EcgSoft, October 2012 Page 5

4. Creating an OemDeviceLib.dll for your ECG device Each ECG lead data sample is a two bytes signed integer value. RestEcg software acquires the data in a packet of 4 samples at a time. Only 8 independent leads are needed (I,II,V1 to V6). Remaining dependent leads (III, avr, avl, avf) are derived by calculation in RestEcg software. Structure of a single packet declared in C# language syntax is as follows: // first sample of the current data packet short int I; // 2 bytes signed integer short int II; // 2 bytes signed integer short int V1; // 2 bytes signed integer short int V2; // 2 bytes signed integer short int V3; // 2 bytes signed integer short int V4; // 2 bytes signed integer short int V5; // 2 bytes signed integer short int V6; // 2 bytes signed integer // second sample of the current data packet short int I; // 2 bytes signed integer short int II; // 2 bytes signed integer short int V1; // 2 bytes signed integer short int V2; // 2 bytes signed integer short int V3; // 2 bytes signed integer short int V4; // 2 bytes signed integer short int V5; // 2 bytes signed integer short int V6; // 2 bytes signed integer // third sample of the current data packet short int I; // 2 bytes signed integer short int II; // 2 bytes signed integer short int V1; // 2 bytes signed integer short int V2; // 2 bytes signed integer short int V3; // 2 bytes signed integer short int V4; // 2 bytes signed integer short int V5; // 2 bytes signed integer short int V6; // 2 bytes signed integer Copyright EcgSoft, October 2012 Page 6

// fourth sample of the current data packet short int I; // 2 bytes signed integer short int II; // 2 bytes signed integer short int V1; // 2 bytes signed integer short int V2; // 2 bytes signed integer short int V3; // 2 bytes signed integer short int V4; // 2 bytes signed integer short int V5; // 2 bytes signed integer short int V6; // 2 bytes signed integer RestEcg assumes that a 1 mv ECG signal at the input of the patient cable is represented by the number 5464. (ADU value) If your device represents 1 mv by X value, then for scaling purposes, you need to multiply your data by the scaling factor ( 5464/X ) for proper amplitude calibration. Default sampling rate of the RestEcg is 1000 samples per second. If your device has a different sampling rate, you need to downsize or upsize your sampling rate accordingly. To create the OemDeviceLib.dll, you need to implement these steps in Visual Studio: 1. Create a new class library solution and name both the solution and project as OemDeviceLib. 2. Create a new class which is named OemDevice and add using EcgSoftLib; statement to use EcgsoftLib.dll in the project. 3. In the Solution Explorer -> OemDeviceLib->references, add EcgsoftLib.dll reference to the project. This dll resides in the application folder of RestEcg at the..\programfiles\ecgsoft\restecg path. 4. Let OemDevice class Inherit from the AcqDevice abstract class as public class OemDevice : AcqDevice 5. Implement the methods of AcqDevice abstract class in the OemDevice as related to your ECG device. Only two methods, InitDevice and GetData methods needs to be implemented. Rest is optional.methods which must be implemented by the derived class are named abstract. Methods which already have default implementations in base class are named virtual. 6. Compile the solution and copy the OemDeviceLib.dll into the application folder of RestEcg at..\programfiles\ecgsoft\restecg 7. Finally, as shown below, select from RestEcg -> Setup-> General-> Acqusition Device- >OEM Device option so that RestEcg would use your proprietary ECG device implementation as the default acquisition device. Copyright EcgSoft, October 2012 Page 7

4. Sample Projects There are two sample projects that can be downloaded from the www.ecg-soft.com\restecg web site which illustrates the creation of OemDeviceLib.dll. Project 1 Folder: OemDeviceLib-demo.bin-Net4.0-VS2010-Sample-Solution In this project you will be able acquire real-time data from a demo.bin ECG file. This binary ECG file will act as an OEM ECG device sending data to RestEcg application. Demo.bin ECG file should be copied to application executable path. Project 2 Folder: OemDeviceLib-generic-usb-Net4.0-VS2010-Sample-Solution In this project you will be able acquire real-time data from an OEM ECG device via the USB port. Uses LibUsbDotNet.dll library which is a wrapper for the Open Source general purpose "libusbwin32" USB driver. It is assumed that firmware side is implemented on the ECG device. Copyright EcgSoft, October 2012 Page 8

5. AcqDevice Abstract Class Implementing the abstract class enables RestEcg application to acquire data from a proprietary ECG device in real-time. Below is the C# code for the abstract class: Only two methods InitDevice and GetData methods needs to be implemented. Rest is optional. using System; namespace EcgSoftLib <summary> AcqDevice is an abstract base class which defines standart interface for ECG signal acqusition devices such as USB,demo file, etc. </summary> <remarks> Methods which must be implemented by the derived class are named abstract. Methods which already have default implementations in base class are named virtual. <para> use override in the derived class to implement these methods </para> </remarks> public abstract class AcqDevice <summary> Constructor </summary> public AcqDevice() <summary> Find number of devices attached and initialize the first device </summary> <returns>number of devices attached</returns> abstract public int InitDevice(); <summary>get signal data</summary> <param name="samplesize">number of samples received </param> <param name="buffer">array to store data</param> <returns>true if succesfull</returns> abstract public bool GetData(ref int samplesize, short[] buffer); <summary> Set sampling rate in Hz </summary> <param name="freq">frequency in Hz</param> <returns>true if succesfull</returns> public virtual bool SetSamplingRate(int freq) Copyright EcgSoft, October 2012 Page 9

<summary>sets number of channels to be converted </summary> <param name="chn">number of channels</param> <returns>true if succesfull</returns> public virtual bool SetNumberOfChannels(int chn) <summary>sets the data buffer size at the device side </summary> <param name="size">buffer size in bytes</param> <returns>true if succesfull</returns> public virtual bool SetDeviceBufferSize(int size) <summary>gets the 32 bit serial number of device</summary> <returns>32 bit serial number</returns> public virtual int GetSerialNo() return -1; // i.e no serial number by default <summary>gets error code</summary> <param name="data">single byte error code</param> <returns>true if succesfull</returns> public virtual bool GetErrorCode(ref byte data) <summary>turn on device</summary> <returns>true if succesfull</returns> public virtual bool TurnOn() <summary>turn off device or part of device(i.e isolated section) </summary> <returns>true if succesfull</returns> public virtual bool TurnOff() Copyright EcgSoft, October 2012 Page 10