ACCES I/O 104-COM232-8 User Manual
Models: 104-COM232-8 (8, 4, or 2 Ports)
Manufacturer: ACCES I/O Products, Inc.
Address: 10623 Roselle Street, San Diego, CA 92121
Contact: Phone: (858) 550-9559 | Fax: (858) 550-7322 | Email: contactus@accesio.com | Website: www.accesio.com
File Reference: M104-COM232-8.B2j
Notice
The information in this document is provided for reference only. ACCES does not assume any liability arising out of the application or use of the information or products described herein. This document may contain or reference information and products protected by copyrights or patents and does not convey any license under the patent rights of ACCES, nor the rights of others.
IBM PC, PC/XT, and PC/AT are registered trademarks of the International Business Machines Corporation.
Printed in USA. Copyright 2003, 2005 by ACCES I/O Products, Inc. 10623 Roselle Street, San Diego, CA 92121. All rights reserved.
WARNING!!
ALWAYS CONNECT AND DISCONNECT YOUR FIELD CABLING WITH THE COMPUTER POWER OFF. ALWAYS TURN COMPUTER POWER OFF BEFORE INSTALLING A BOARD. CONNECTING AND DISCONNECTING CABLES, OR INSTALLING BOARDS INTO A SYSTEM WITH THE COMPUTER OR FIELD POWER ON MAY CAUSE DAMAGE TO THE I/O BOARD AND WILL VOID ALL WARRANTIES, IMPLIED OR EXPRESSED.
Warranty
Prior to shipment, ACCES equipment is thoroughly inspected and tested to applicable specifications. However, should equipment failure occur, ACCES assures its customers that prompt service and support will be available. All equipment originally manufactured by ACCES which is found to be defective will be repaired or replaced subject to the following considerations.
Terms and Conditions
If a unit is suspected of failure, contact ACCES' Customer Service department. Be prepared to give the unit model number, serial number, and a description of the failure symptom(s). ACCES may suggest some simple tests to confirm the failure. ACCES will assign a Return Material Authorization (RMA) number which must appear on the outer label of the return package. All units/components should be properly packed for handling and returned with freight prepaid to the ACCES designated Service Center, and will be returned to the customer's/user's site freight prepaid and invoiced.
Coverage
First Three Years: Returned unit/part will be repaired and/or replaced at ACCES option with no charge for labor or parts not excluded by warranty. Warranty commences with equipment shipment.
Following Years: Throughout your equipment's lifetime, ACCES stands ready to provide on-site or in-plant service at reasonable rates similar to those of other manufacturers in the industry.
Equipment Not Manufactured by ACCES
Equipment provided but not manufactured by ACCES is warranted and will be repaired according to the terms and conditions of the respective equipment manufacturer's warranty.
General
Under this Warranty, liability of ACCES is limited to replacing, repairing or issuing credit (at ACCES discretion) for any products which are proved to be defective during the warranty period. In no case is ACCES liable for consequential or special damage arising from use or misuse of its product. The customer is responsible for all charges caused by modifications or additions to ACCES equipment not approved in writing by ACCES or, if in ACCES opinion the equipment has been subjected to abnormal use. "Abnormal use" for purposes of this warranty is defined as any use to which the equipment is exposed other than that use specified or intended as evidenced by purchase or sales representation. Other than the above, no other warranty, expressed or implied, shall apply to any and all such equipment furnished or sold by ACCES.
Chapter 1: FUNCTIONAL DESCRIPTION
This serial interface board contains either eight, four, or two independent ports and provides effective RS-232 communication. The boards are designed in the PC/104 format. Their dimensions are approximately 3.775 inches X 3.550 inches. Signal connections are made on the eight-port model through two 40-pin connectors, mounted on the edges of the board; four-port models connect through only one 40-pin header, and two-port models connect through only one 20-pin header.
IRQ SUPPORT
The board supports the use of IRQ resources and includes an on-board IRQ status register for use with operating systems that support this feature, such as Microsoft's Windows NT. The status register is located at an address of the COM A address + 400H.
Block Diagram
Figure 1-1: BLOCK DIAGRAM (Only one serial channel shown)
This diagram illustrates the internal components of a single serial channel. It shows the PC/104 BUS connecting to ADDRESS DECODE LOGIC, which interfaces with a DATA BUFFER. The DATA BUFFER is connected to a UART (contained in UART chip with AUTO-RTS circuitry). The UART is connected to a BAUD RATE GENERATOR and a CRYSTAL OSCILLATOR. The UART also outputs an IRQ SIGNAL. The output of the UART connects to a TRANSCEIVER, which then connects to a 40 PIN HEADER.
Chapter 2: INSTALLATION
A printed Quick-Start Guide (QSG) is packed with the board for your convenience. If you've already performed the steps from the QSG, you may find this chapter to be redundant and may skip forward to begin developing your application.
The software provided with this PC/104 Board is on CD and must be installed onto your hard disk prior to use. To do this, perform the following steps as appropriate for your operating system.
CD Installation
The following instructions assume the CD-ROM drive is drive "D". Please substitute the appropriate drive letter for your system as necessary.
DOS
- Place the CD into your CD-ROM drive.
- Type
D:
to change the active drive to the CD-ROM drive. - Type
INSTA
to run the install program. - Follow the on-screen prompts to install the software for this board.
WINDOWS
- Place the CD into your CD-ROM drive.
- The system should automatically run the install program. If the install program does not run promptly, click START | RUN and type
D:\INSTA
, click OK or press Enter. - Follow the on-screen prompts to install the software for this board.
LINUX
- Please refer to
linux.htm
on the CD-ROM for information on installing serial ports under Linux.
Installing the Hardware
Before installing the board, carefully read Chapter 3 and Chapter 4 of this manual and configure the board according to your requirements. The SETUP Program can be used to assist in configuring jumpers on the board. Be especially careful with Address Selection. If the addresses of two installed functions overlap, you will experience unpredictable computer behavior. To help avoid this problem, refer to the FINDBASE.EXE program installed from the CD. The setup program does not set the options on the board; these must be set by jumpers.
This multi-port serial communication board uses software-programmable address ranges for each UART, stored in an onboard EEPROM. Configure the address of the EEPROM using the onboard Address Selection jumper block, then use the provided Setup program to configure addresses for each onboard UART.
To Install the Board
- Install jumpers for selected options and base address according to your application requirements, as mentioned above.
- Remove power from the PC/104 stack.
- Assemble standoff hardware for stacking and securing the boards.
- Carefully plug the board onto the PC/104 connector on the CPU or onto the stack, ensuring proper alignment of the pins before completely seating the connectors together.
- Install I/O cables onto the board's I/O connectors and proceed to secure the stack together or repeat steps 3-5 until all boards are installed using the selected mounting hardware.
- Check that all connections in your PC/104 stack are correct and secure, then power up the system.
- Run one of the provided sample programs appropriate for your operating system that was installed from the CD to test and validate your installation.
Installing COM Ports in Windows Operating Systems
*NOTE: COM boards can be installed in virtually any operating system and ACCES supports installation in earlier versions of Windows, and is very likely to support future versions as well. For use in WinCE, contact the factory for specific instructions.
Windows NT4.0
To install the COM ports in Windows NT4, you'll need to change one entry in the registry. This entry enables IRQ sharing on multi-port COM boards. The key is HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serial\
. The name of the value is PermitShare
and the data should be set to 1
.
You'll then add the board's ports as COM ports, setting the base addresses and IRQs to match your board's settings.
To change the registry value, run RegEdit
from the START|RUN menu option (by typing REGEDIT
[ENTER] in the space provided). Navigate down the tree view on the left to find the key, and double click on the name of the value to open a dialog allowing you to set the new data value.
Windows XP
To install the COM ports in Windows XP, you will be manually installing "standard" communications ports, then changing the settings for resources used by the ports to match the hardware. Run the "Add Hardware" applet from the Control Panel.
- Click "Next" at the "Welcome to the Add New Hardware Wizard" dialog.
- You'll briefly see a "...searching..." message, then select "Yes, I have already connected the hardware" and Click "Next".
- Select "Add a new hardware device" from the bottom of the list presented and Click "Next."
- Select "Install the hardware that I manually select from a list" and Click "Next."
- Select "Ports (COM & LPT)" and Click "Next".
- Select "(Standard Port Types)" and "Communications Port" (the defaults), Click "Next."
- Click "Next."
After the wizard completes the initial installation, click the "View or change resources for this hardware (Advanced)" link.
In the "Add Hardware Wizard Properties" window, click the "Set Configuration Manually" button.
Select "Basic Configuration 8" from the "Settings Based on:" drop-down list.
Select "I/O Range" in the "Resource Settings" box and Click the "Change Settings..." button. Enter the base address of the board, and Click "OK".
Select "IRQ" in the "Resource Settings" box and Click the "Change Settings" button. Enter the IRQ of the board and Click "OK".
Close the "Set Configuration Manually" dialog and Click "Finish." Click "Do Not Reboot" if you wish to install more ports. Repeat all of the above steps, entering the same IRQ but using the configured Base address for each additional UART. When you are done installing ports, reboot the system normally.
Chapter 3: OPTION SELECTION
Figure 3-1: Option Selection Map
To help you locate the jumpers described in this section, refer to the Option Selection Map above. Operation of the serial communications section is determined by jumper installation as described in the following paragraphs.
DATA CABLE WIRING
The following connections are used to communicate between two ports (usually on different devices):
Mode | Cable Pins | ||
---|---|---|---|
Port 1 | Port 2 | ||
RX | to | TX | |
RS-232 | TX | to | RX |
Ground | to | Ground |
INTERRUPTS
The board supports interrupt levels 2, 3, 5, 7, 10, and 11 (Except those reserved by other installed hardware). The same interrupt is used for all channels; it must be entered into the interrupt location in the EEPROM.
Chapter 4: ADDRESS SELECTION
The board uses a control block base address, and each port has its own base address. Each base address can be selected anywhere within an I/O address range 100-3F8 hex, providing that the address does not overlap with other functions. If in doubt, refer to the table below for a list of standard address assignments. (The primary and secondary binary synchronous communication ports are supported by the Operating System.) The FINDBASE base address locator program provided with your board will assist you to select a base address that will avoid this conflict.
Table 4-1: Standard Address Assignments for Computers
HEX RANGE | USAGE |
---|---|
000-00F | 8237 DMA Controller 1 |
020-021 | 8259 Interrupt |
040-043 | 8253 Timer |
060-06F | 8042 Keyboard Controller |
070-07F | CMOS RAM, NMI Mask Reg, RT Clock |
080-09F | DMA Page Register |
0A0-0BF | 8259 Slave Interrupt Controller |
0C0-0DF | 8237 DMA Controller 2 |
0F0-0F1 | Math Coprocessor |
0F8-0FF | Math Coprocessor |
170-177 | Fixed Disk Controller 2 |
1F0-1F8 | Fixed Disk Controller 1 |
200-207 | Game Port |
238-23B | Bus Mouse |
23C-23F | Alt. Bus Mouse |
278-27F | Parallel Printer |
2B0-2BF | EGA |
2C0-2CF | EGA |
2D0-2DF | EGA |
2E0-2E7 | GPIB (AT) |
2E8-2EF | Serial Port |
2F8-2FF | Serial Port |
300-30F | reserved |
310-31F | reserved |
320-32F | Hard Disk (XT) |
370-377 | Floppy Controller 2 |
378-37F | Parallel Printer |
380-38F | SDLC |
3A0-3AF | SDLC |
3B0-3BB | MDA |
3BC-3BF | Parallel Printer |
3C0-3CF | VGA EGA |
3D0-3DF | CGA |
3E8-3EF | Serial Port |
3F0-3F7 | Floppy Controller 1 |
3F8-3FF | Serial Port |
The address jumpers determine the address of the control block; the addresses and interrupts of the ports are taken from the onboard EEPROM. The interrupt sharing register (mainly used in NT4) is referenced to the address of Channel A.
The address bytes entered into the EEPROM represent address lines A9 thru A3. The easiest way to determine the byte to write for a desired address is to divide the address by 8. For instance, a base address of 300 would be 300/8 = 60, an address of 308/8 = 61, and so on. (All addresses are in hex.)
ADDRESS JUMPERS
1st Digit | 2nd Digit | |||||||
---|---|---|---|---|---|---|---|---|
Jumper Label | A9 | A8 | A7 | A6 | A5 | A4 | ||
Address Line Controlled | A9 | A8 | A7 | A6 | A5 | A4 | ||
Hexadecimal Value | 200 | 100 | 80 | 40 | 20 | 10 |
In order to read the address jumper setup, assign a binary "1" to jumpers that are not installed and a binary "0" to jumpers installed. For example, as illustrated in the following table, jumper selection corresponds to binary 10 0000 xxxx (hex 200). The "xxx" represents address lines A3, A2, A1, and A0 used on the board to select individual registers, as described in the PROGRAMMING section of this manual.
EXAMPLE ADDRESS SETUP
Jumper Label | A9 | A8 | A7 | A6 | A5 | A4 |
---|---|---|---|---|---|---|
Conversion Factors | 2 | 1 | 8 | 4 | 2 | 1 |
Jumper Installed | NO | YES | YES | YES | YES | YES |
Binary Representation | 1 | 0 | 0 | 0 | 0 | 0 |
Hex Representation | 2 | 0 |
Review the ADDRESS SELECTION TABLE carefully before selecting the board address. If the addresses of two installed functions overlap, you will experience unpredictable computer behavior.
Chapter 5: PROGRAMMING
The port addresses and IRQs are selected by software through a control block; the base address of the control block is selected by jumpers. The functions within the control block are shown in the control block register map below.
Control Block Register Map
Address | Read Function | Write Function |
---|---|---|
Base Address + 0 | -- | Enable IRQs |
Base Address + 1 | -- | EEPROM Address |
Base Address + 2 | -- | EEPROM Data |
Base Address + 3 | -- | Load EEPROM To Registers |
Notes:
- Once the EEPROM has been loaded, its data will be automatically transferred to the appropriate registers on power up. Therefore, it should normally only be necessary to issue the load to registers command when the data has been changed and it is desired to use the board without rebooting.
- The IRQs are normally enabled when the first write to any UART occurs. It is not normally necessary to issue an enable IRQ command when using the board.
The addresses and IRQs of the ports are loaded from an EEPROM on the board. In addition to automatically loading them at power-on, they can be loaded by software by a write to the control block. The addresses and interrupts are stored in the EEPROM as shown on the EEPROM address map below.
EEPROM Address Map
EEPROM Address | EEPROM Data Meaning |
---|---|
1 | Address for Channel A |
2 | Address for Channel B |
3 | Address for Channel C |
4 | Address for Channel D |
5 | Address for Channel E (-8 Only) |
6 | Address for Channel F (-8 Only) |
7 | Address for Channel G (-8 Only) |
8 | Address for Channel H (-8 Only) |
9 | IRQ for Channel A |
A | IRQ for Channel B |
B | IRQ for Channel C |
C | IRQ for Channel D |
D | IRQ for Channels E,F,G,H (-8 Only) |
As mentioned elsewhere, the addresses entered represent A3 - A9. Therefore, the data entered is the desired address, divided by 8.
The IRQ entry is the number of the desired IRQ.
When the board is first installed in a system, the ports are not necessarily at unused addresses. To prevent conflicts with other devices in the system, the board has a jumper that disables the ports, next to the base address jumpers and labeled "DF". The control block remains enabled in this mode, allowing software to set the port addresses appropriately. When the DF jumper is then removed, the ports will then be at the configured addresses.
To write data to the EEPROM, first write the address to the EEPROM Address register, then write to or read from the EEPROM Data register. The data transfer inside the board takes 2 milliseconds, during which the board should not be accessed. For example, to set Channel A to address 3F8, IRQ 5, with the control block base address set to 200 (by jumpers):
Write 01 to 201.
Write 7F to 202.
Wait 2ms.
Write 09 to 201.
Write 05 to 202.
Wait 2ms.
Then write anything to 203 to start using these values.
All data may be entered into the EEPROM and then written to the appropriate registers with a single write to base address + 3.
SAMPLE PROGRAMS
Sample programs are installed with the CD that ships with the board. See the CD for details.
INITIALIZATION
Initializing the chip requires knowledge of the UART's register set. The first step is to set the baud rate divisor. You do this by first setting the DLAB (Divisor Latch Access Bit) high. This bit is Bit 7 at Base Address +3. In C code, the call would be:
outportb(BASEADDR +3,0x80);
You then load the divisor into Base Address +0 (low byte) and Base Address +1 (high byte). The following equation defines the relationship between baud rate and divisor:
desired baud rate = (clock frequency) / (16 * divisor)
BAUD RATE DIVISOR VALUES
Clock frequencies of 1.8432 MHz (Standard) and 14.7456 MHz (X8) are provided. Below is a table for the popular divisor frequencies:
Baud Rate | Divisor (Std) | Divisor (X8) | Notes |
---|---|---|---|
230400 | - | 4 | |
115200 | 1 | 8 | |
57600 | 2 | 16 | |
38400 | 3 | 24 | |
28800 | 4 | 32 | |
19200 | 6 | 48 | |
14400 | 8 | 64 | |
9600 | 12 | 96 | Most Common |
4800 | 24 | 192 | |
2400 | 48 | 384 | |
1200 | 96 | 768 |
* RS-232 communication lines have a maximum length of 50 feet, regardless of speed.
In C, the code to set the chip to 9600 baud is:
outportb(BASEADDR, 0x0C); outportb(BASEADDR +1,0);
The second initializing step is to set the Line Control Register at Base Address +3. This register defines word length, stop bits, parity, and the DLAB.
Bits 0 and 1 control word length and allow word lengths from 5 to 8 bits. Bit settings are extracted by subtracting 5 from the desired word length.
Bit 2 determines the number of stop bits. There can be either one or two stop bits. If Bit 2 is set to 0, there will be one stop bit. If Bit 2 is set to 1, there will be two stop bits.
Bits 3 through 6 control parity and break enable. They are not commonly used for communications and should be set to zeroes.
Bit 7 is the DLAB discussed earlier. It must be set to zero after the divisor is loaded or else there will be no communications.
The C command to set the UART for an 8-bit word, no parity, and one stop bit is:
outportb(BASEADDR +3, 0x03)
The final initialization step is to flush the receiver buffers. You do this with two reads from the receiver buffer at Base Address +0. When done, the UART is ready to use.
RECEPTION
Reception can be handled in two ways: polling and interrupt-driven. When polling, reception is accomplished by constantly reading the Line Status Register at Base Address +5. Bit 0 of this register is set high whenever data are ready to be read from the chip. A simple polling loop must continuously check this bit and read in data as it becomes available. The following code fragment implements a polling loop and uses a value of 13, (ASCII Carriage Return) as an end-of-transmission marker:
do { while (!(inportb(BASEADDR +5) & 1)); /*Wait until data ready*/ data[i++]= inportb(BASEADDR); } while (data[i]!=13); /*Reads the line until null character rec'd*/
Interrupt-driven communications should be used whenever possible and is required for high data rates. Writing an interrupt-driven receiver is not much more complex than writing a polled receiver, but care should be taken when installing or removing your interrupt handler to avoid writing the wrong interrupt, disabling the wrong interrupt, or turning interrupts off for too long a period.
The handler would first read the Interrupt Identification Register at Base Address +2. If the interrupt is for Received Data Available, the handler then reads the data. If no interrupt is pending, control exits the routine. A sample handler, written in C, is as follows:
readback = inportb(BASEADDR +2); if (readback & 4) /*Readback will be set to 4 if data are available*/ data[i++]=inportb(BASEADDR); outportb(0x20,0x20); /*Write EOI to 8259 Interrupt Controller*/ return;
TRANSMISSION
To transmit a string of data, the transmitter must first check Bit 5 of the Line Status Register at Base Address +5. That bit is the transmitter-holding-register-empty flag. If it is high, the transmitter has sent the data. The process of checking the bit until it goes high followed by a write is repeated until no data remains.
The following C code fragment demonstrates this process:
outportb(BASEADDR +4, inportb(BASEADDR +4)|0x02); /*Set RTS bit without altering states of other bits*/ while(data[i]); /*While there is data to send*/ { i++; } while(!(inportb(BASEADDR +5)&0x20)); /*Wait until transmitter is empty*/ outportb(BASEADDR, data[i]); outportb(BASEADDR +4, inportb(BASEADDR +4)&0xFD); /*Reset RTS bit without altering states of other bits*/
Chapter 6: CONNECTOR PIN ASSIGNMENTS
Two popular 40-pin IDC male connectors are used for interfacing to communication lines. Optionally, a cable is available to allow the 40-pin Header to be split into four, 9-pin Male connectors.
The pins are numbered on each connector as shown:
Connector P2 (4- and 8-port boards)
Pin | Ch | Function | Pin | Ch | Function |
---|---|---|---|---|---|
1 | A | CD | 21 | C | CD |
2 | A | DSR | 22 | C | DSR |
3 | A | RX | 23 | C | RX |
4 | A | RTS | 24 | C | RTS |
5 | A | TX | 25 | C | TX |
6 | A | CTS | 26 | C | CTS |
7 | A | DTR | 27 | C | DTR |
8 | A | RI | 28 | C | RI |
9 | A | Ground | 29 | C | Ground |
10 | 30 | ||||
11 | B | CD | 31 | D | CD |
12 | B | DSR | 32 | D | DSR |
13 | B | RX | 33 | D | RX |
14 | B | RTS | 34 | D | RTS |
15 | B | TX | 35 | D | TX |
16 | B | CTS | 36 | D | CTS |
17 | B | DTR | 37 | D | DTR |
18 | B | RI | 38 | D | RI |
19 | B | Ground | 39 | D | Ground |
20 | 40 |
Connector P3 (8-port board only)
Pin | Ch | Function | Pin | Ch | Function |
---|---|---|---|---|---|
1 | E | CD | 21 | G | CD |
2 | E | DSR | 22 | G | DSR |
3 | E | RX | 23 | G | RX |
4 | E | RTS | 24 | G | RTS |
5 | E | TX | 25 | G | TX |
6 | E | CTS | 26 | G | CTS |
7 | E | DTR | 27 | G | DTR |
8 | E | RI | 28 | G | RI |
9 | E | Ground | 29 | G | Ground |
10 | 30 | ||||
11 | F | CD | 31 | H | CD |
12 | F | DSR | 32 | H | HSR |
13 | F | RX | 33 | H | RX |
14 | F | RTS | 34 | H | RTS |
15 | F | TX | 35 | H | TX |
16 | F | CTS | 36 | H | CTS |
17 | F | DTR | 37 | H | HTR |
18 | F | RI | 38 | H | RI |
19 | F | Ground | 39 | H | Ground |
20 | 40 |
Chapter 7: SPECIFICATION
COMMUNICATIONS INTERFACE
Number of Ports | Varies by card version (8, 4, or 2) |
Type of Port | RS232 |
Connectors | Two 40-pin connectors are provided on the 8-port board One 40-pin connector is provided on the 4-port board One 20-pin connector is provided on the 2-port board |
Control Signals | DTR, DSR, RTS, CTS, RI, TxD, RxD, CD |
Bus | PC/104, ISA |
UART | 16C654 (8-port board - 16L788) |
Output Driver | Sipex 211E Output Voltage Swing: ±5V Minimum, ±7V Typical Input Voltage Swing: ±15V Receiver Threshold: 2.8V high, 0.8V low, Maximum input ±15V |
Throughput | Individually programmed, up to 230.4 kbps |
I/O Addressing | Each port address is user programmed into an onboard EEPROM Each port uses 8 consecutive addresses |
Interrupts | Interrupts are user programmed into an onboard EEPROM Individual interrupts for ports A-D and common interrupt for ports E-H on 8 channel only |
ENVIRONMENTAL
Operating Temperature Range: | 0 to +60 °C |
Storage Temperature Range: | -50 to +120 °C |
Humidity: | 5% to 95%, non-condensing |
Power Required: | +5 VDC at 400 mA typical, 800 mA maximum (8 channel card) |
Size: | PC/104 format, 3.5" by 3.75" |
Customer Comments
If you experience any problems with this manual or just want to give us some feedback, please email us at: manuals@accesio.com. Please detail any errors you find and include your mailing address so that ACCES can send you any manual updates.
ACCES I/O PRODUCTS, INC.
10623 Roselle Street, San Diego CA 92121
Tel. (858)550-9559 FAX (858)550-7322
www.accesio.com
Assured Systems
Assured Systems is a leading technology company with over 1,500 regular clients in 80 countries, deploying over 85,000 systems to a diverse customer base in 12 years of business. ACCES offers high-quality and innovative rugged computing, display, networking and data collection solutions to the embedded, industrial, and digital-out-of-home market sectors.
US
Email: sales@assured-systems.com
Sales: +1 347 719 4508
Support: +1 347 719 4508
1309 Coffeen Ave
Ste 1200
Sheridan
WY 82801
USA
EMEA
Email: sales@assured-systems.com
Sales: +44 (0)1785 879 050
Support: +44 (0)1785 879 050
Unit A5 Douglas Park
Stone Business Park
Stone
ST15 0YJ
United Kingdom
VAT Number: 120 9546 28
Business Registration Number: 07699660