Owner's manual
Table Of Contents
- Table of Contents
 - Introduction
 - SeaI/O Hardware Description
- SeaI/O Base and Expansion Modules
 - SeaI/O Module Common Features
 - SeaI/O Configurations & Specifications
- 410 Series – 16 Optically Isolated Inputs/16 Reed Relay Outputs
 - 420 Series – 16 Optically Isolated Inputs/8 Form C Outputs
 - 430 Series – 32 Optically Isolated Inputs
 - 440 Series – 32 Reed Relay Outputs
 - 450 Series – 16 Form C Relay Outputs
 - 462 Series – 96 Channel TTL DB-78
 - 463 Series – 96 Channel TTL 50-Pin
 - 470 Series – 16 A/D, 2 D/A, 8 24V Outputs, 8 Isolated Inputs
 - 520 Series – 8 Optically Isolated Inputs/8 High-Current Form C Outputs
 
 
 - Power Options
 - Hardware Configuration
 - Wiring Options
 - Mounting Options
 - Accessories
 - SeaMAX Application Suite
- SeaI/O Architecture
 - Device Address Configuration
 - Configuring the “Base” SeaI/O Module
 - Configuring N-Series Expansion Modules
 - Configuring an Ethernet Module (E-Series)
 - MaxSSD Configuration & Diagnostics Utility
 - Communicating Via Modbus
 - Extended Modbus Command Set
 - Developing Custom Applications Using SeaMAX API
 - SeaMAX API
 - Non Object-Oriented SeaMAX API
 - IOCTL Calls and Functionality
 - Using SeaMAX with Visual C++ 6.0
 - Using SeaMAX with Visual Basic 6.0
 - Example SeaMAX Programming Tasks
 
 - CEthernet API
 - Appendix A – Data Encoding Tables
 - Appendix B – CRC Calculation
 - Appendix C – SeaIO Model 462/463 Holding Register Set
 - Appendix D – SeaMAX Data Types and Structures
 - Appendix E – Troubleshooting
 - Appendix F – How To Get Assistance
 - Appendix G – Compliance Notices
 - Warranty
 

© Sealevel Systems, Inc. 
- 96 - 
SeaI/O User Manual 
Appendix B – CRC Calculation 
To further illustrate the example shown in the CRC-16 section, the algorithm for 
generating the CRC-16 is shown below. 
unsigned short calc_crc(int n,unsigned char *outbound_message) 
{ 
  unsigned char carry_flag; 
  unsigned short crc=0xFFFF; 
  for (int i = 0; i < n; i++) 
 { 
    crc = crc ^ outbound_message[i]; 
    for (int j = 0; j < 8; j++) 
 { 
      carry_flag = crc & 0x01; 
      crc = crc >> 1; 
      if (carry_flag == 1) 
  { 
        crc = crc ^ 0xA001; 
  } 
 } 
 } 
 return crc; 
} 










