how to pass by reference??

Chris Gonnerman chris.gonnerman at newcenturycomputers.net
Mon Feb 4 05:00:03 CET 2002


----- Original Message -----
From: "Spencer Doidge" <spencer at spencerdoidge.com>


> Thanks for all your patient help, Chris. Now I have run into an apparent
> contradiction:
>
> This is a method within SerialPort_win.py from Isaac Barona's
site-package,
> modified by myself because his 2nd ReadFile(..) parameter was an integer,
> and I want the buffer instead. I need to see what was read...

[[ code block omitted ]]

> After I have run the script that defines read(...), the other methods
> defined by the script work fine, but with read(..) I get this result:
>
> >>> tty = SerialPort("COM1",None,None,None)
> >>> b = [0] * 256
> >>> tty.read(1,b)
> Traceback (most recent call last):
>   File "<interactive input>", line 1, in ?
>   File "C:\Python22\Lib\site-packages\MyScripts\MySerialPort_win.py", line
> 238, in read
>     hr, bfr = ReadFile(self.__handle, bfr, overlapped)
> TypeError: Second param must be an integer or a buffer object
>
> If bfr isn't a "buffer object," then what is?

According to the help file, you need a PyOVERLAPPEDReadBuffer object here,
whatever that is... Mark Hammond, are you out there?

I've lost track; why are you passing in a buffer?  Don't you get the bytes
read as the second return value from ReadFile?  Have you read the help
file yet?







More information about the Python-list mailing list