JSON parsing and composing library

tvm
2018-11-04
2021-08-19
  • tvm - 2018-11-04

    I've created a JSON parsing and composing library. I realize Codesys has a paid library for this, but I'm using Schneider SoMachine,and it doesn't support dynamic memory allocation, and it looks like the Codesys library uses the __NEW operator to create an array of variables. Hopefully someone finds this library useful. I've learned quite a bit from posts in this forum, and I guess this is my way of contributing back to the community.

    There's an example program in the library, and commenting throughout the various functions.
    I've tested this with a number of different JSON strings, but there's no guarantee that it's 100% bug free. My testing environment was Schneider SoMachine 4.3, with M241/M251 PLCs. Comment below to contribute ideas, request changes, or report a bug.

    EDIT: version 1.0.0.1, fixes a few bugs

    UPDATE: this package has been added to the Codesys Forge https://forge.codesys.com/lib/pro-json/home/Home/
    Thanks to Ingo for the assistance with that.

    Tim

     
  • hermsen

    hermsen - 2018-11-04

    Though this not the right subforum to post this, I would still like to thank you for your contribution!
    I have taken a short look and it looks very professional, though I have not tried to run the provided example yet.

    Anyway, thanks from a community member.

     
  • Anonymous - 2018-11-05

    Originally created by: rickj

    Thank you very much. This was something on my bucket list.

     
  • Ingo

    Ingo - 2018-11-05

    Hey Tim,

    thanks for that contribution. A really nice one!

    I'd love to see this library in a project on CODESYS Forge https://forge.codesys.com.
    You are heartly welcome to our beta program

    BR,
    Ingo

     
  • tvm - 2018-11-06

    @Ingo, the Codesys Forge looks like a good concept. I've created an account, but I've never worked with a repository before, so I'll have to spend some time figuring out how that works.
    Tim

     
  • tvm - 2018-11-06

    step 1 "As a prerequisit, you need to have CODESYS SVN installed."
    ...available in the Codesys store for 500 euro

    First, I don't know if the Codesys SVN would work with Schneider SoMachine, and second, I'm not sure I'm quite that committed to this project that I'm willing to spend 500 euro on it. Sorry.

    Tim

     
  • Anonymous - 2018-11-06

    Originally created by: rickj

    500eu Ouch! When I signed up for an account, emphasis seemed to be on individuals rather than companies. If 500eu is the required entry fee, many individuals will quickly loose interest. Unfortunate for an otherwise worthy idea.

     
  • m.prestel - 2018-11-07

    Hello everyone,

    you do not need a licence for CODESYS Forge!

    Best regards,
    Marcel

     
  • tvm - 2018-11-07

    no, you don't need a license for Codesys Forge, but you appear to need a licence for CODESYS SVN in order to post projects to Codesys Forge. I could be corrected on this, but the first step in the instructions is: "As a prerequisit, you need to have CODESYS SVN installed." Codesys SVN is 500 euro

     
  • Anonymous - 2018-11-07

    Originally created by: rickj

    Codesys SVN is required because codesys source is stored as a binary blob rather than individual files, if I understand correctly.

     
  • Ingo

    Ingo - 2018-11-07

    Hi Guys!

    Sorry that this is not more clearly stated at the CODESYS Forge Website, or on the CODESYS SVN product page.

    CODESYS SVN can freely be used with CODESYS Forge

    As long as you only connect to repositories on CODESYS Forge you can use CODESYS SVN for free, without a license. We want to support the open source community with that.

     
  • Anonymous - 2018-11-07

    Originally created by: rickj

    Hey Ingo, that's great. I think the Forge is a wonderful idea.

     
  • tvm - 2018-11-19

    The forge looks like a good idea in concept, but I honestly lost interest by the time I had to install the third software package, and run a .bat file to change the registry. This shouldn't be that complicated--all I'm interested in doing is posting the .library file for people to use. I might get into it again at some point, but right now I don't have time to learn all the ins and outs of SVN packages, as interesting as it might be.
    Tim

     
    πŸ‘
    1
  • Stefan2 - 2020-01-05

    Hi TVM,

    i'm using your library for a Zigbee2mqtt converter.

    Is working fine, but sometimes I get a Closing braket to much. I figgured out that a
    'EndObject' is set to much.

    May we have a look to get this out?

    BR Stefan

     
  • tvm - 2020-01-11

    Hi Stefan

    Which version of the library are you using? I had some similar problems, which were fixed in v. 1.0.0.4. You can get the latest version from the codesys forge. If you're still having the issue, can you send me a string that causes the problem? My email is in the library.
    Tim

     
  • tvm - 2020-02-06

    Just posted version 1.0.0.7 on the Codesys Forge https://forge.codesys.com/lib/pro-json/home/Home/

    Thanks Stefan for the input and testing.

    Summary of changes, see comments in the code for more:
    -changed how characteristics of JSONVAR variables are determined. FB_Init wasn't picking up everything on the first and last variables of a structure, and some of it is now moved to STRUCT_TO_JSON.
    -added a MaxLevels input, basically to define where JSON starts to be created--was necessary especially for JSON in nested function blocks
    -I've added a VariableArraySize input, to suppress creation of array positions which are null
    -I've added a Format input, which will add white space an indenting to a string (for example, when writing to a file). This is not tested yet.
    - a lot of minor code changes, trying to make it easier to read and more efficient

    Tim

     
  • e.kislov - 2020-02-06

    Thank you.
    Just a little proposal: to append Codesys version for title of package/library.

    Something like: json-pac_v3.5.13.7 (3.5.13 - IDE version (patch usually irrelevant) and 7 - library version).

    Also I download .package from forge right now and seems like there is version 1.0.0.4, not 1.0.0.7.

     
  • tvm - 2020-02-06

    Someone else created the .package file last time, I'm not really sure how to do that. I got into it a bit, according to https://forge.codesys.com/tol/cforge/ho ... ol-handler, it looks like I have to install cforge, but even after I install the package, there's still no C:\Program Files (x86)\3S CODESYS\CODESYS\CFORGE folder with a setup.bat file, and I don't have time to figure it out. I don't actually use Codesys, I'm using Schneider Machine Expert, so I'm already doubling up my time just to post it to the forge.
    Here's a link to the .library file if anyone's interested. https://www.dropbox.com/s/2ap9jowqqjzap ... brary?dl=0

    Tim

     
    πŸ‘
    1
  • tvm - 2020-02-07

    I found the Setup.bat file in a different location. Ran it, and I get "Installed URL Handler for cforge tool", so I assume it's installed, but I'm still not getting a "cforge" entry in the context menu of my package folder.

    This all seems unnecessarily complicated

     
  • ecarro - 2021-08-18

    Hi TVM,

    Thank you very much for sharing your work with the community.

    I'm trying the example included in the 1.0.0.9 version with a M262 CPU. ComposeJSON function works great, but I cannot make the ParseJSON function to work.
    I included the library on the project, copy paste the code, compiled and downloaded. Is there anything I might be missing?

    Thank you for any help you can provide.

    Eduardo

     
  • tvm - 2021-08-19

    Eduardo

    Try the latest version, I just updated it on the forge site as well.
    https://www.dropbox.com/s/ql4b4ehxghvrsvc/PRO_JSON%201.0.0.11.library?dl=0

    There's some more examples in this version as well, maybe that will help, otherwise my email is in the library, you can send me an example of the issue you're having

    Tim

     

Log in to post a comment.