Storing Readings in
Shared Memory - SICL
Example
Comments
1.Because of the E1410 multimeter data storage format (eight bytes / reading), the readings are transferred from shared memory to the PC in bytes. Therefore, it is necessary to swap each byte in order to
2.This manual is included on the HP I_O Libraries CD. By viewing the manual from the CD, you can cut and paste this program into your development environment.
This example uses the HP E1410 VXIplug&play driver to configure the multimeter, take the readings, and store them in E8491A shared memory. SICL functions are used to transfer the readings from shared memory to the PC.
//SHAR_SICL.CPP - This program demonstrates how to access the
//HP E8491A’s shared memory. The program stores readings taken by
//the HP E1410 multimeter in HP E8491A shared memory, and then
//transfers those readings from shared memory to the computer.
#include "sicl.h" #include <stdio.h> #include <stdlib.h> #include <windows.h>
//project files: SHAR_SICL.cpp, SICL32.lib
//set up byte swap function for readings transferred from
//E8491A shared memory to the PC
#define SWAP_FLOAT64(rdgs) \ |
| |
{ unsigned char src[8]; | \ | |
*((double *)src) = | *((double *)rdgs); | \ |
((unsigned char *) | (rdgs))[0] = ((unsigned | char*) (src))[7]; \ |
((unsigned char *) | (rdgs))[1] = ((unsigned | char*) (src))[6]; \ |
((unsigned char *) | (rdgs))[2] = ((unsigned | char*) (src))[5]; \ |
((unsigned char *) | (rdgs))[3] = ((unsigned | char*) (src))[4]; \ |
((unsigned char *) | (rdgs))[4] = ((unsigned | char*) (src))[3]; \ |
((unsigned char *) | (rdgs))[5] = ((unsigned | char*) (src))[2]; \ |
((unsigned char *) | (rdgs))[6] = ((unsigned | char*) (src))[1]; \ |
((unsigned char *) | (rdgs))[7] = ((unsigned | char*) (src))[0]; \ |
} |
|
|
void main(void) |
|
|
{ |
|
|
INST e8491; | // handle for SICL | session to E8491 |
INST e1410; | // handle for SICL | session to E1410 |
struct vxiinfo info; | // structure | for data returned | by | ivxirminfo | ||
unsigned long start_addr; | // starting address of shared | memory | ||||
double rdgs[8000]; |
| // | array | for readings from | shared memory | |
short i; |
|
|
|
|
|
|
unsigned long map; |
| // | memory map space |
|
|
54 VXI Programming Using the IEEE 1394 Serial Bus | Chapter 3 |