Py_ParseTuple Problem

Rick L. Ratzel rick.ratzel at magma-da.com
Wed Apr 21 10:10:03 EDT 2004


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[i] = (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.

youngdubliner at hotmail.com 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 !




More information about the Python-list mailing list