Code Monkey home page Code Monkey logo

Comments (7)

mdavidsaver avatar mdavidsaver commented on June 9, 2024

Thank you for reporting this.

I also think it is a bug that the element types of dimension and attribute are not printed.

from pvxs.

mdavidsaver avatar mdavidsaver commented on June 9, 2024

I think this issue should be addressed by 2a83e49.

$ ./bin/linux-x86_64/pvxinfo my:pv:name
my:pv:name from [fe80::7816:e3ff:fe25:5208]%5:5075
struct "epics:nt/NTNDArray:1.0" {
    union {
        bool[] booleanValue
        int8_t[] byteValue
        int16_t[] shortValue
        int32_t[] intValue
        int64_t[] longValue
        uint8_t[] ubyteValue
        uint16_t[] ushortValue
        uint32_t[] uintValue
        uint64_t[] ulongValue
        float floatValue
        double doubleValue
    } value
    struct "codec_t" {
        string name
        any parameters
    } codec
    int64_t compressedSize
    int64_t uncompressedSize
    int32_t uniqueId
    struct "time_t" {
        int64_t secondsPastEpoch
        int32_t nanoseconds
        int32_t userTag
    } dataTimeStamp
    struct "alarm_t" {
        int32_t severity
        int32_t status
        string message
    } alarm
    struct "time_t" {
        int64_t secondsPastEpoch
        int32_t nanoseconds
        int32_t userTag
    } timeStamp
    struct[] {
        int32_t size
        int32_t offset
        int32_t fullSize
        int32_t binning
        bool reverse
    } dimension
    struct[] {
        string name
        any value
        string[] tags
        string descriptor
        struct "alarm_t" {
            int32_t severity
            int32_t status
            string message
        } alarm
        struct "time_t" {
            int64_t secondsPastEpoch
            int32_t nanoseconds
            int32_t userTag
        } timeStamp
        int32_t sourceType
        string source
    } attribute
}

When shown with values, all null/zero in this case.

$ ./bin/linux-x86_64/pvxget -F tree my:pv:name
my:pv:name
    struct "epics:nt/NTNDArray:1.0" {
        union value null
        struct "codec_t" {
            string name = ""
            any parameters null
        } codec
        int64_t compressedSize = 0
        int64_t uncompressedSize = 0
        int32_t uniqueId = 0
        struct "time_t" {
            int64_t secondsPastEpoch = 0
            int32_t nanoseconds = 0
            int32_t userTag = 0
        } dataTimeStamp
        struct "alarm_t" {
            int32_t severity = 0
            int32_t status = 0
            string message = ""
        } alarm
        struct "time_t" {
            int64_t secondsPastEpoch = 0
            int32_t nanoseconds = 0
            int32_t userTag = 0
        } timeStamp
        struct[] dimension = {0}[]
        struct[] attribute = {0}[]
    }

from pvxs.

wanglin86769 avatar wanglin86769 commented on June 9, 2024

After building the latest master branch of PVXS on Debian 10, pvxinfo and pvxget printed the expected result for the empty NTNDArray data. Thank you for fixing this.

from pvxs.

mdavidsaver avatar mdavidsaver commented on June 9, 2024

fyi. I had a look at https://github.com/wanglin86769/node-epics-pva/blob/master/wrapper/wrapper.cpp I would be interested in seeing a JSON output format (eg. Value::Fmt::JSON) added alongside the tree and delta formats.

from pvxs.

wanglin86769 avatar wanglin86769 commented on June 9, 2024

Thanks for your interest in JSON format. If there is something that I can contribute, I will be glad to do it.

from pvxs.

wanglin86769 avatar wanglin86769 commented on June 9, 2024

I think the key point is to output pvxs::Value in valid JSON format, since JSON syntax is strict. For example, some problems I encountered were,

  1. If some possible pvAccess data types are not taken into account, unexpected output with invalid JSON format may be generated.
  2. Trailing comma is not allowed in an object or array in JSON.
  3. The numbers NaN and Infinity are not support in JSON, they are considered null.

from pvxs.

mdavidsaver avatar mdavidsaver commented on June 9, 2024
  1. If some possible pvAccess data types are not taken into account, unexpected output with invalid JSON format may be generated.

A "reversible" mapping would be best. That is, one which could be parsed to recover the original with no loss of information. I understand that this would likely be difficult as among other aspects, JSON has no direct analog to the PVD structure ID names (eg. enum_t). Nor the struct vs union distinction. Some of this project would need to be establishing a convention. eg. special otherwise invalid field name like "+id":"enum_t" Or "+type":"struct".

3. The numbers NaN and Infinity are not support in JSON, they are considered null.

If not initially, at some point an option for JSON5 format would be helpful. fyi. epics-base has included a JSON5 aware parser since 7.0.5, which I would like in future to start using with PVXS.

from pvxs.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.