< All Topics
Print

Troubleshooting Guide: Medical Analyzer Serial Communication in Yoctobe Medical Instrument Middleware

Table of Contents

This comprehensive guide addresses common issues when connecting medical analyzers via RS232/serial ports to Yoctobe Medical Instrument Middleware. Follow these detailed steps to diagnose and resolve communication problems with laboratory instruments using ASTM protocol.

Problem Description

Issue: Failure to receive ASTM protocol messages from medical analyzers (such as PC400) via RS232 serial port in Yoctobe Medical Instrument Middleware.

Common Symptoms:

  • Serial port (/dev/ttyS0) is visible and accessible
  • Yoctobe Medical Instrument Middleware flow nodes are properly configured
  • Basic port permissions are correct (user added to dialout group)
  • No data appears in the middleware interface despite analyzer being properly connected

Root Cause Analysis

The primary issue relates to improper handling of ASTM protocol control characters and message framing. Medical analyzers send messages with specific control characters (ENQ, STX, ETX, etc.) which require special handling in Yoctobe Medical Instrument Middleware to be properly interpreted and processed.

Step-by-Step Troubleshooting Procedure

1. Verify Physical Connection and Port Accessibility

# Check if the serial port exists
ls -la /dev/ttyS0

# Verify current port settings
stty -F /dev/ttyS0 -a

# Check if the user has proper permissions (should be in dialout group)
groups

2. Confirm Analyzer Configuration Settings

Verify the analyzer’s serial port configuration matches your Yoctobe Medical Instrument Middleware settings:

  • Baud Rate: 9600
  • Data Bits: 8
  • Parity: None
  • Stop Bits: 1
  • Flow Control: XON/XOFF or None (matching on both sides)

Important: Many analyzers have configuration screens where these settings can be verified. Document these settings for future reference.

3. Test Basic Serial Communication Outside Middleware

Use a terminal utility to test direct communication with the analyzer:

# Install cu utility if not present
apt-get update
apt-get install -y cu

# Connect to the serial port
cu -l /dev/ttyS0 -s 9600

If you see any response (may appear as random characters due to binary control codes), this confirms the port is receiving data from the instrument.

4. Configure Yoctobe Medical Instrument Middleware for ASTM Protocol

a. Set up the Serial Input Node:

  • Port: /dev/ttyS0
  • Baud Rate: 9600
  • Data Bits: 8
  • Parity: None
  • Stop Bits: 1
  • Flow Control: Set DTR, RTS, CTS, DSR all to “none”
  • Split input: “a stream of single characters”
  • and deliver: “binary buffers”

b. Create a Debug Flow to Visualize Control Characters:

  1. Add a function node with the following code to translate binary control characters into readable form:
// Convert buffer to readable hex and control characters
const buf = msg.payload;
let output = "";

if (Buffer.isBuffer(buf)) {
    const byte = buf[0];
    output = `Hex: 0x${byte.toString(16).padStart(2, '0')} `;
    
    // Add friendly name for control characters
    if (byte === 0x05) output += "(ENQ)";
    else if (byte === 0x06) output += "(ACK)";
    else if (byte === 0x02) output += "(STX)";
    else if (byte === 0x03) output += "(ETX)";
    else if (byte === 0x04) output += "(EOT)";
    else if (byte === 0x11) output += "(XON/DC1)";
    else if (byte === 0x13) output += "(XOFF/DC3)";
    else if (byte === 0x0D) output += "(CR)";
    else if (byte === 0x0A) output += "(LF)";
    else if (byte >= 32 && byte <= 126) output += `(ASCII: ${String.fromCharCode(byte)})`;
}

msg.payload = output;
return msg;
  1. Connect this to a debug node to monitor each character as it arrives from the analyzer

5. Basic ASTM Protocol Response Handler

For basic ASTM protocol handling, implement a simple response function node:

// Simple ASTM ENQ/ACK handler
if (Buffer.isBuffer(msg.payload)) {
    const byte = msg.payload[0];
    
    // If ENQ is received, respond with ACK
    if (byte === 0x05) { // ENQ
        // Send ACK response on second output
        node.send([null, {payload: Buffer.from([0x06])}]);
    }
}
return msg;

6. Set up ACK Response Mechanism

To properly respond to the analyzer with acknowledgements:

  1. Add a “serial out” node connected to the same serial port
  2. Connect it to the second output of your function node
  3. This will automatically send ACK (0x06) responses when the analyzer sends ENQ (0x05)

7. Optimize Serial Port Settings for ASTM Protocol

# Set optimal serial port parameters for ASTM
stty -F /dev/ttyS0 9600 cs8 -parenb -cstopb -ixon -ixoff -icanon -echo

This disables flow control and canonical mode, which improves handling of binary data from medical instruments.

Simple Diagnostic Flow

Create a basic diagnostic flow for serial communication:

  1. Serial In NodeFunction Node (Character Converter)Debug Node
  2. Serial In NodeFunction Node (ENQ/ACK Handler)Debug Node
  3. Function Node (ENQ/ACK Handler) (2nd output) → Serial Out Node

This simple setup will:

  • Display all incoming characters from the analyzer
  • Convert control characters to readable text
  • Automatically respond with ACK when receiving ENQ
  • Allow you to confirm basic communication is working

Common Issues and Solutions

Problem Possible Causes Solution
No data received Serial port misconfiguration
Permission issues
Flow control mismatch
Incorrect baud rate
Configure serial port for “stream of single characters” and “binary buffers” mode
Ensure user is in the dialout group
Disable XON/XOFF on both analyzer and serial port settings
Verify baud rate matches analyzer setting exactly
Analyzer stops sending data Missing ACK responses
Flow control backpressure
Implement proper ENQ/ACK response mechanism
Disable flow control with stty -ixon -ixoff
Random characters appearing Binary data misinterpretation Use buffer mode and proper control character handling

Verification Process

After implementing the solution, verify success by checking:

  1. Control characters (ENQ, STX, ETX, etc.) should appear in your debug output
  2. The analyzer should continue sending data after receiving ACK responses

Example of properly received ASTM control characters:

Hex: 0x05 (ENQ)
Hex: 0x02 (STX)
Hex: 0x31 (ASCII: 1)
Hex: 0x48 (ASCII: H)
...

Best Practices for Medical Instrument Integration

  1. Always configure serial nodes to handle binary data properly for medical devices
  2. Document analyzer-specific settings for future reference
  3. Implement proper request/response mechanisms required by the protocol
  4. Use debugging tools to visualize binary data during troubleshooting
  5. Start with basic control character visualization before implementing complex parsing

References

  • ASTM E1394 standard for medical device communications
  • Yoctobe Medical Instrument Middleware documentation
  • ASTM protocol control characters reference:
    • ENQ (0x05): Enquiry – begins communication
    • STX (0x02): Start of Text – begins message frame
    • ETX (0x03): End of Text – ends message frame
    • EOT (0x04): End of Transmission – ends entire message
    • ACK (0x06): Acknowledge – positive response
    • NAK (0x15): Negative Acknowledge – error response

Following this troubleshooting guide will help you quickly identify and resolve issues with medical analyzer communications in Yoctobe Medical Instrument Middleware environments. Starting with basic character visualization and acknowledgment handling allows you to confirm communication is working before implementing more complex ASTM protocol parsing.

Tags: