EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: PvData , PvAccess, Confusion with different hardware architectures
From: Michael Davidsaver via Tech-talk <[email protected]>
To: Heinz Junkes <[email protected]>
Cc: tech-talk <[email protected]>
Date: Wed, 3 Apr 2019 10:14:18 -0700
> It’s because “long val”:

oops.  For powerpc32 plain 'long' doesn't map to one of the store-able types.
'pvd::int32' is an alias for 'int' and 'pvd::int64' is 'long long'.

(It's a pity that c++ doesn't have a portable way to make this error clearer)

Casting to double should do the trick.  (or pvd::int32 or pvd::int64)

>>>                .set("counter", double(val))


> With the p4p server my client always crashed.

Progress!  (of a sort)

> I have now inserted a byte array. This looks good on both sides. I still suspect some problem with "pointer arithmetic" or something similar.

I agree.  The question is where.


On 4/3/19 9:39 AM, Heinz Junkes wrote:
> 
> 
>> On 2. Apr 2019, at 18:06, Michael Davidsaver <[email protected] <mailto:[email protected]>> wrote:
>>
>> Could you try replacing your client code with something based on the following?
>>
>>> #include <pv/pvData.h>
>>> #include <pva/client.h>
>>> namespace pvd = epics::pvData;
>>> struct Example {
>>>    pvac::ClientProvider ctxt;
>>>    pvac::ClientChannel chan;
>>>
>>>    Example()
>>>        :ctxt("pva")
>>>        ,chan(ctxt.connect("CRYVISIL:STM:FASTSCAN:IMAGE_CHUNK"))
>>>    {}
>>>
>>>    void put(long val) {
>>>        pvd::shared_vector<double> X, Y, Z, T;
>>>
>>>        for(long i=0; i<100; i++)
>>>            X.push_back(i);
>>>
>>>        for(long i=0; i<100; i++)
>>>            Y.push_back(i+1);
>>>
>>>        for(long i=0; i<100; i++)
>>>            Z.push_back(i+2);
>>>
>>>        for(long i=0; i<100; i++)
>>>            T.push_back(i+3);
>>>
>>>        chan.put()
>>>                .set("value.column0", pvd::freeze(X))
>>>                .set("value.column1", pvd::freeze(Y))
>>>                .set("value.column2", pvd::freeze(Z))
>>>                .set("value.column3", pvd::freeze(T))
>>>                .set("counter", val)
>>>                .exec();
>>>
>>>        std::cout<<chan.get();
>>>    }    
>>> };
> 
> This code can not be compiled:
> 
> /Users/junkes/RTEMS_POST_AUSTRALIA/RTEMS/rtems-5/bin/powerpc-rtems5-g++ -B/Users/junkes/RTEMS_POST_AUSTRALIA/RTEMS/rtems-5/powerpc-rtems5/beatnik/lib/ -specs bsp_specs -qrtems     -mcpu=7400                   -DUNIX      -O2 -g -ffunction-sections -fdata-sections   -Wall       -DRTEMS_HAS_ALTIVEC -DHAVE_MOTLOAD -DRTEMS_NETWORK_CONFIG_MBUF_SPACE=2048 -DRTEMS_NETWORK_CONFIG_CLUSTER_SPACE=5120     -I. -I../O.Common -I. -I. -I.. -I/export/epics/cry-test/include/compiler/gcc -I/export/epics/cry-test/include/os/RTEMS -I/export/epics/cry-test/include      -I/Users/junkes/ABER_JETZT/support/asyn/include   -I/Users/junkes/ABER_JETZT/support/devlib2/include -I/Users/junkes/ABER_JETZT/epics-base/include/compiler/gcc -I/Users/junkes/ABER_JETZT/epics-base/include/os/RTEMS -I/Users/junkes/ABER_JETZT/epics-base/include              -MM -MF Example.d  ../Example.cpp
> /Users/junkes/RTEMS_POST_AUSTRALIA/RTEMS/rtems-5/bin/powerpc-rtems5-g++ -B/Users/junkes/RTEMS_POST_AUSTRALIA/RTEMS/rtems-5/powerpc-rtems5/beatnik/lib/ -specs bsp_specs -qrtems     -mcpu=7400                   -DUNIX      -O2 -g -ffunction-sections -fdata-sections   -Wall       -DRTEMS_HAS_ALTIVEC -DHAVE_MOTLOAD -DRTEMS_NETWORK_CONFIG_MBUF_SPACE=2048 -DRTEMS_NETWORK_CONFIG_CLUSTER_SPACE=5120     -I. -I../O.Common -I. -I. -I.. -I/export/epics/cry-test/include/compiler/gcc -I/export/epics/cry-test/include/os/RTEMS -I/export/epics/cry-test/include      -I/Users/junkes/ABER_JETZT/support/asyn/include   -I/Users/junkes/ABER_JETZT/support/devlib2/include -I/Users/junkes/ABER_JETZT/epics-base/include/compiler/gcc -I/Users/junkes/ABER_JETZT/epics-base/include/os/RTEMS -I/Users/junkes/ABER_JETZT/epics-base/include              -c ../Example.cpp
> In file included from /Users/junkes/ABER_JETZT/epics-base/include/pv/pvData.h:22:0,
>                  from ../Example.cpp:5:
> /Users/junkes/ABER_JETZT/epics-base/include/pv/anyscalar.h: In instantiation of 'epics::pvData::AnyScalar::AnyScalar(T) [with T = long int]':
> /Users/junkes/ABER_JETZT/epics-base/include/pva/client.h:492:41:   required from 'pvac::detail::PutBuilder& pvac::detail::PutBuilder::set(const string&, T, bool) [with T = long int; std::__cxx11::string = std::__cxx11::basic_string<char>]'
> ../Example.cpp:38:35:   required from here
> /Users/junkes/ABER_JETZT/epics-base/include/pv/anyscalar.h:115:18: error: 'value' is not a member of 'epics::pvData::ScalarTypeID<long int>'
>          _stype = (ScalarType)ScalarTypeID<TT>::value;
>                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> make[3]: *** [Example.o] Error 1
> 
> It’s because “long val”:
> 
> anyscalar.h:
> 
> ...
>         // this line fails to compile when type T can't be mapped to one of
>         // the PVD scalar types.
>         _stype = (ScalarType)ScalarTypeID<TT>::value;
>     }
> 
> 
> call aExample
> 2019-04-03T07:35:41.411 Error binding socket 10.20.30.91:5076: Address already in use.
> —> runtime Error
> 
> With the p4p server my client always crashed.
> 
> And changed from ScalarArrayPtr to typeArrayPtr’s
> 
>  if (ind < 3){
>           PVDoubleArrayPtr pvDoubleArray = static_pointer_cast<PVDoubleArray>(pvField); 
>           
>           cout << " pvDoubleArray len : " << pvDoubleArray->getLength() << "\n";
>           
>           pvDoubleArray->setLength(100);
>           
>           if (ind == 0) { pvDoubleArray->putFrom(x); cout << " put x \n"; }
>           if (ind == 1) { pvDoubleArray->putFrom(y); cout << " put y \n"; }
>           if (ind == 2) { pvDoubleArray->putFrom(z); cout << " put z \n"; }
>           }
>           if (ind == 3) {
>           PVIntArrayPtr pvIntArray = static_pointer_cast<PVIntArray>(pvField);
>                 cout << " pvIntArray len : " << pvIntArray->getLength() << "\n";
>               pvIntArray->setLength(100);
>               pvIntArray->putFrom(data); 
>               cout << " put time index \n"; 
>           }
>           if (ind == 4) {
>           PVByteArrayPtr pvByteArray = static_pointer_cast<PVByteArray>(pvField);
>             
>               cout << " pvByteArray len : " << pvByteArray->getLength() << "\n";
>               pvByteArray->setLength(100);
>               pvByteArray->putFrom(dbyte); 
>               cout << " put byte dummy \n"; 
>               break;
>           } 
> 
> 
> 
> I have now inserted a byte array. This looks good on both sides. I still suspect some problem with "pointer arithmetic" or something similar.
> 
> 
> [junkes@dune epics]$  pvmonitor -r "" CRYVISIL:STM:FASTSCAN:IMAGE_CHUNK
> CRYVISIL:STM:FASTSCAN:IMAGE_CHUNK structure
>     string[] labels ["x", "y", "z", "time_index", "b"]
>     structure value
>         double[] column0 [9,17,25,33,41,49,57,65,73,81,89,97,105,13,21,29,37,45,53,61,69,77,85,93,101,109,17,25,33,41,49,57,65,73,81,89,97,105,2.97079e-313,6.36599e-313,9.76118e-313,1.31564e-312,1.65516e-312,1.99468e-312,2.3342e-312,1.07459e-13,3.53996e-307,2.42092e-322,7.58846e-301,0,6.36599e-314,3.06163e-296,1.50212e-231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
>         double[] column1 [10,18,26,34,42,50,58,66,74,82,90,98,106,14,22,30,38,46,54,62,70,78,86,94,102,110,5.09279e-313,8.48798e-313,1.18832e-312,1.52784e-312,1.86736e-312,2.20688e-312,9.9872e-130,2.90517e+180,3.03934e-296,1.91562e+53,6.7687e-322,0,0,2.42092e-322,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
>         double[] column2 [11,19,27,35,43,51,59,67,75,83,91,99,107,3.81959e-313,7.21479e-313,1.061e-312,1.40052e-312,1.74004e-312,2.07956e-312,8.59816e-246,2.49375e+64,6.29808e-311,9.7588e-28,2.1371e-316,0,0,1.23516e-322,3.0615e-296,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
>         int[] column3 [12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,2832,353769240,623257384,892745528,1162233672,1431721816,1701209960,2944,1,43255496,43245712,43245968,43255496,1414742849,1258291200,5352728,169090561,-186801060,0,0,0,0,0,2147483647,441169862,0,0,0,251,5328084,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
>         byte[] column4 [13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112]
>     long counter 9
>     string descriptor
>     structure timeStamp
>         long secondsPastEpoch 0
>         int nanoseconds 0
>         int userTag 0
>     structure alarm
>         int severity 0
>         int status 0
>         string message
> CRYVISIL:STM:FASTSCAN:IMAGE_CHUNK <Disconnect>
> CRYVISIL:STM:FASTSCAN:IMAGE_CHUNK structure
>     string[] labels ["x", "y", "z", "time_index", "b"]
>     structure value
>         double[] column0 []
>         double[] column1 []
>         double[] column2 []
>         int[] column3 []
>         byte[] column4 []
>     long counter 0
>     string descriptor
>     structure timeStamp
>         long secondsPastEpoch 0
>         int nanoseconds 0
>         int userTag 0
>     structure alarm
>         int severity 0
>         int status 0
>         string message
> CRYVISIL:STM:FASTSCAN:IMAGE_CHUNK structure
>     string[] labels ["x", "y", "z", "time_index", "b"]
>     structure value
>         double[] column0 [0,8,16,24,32,40,48,56,64,72,80,88,96,4,12,20,28,36,44,52,60,68,76,84,92,100,8,16,24,32,40,48,56,64,72,80,88,96,1.061e-313,4.45619e-313,7.85138e-313,1.12466e-312,1.46418e-312,1.8037e-312,2.14322e-312,2.94319e-173,8.53851e+136,3.03934e-296,1.91562e+53,0,0,1.63042e-322,0,0,2.13693e-316,0,0,0,0,0,1.71457e-311,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
>         double[] column1 [1,9,17,25,33,41,49,57,65,73,81,89,97,5,13,21,29,37,45,53,61,69,77,85,93,101,3.18299e-313,6.57819e-313,9.97338e-313,1.33686e-312,1.67638e-312,2.0159e-312,2.69662e-289,7.84891e+20,4.79244e-322,9.7588e-28,0,0,4.24399e-314,5.37227e-304,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
>         double[] column2 [2,10,18,26,34,42,50,58,66,74,82,90,98,1.9098e-313,5.30499e-313,8.70018e-313,1.20954e-312,1.54906e-312,1.88858e-312,3.53992e-307,6.83066e-96,1.23516e-322,3.03994e-296,2.13694e-316,0,0,2.122e-314,0,0,5.37227e-304,0,0,0,0,0,2.13693e-316,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
>         int[] column3 [3,7,11,15,19,23,27,31,35,39,43,47,51,55,59,63,67,71,75,79,83,87,91,95,99,0,1,67438087,336926231,606414375,875902519,1145390663,1414878807,1684366951,5231008,0,43245584,43245840,0,978539597,1095189855,96,0,0,0,0,0,0,0,0,0,2,0,825241856,0,16225296,0,0,0,0,0,0,0,0,5389196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5389000,0,0,0,0,0,0,0,0,0,0]
>         byte[] column4 [4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103]
>     long counter 0
>     string descriptor
>     structure timeStamp
>         long secondsPastEpoch 0
>         int nanoseconds 0
>         int userTag 0
>     structure alarm
>         int severity 0
>         int status 0
>         string message
> CRYVISIL:STM:FASTSCAN:IMAGE_CHUNK structure
>     string[] labels ["x", "y", "z", "time_index", "b"]
>     structure value
>         double[] column0 [1,9,17,25,33,41,49,57,65,73,81,89,97,5,13,21,29,37,45,53,61,69,77,85,93,101,9,17,25,33,41,49,57,65,73,81,89,97,1.2732e-313,4.66839e-313,8.06358e-313,1.14588e-312,1.4854e-312,1.82492e-312,2.16444e-312,2.31943e-52,3.53996e-307,2.42842e-315,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
>         double[] column1 [2,10,18,26,34,42,50,58,66,74,82,90,98,6,14,22,30,38,46,54,62,70,78,86,94,102,3.39519e-313,6.79039e-313,1.01856e-312,1.35808e-312,1.6976e-312,2.03712e-312,1.99536e-168,5.78708e+141,3.03934e-296,1.91562e+53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
>         double[] column2 [3,11,19,27,35,43,51,59,67,75,83,91,99,2.122e-313,5.51719e-313,8.91238e-313,1.23076e-312,1.57028e-312,1.9098e-312,1.85165e-284,5.3866e+25,2.42842e-315,9.7588e-28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
>         int[] column3 [4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,0,219025168,488513312,758001456,1027489600,1296977744,1566465888,0,1,16225296,43245712,43245968,16225296,1414742849,1258291200,16225296,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
>         byte[] column4 [5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104]
>     long counter 1
>     string descriptor
>     structure timeStamp
>         long secondsPastEpoch 0
>         int nanoseconds 0
>         int userTag 0
>     structure alarm
>         int severity 0
>         int status 0
>         string message
> 
> 
> On the RTEMS-side all seems to be ok:
> 
> PvaClientPut::getData channelName CRYVISIL:STM:FASTSCAN:IMAGE_CHUNK
> PvaClientPut::checkConnectState channelName CRYVISIL:STM:FASTSCAN:IMAGE_CHUNK
> structure
>     string[] labels ["x", "y", "z", "time_index", "b"]
>     structure value
>         double[] column0 []
>         double[] column1 []
>         double[] column2 []
>         int[] column3 []
>         byte[] column4 []
>     long counter 0
>     string descriptor
>     structure timeStamp
>         long secondsPastEpoch 0
>         int nanoseconds 0
>         int userTag 0
>     structure alarm
>         int severity 0
>         int status 0
>         string message
> 
> bis hierhin ging es gut
> counterField : 0
> labels : {5}[x, y, z, time_index, b]
> starting field column0 ... x
> type scalarArray
>  pvDoubleArray len : 0
>  put x
> starting field column1 ... y
> type scalarArray
>  pvDoubleArray len : 0
>  put y
> starting field column2 ... z
> type scalarArray
>  pvDoubleArray len : 0
>  put z
> starting field column3 ... time_index
> type scalarArray
>  pvIntArray len : 0
>  put time index
> starting field column4 ... b
> type scalarArray
>  pvByteArray len : 0
>  put byte dummy
> PvaClientPut::issuePut channelName CRYVISIL:STM:FASTSCAN:IMAGE_CHUNK pvStructure
> structure
>     string[] labels ["x", "y", "z", "time_index", "b"]
>     structure value
>         double[] column0 [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99]
>         double[] column1 [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100]
>         double[] column2 [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101]
>         int[] column3 [3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102]
>         byte[] column4 [4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103]
>     long counter 0
>     string descriptor
>     structure timeStamp
>         long secondsPastEpoch 0
>         int nanoseconds 0
>         int userTag 0
>     structure alarm
>         int severity 0
>         int status 0
>         string message
>  bitSet {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}
> 
> PvaClientPut::putDone channelName CRYVISIL:STM:FASTSCAN:IMAGE_CHUNK status.isOK true
> putDone CRYVISIL:STM:FASTSCAN:IMAGE_CHUNK status Status [type=OK]
>  counter : 1
> PvaClientPut::getData channelName CRYVISIL:STM:FASTSCAN:IMAGE_CHUNK
> PvaClientPut::checkConnectState channelName CRYVISIL:STM:FASTSCAN:IMAGE_CHUNK
> bis hierhin ging es gut
> counterField : 0
> labels : {5}[x, y, z, time_index, b]
> starting field column0 ... x
> type scalarArray
>  pvDoubleArray len : 100
>  put x
> starting field column1 ... y
> type scalarArray
>  pvDoubleArray len : 100
>  put y
> starting field column2 ... z
> type scalarArray
>  pvDoubleArray len : 100
>  put z
> starting field column3 ... time_index
> type scalarArray
>  pvIntArray len : 100
>  put time index
> starting field column4 ... b
> type scalarArray
>  pvByteArray len : 100
>  put byte dummy
> PvaClientPut::issuePut channelName CRYVISIL:STM:FASTSCAN:IMAGE_CHUNK pvStructure
> structure
>     string[] labels ["x", "y", "z", "time_index", "b"]
>     structure value
>         double[] column0 [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100]
>         double[] column1 [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101]
>         double[] column2 [3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102]
>         int[] column3 [4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103]
>         byte[] column4 [5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104]
>     long counter 1
>     string descriptor
>     structure timeStamp
>         long secondsPastEpoch 0
>         int nanoseconds 0
>         int userTag 0
>     structure alarm
>         int severity 0
>         int status 0
>         string message
>  bitSet {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}
> 
> PvaClientPut::putDone channelName CRYVISIL:STM:FASTSCAN:IMAGE_CHUNK status.isOK true
> putDone CRYVISIL:STM:FASTSCAN:IMAGE_CHUNK status Status [type=OK]
>  counter : 2
> PvaClientPut::getData channelName CRYVISIL:STM:FASTSCAN:IMAGE_CHUNK
> PvaClientPut::checkConnectState channelName CRYVISIL:STM:FASTSCAN:IMAGE_CHUNK
> 
> 
> 
> But my client works only once after starting the server :-(
> I have already set the stack to epicsThreadStackSizeBig ;-)
> 
> Danke,
> Heinz
> 
> 
> 


References:
PvData , PvAccess, Confusion with different hardware architectures Heinz Junkes via Tech-talk
Re: PvData , PvAccess, Confusion with different hardware architectures Michael Davidsaver via Tech-talk
Re: PvData , PvAccess, Confusion with different hardware architectures Heinz Junkes via Tech-talk

Navigate by Date:
Prev: Re: PvData , PvAccess, Confusion with different hardware architectures Heinz Junkes via Tech-talk
Next: Asynchronous put for PV hosted by Python IOC using pcaspy but without 'asyn' field. Gregory, Ray via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: PvData , PvAccess, Confusion with different hardware architectures Heinz Junkes via Tech-talk
Next: Re: PvData , PvAccess, Confusion with different hardware architectures Michael Davidsaver via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024 
ANJ, 08 Apr 2019 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·