Embedding Python in C

Discussion in 'Python' started by youngdubliner@hotmail.com, Apr 21, 2004.

  1. Guest

    Hi All ,

    Bit of a problem with Py_Parse or Py_ParseTuple ?

    I have a python script that reads a sector of flash in an embedded device.
    it returns the value of each byte within the sector as a tuple.

    i.e. [255,255,255,255,255,255,255, .......etc etc for the whole sector !

    We are using this script to read whats currently in any sector.
    No problems there.

    Now I need to call our script from C.

    I want to copy each of the bytes within the sector into an C unsigned char *array

    Is there any way to do this using Py_ParseTuple or Py_Parse ???

    something like this for instance ??? ......

    Py_ParseTuple[pres,"??",&my_c_array]

    so now my_c_array[0] = 255 ,my_c_array[1] = 255 ,my_c_array[2] = 255 , etc etc


    Thanks for the help !
     
    , Apr 21, 2004
    #1
    1. Advertising

  2. I'm assuming you mean PyArg_Parse and PyArg_ParseTuple? I couldn't find
    any docs on Py_Parse or Py_ParseTuple...

    Anyway, maybe something like this might work for you (portions taken
    from example in http://elmer.sourceforge.net/PyCon04/elmer_pycon04.html):

    ....
    PyObject* evalModule;
    PyObject* evalDict;
    PyObject* evalVal;
    PyObject* tupleItem;
    unsigned char* my_c_array;
    int i;
    int tupleSize;

    PyRun_SimpleString( "result = pyFuncWhichReadsDevice()" )

    evalModule = PyImport_AddModule( (char*)"__main__" );
    evalDict = PyModule_GetDict( evalModule );
    evalVal = PyDict_GetItemString( evalDict, "result" );

    if( evalVal == NULL ) {
    PyErr_Print();
    exit( 1 );

    } else {
    if( !PyTuple_Check( evalVal ) ) {
    printf( "Error: pyFuncWhichReadsDevice() did not return a tuple" );
    exit( 1 );
    }

    my_c_array = (unsigned char*) malloc( sizeof( unsigned char ) *
    PyTuple_Size( evalVal ) );

    tupleSize = PyTuple_Size( evalVal );

    for( i=0; i < tupleSize; i++ ) {
    tupleItem = PyTuple_GetItem( evalVal, i );

    if( !PyInt_Check( tupleItem ) ) {
    printf( "Error: pyFuncWhichReadsDevice() returned tuple with
    non-int value" );
    exit( 1 );
    }
    my_c_array = (unsigned char) PyInt_AsLong( tupleItem );
    }
    }
    ....

    I have no idea if this will work for you since I haven't even tried
    to compile it...consider it pseudo-code.

    -Rick.


    wrote:
    > Hi All ,
    >
    > Bit of a problem with Py_Parse or Py_ParseTuple ?
    >
    > I have a python script that reads a sector of flash in an embedded device.
    > it returns the value of each byte within the sector as a tuple.
    >
    > i.e. [255,255,255,255,255,255,255, .......etc etc for the whole sector !
    >
    > We are using this script to read whats currently in any sector.
    > No problems there.
    >
    > Now I need to call our script from C.
    >
    > I want to copy each of the bytes within the sector into an C unsigned char *array
    >
    > Is there any way to do this using Py_ParseTuple or Py_Parse ???
    >
    > something like this for instance ??? ......
    >
    > Py_ParseTuple[pres,"??",&my_c_array]
    >
    > so now my_c_array[0] = 255 ,my_c_array[1] = 255 ,my_c_array[2] = 255 , etc etc
    >
    >
    > Thanks for the help !
     
    Rick L. Ratzel, Apr 21, 2004
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Darryl

    Embedding Python in Python

    Darryl, Oct 8, 2003, in forum: Python
    Replies:
    6
    Views:
    415
    Darryl
    Oct 14, 2003
  2. Phil Frost

    Embedding Python in Python

    Phil Frost, Aug 18, 2004, in forum: Python
    Replies:
    23
    Views:
    787
    Paul Rubin
    Aug 19, 2004
  3. Maurice LING

    embedding python in python

    Maurice LING, Sep 29, 2004, in forum: Python
    Replies:
    8
    Views:
    397
    Jeff Shannon
    Oct 1, 2004
  4. Kakacek
    Replies:
    1
    Views:
    387
    Kakacek
    Jan 12, 2006
  5. abhinav
    Replies:
    1
    Views:
    448
    Armin Steinhoff
    Feb 19, 2006
Loading...

Share This Page