SWIG/C++
Bill Davy
Bill at SynectixLtd.com
Thu Apr 10 04:00:14 EDT 2008
Is there a better place to post such questions?
Anyway, in the hope it is something simple, I would appreciate some help.
I am adding some C++ code to Python. From Python I want to be able to read
data from a target device, over USB. My software does all the hard work and
I have a class:
class ViperUsbC
{
public:
// snip snip
ERROR_T ReadSlaveMemory(u8 Slave, u16 Offset, u8* pData, u16
Length);
// Snip,snip
};
I use swigwin-1.3.34 to wrap it into a module called SHIP.
In Python, I have:
import SHIP
ViperUsb = SHIP.ViperUsbC()
Slave =7
Offset = 0
Length = 64
Buffer = 'a' * Length
print "type(Buffer)=%s" % type(Buffer)
print "len(Buffer)=%s" % len(Buffer)
Result = ViperUsb.ReadSlaveMemory(Slave, Offset, Buffer, Length);
That fails with:
type(Buffer)=<type 'str'>
len(Buffer)=64
Traceback (most recent call last):
File "H:\Husky\HostPC\V1\SHIP\test1.py", line 1970, in -toplevel-
ViperTests()
File "H:\Husky\HostPC\V1\SHIP\test1.py", line 1884, in ViperTests
Result = ViperUsb.ReadSlaveMemory(Slave, Offset, Buffer, Length);
File "H:\Husky\HostPC\V1\SHIP\Release\SHIP.py", line 1757, in
ReadSlaveMemory
def ReadSlaveMemory(*args): return
_SHIP.ViperUsbC_ReadSlaveMemory(*args)
TypeError: in method 'ViperUsbC_ReadSlaveMemory', argument 4 of type 'u8 *'
How do I provide a buffer into which to read the data? It would not be
intolerable to provide another layer using %extend, but I feel sure this
should be automagic.
Thanks in advance
Bill
PS This is a very small part of a much larger project so I cannot supply
complete source code.
More information about the Python-list
mailing list