=====Setting
RX.TPRO 1 Confirmed the RX processed every time TX
processed=====
#seq
sncxxx,"user=mrippa"
epics>
epics>
epics> scanOnce: dbProcess of 'test:RX'
scanOnce: dbProcess of 'test:RX'
scanOnce: dbProcess of 'test:RX'
scanOnce: dbProcess of 'test:RX'
...
===========IOC
A==============
record(aSub,"test:TX")
{
field(INAM,"TxInit")
field(SNAM,"TxTransmit")
field(FTVA,"DOUBLE")
field(NOVA,"10")
field(SCAN,"1 second")
}
static
long TxInit(aSubRecord *precord)
{
srand ( time ( NULL));
if (mySubDebug)
printf("Record %s called myAsubInit(%p)\n",
precord->name, (void*) precord);
return 0;
}
static long TxTransmit(aSubRecord *precord)
{
for (int i=0; i<10; i++)
testArray[i] = (double)rand()/RAND_MAX*2.0-1.0;//float
in range -1 to 1
memcpy(precord->vala, testArray, 10*sizeof(double));
if (mySubDebug)
printf("Record %s called myAsubProcess(%p):
ta10=%f\n",
precord->name, (void*) precord,
testArray[9] );
return 0;
}
===========IOC
B==============
record(aSub,"test:RX")
{
field(SNAM, "receiver")
field(FTA, "DOUBLE")
field(FTVA, "DOUBLE")
field(NOA, "10")
field(NOVA, "10")
field(INPA, "test:TX.VALA CPP NMS")
}
long receiver(aSubRecord *prec)
{
double sum=0.0, *a;
a = (double *)prec->a;
/*sum goes to output valb*/
for(int i=0; i<prec->noa; i++)
sum += a[i];
* (double *) prec->valb = sum;
/*copy input A to output VALA*/
memcpy(prec->vala, (double *)prec->a, 10 *
sizeof(double));
//printf("success: %f\n", sum);
return 0;
}