I should have ordered one of these cards 12 days ago when I ported the library Good news is I just ordered one from Adafruit. The PN532 shield... so I'll have it soon enough and work out all of the bugs. The I2C might still be flaky, and SPI might be a better way to go right now. However the port I did is not SPI enabled... so some work will need to be done to get both modes in one library. There are several libraries Adafruit has that can be ported as well... so once I get the reader things will be much easier to code and debug. If you can hang in there I'll work on this more when I get the reader.
I guess if it communicates at all it must have pull up resistors on that board. I don't see a schematic for their board though to verify. You could try adding a 4.7k pull up to each I2C pin just for good measure. From D0 to VIN and D1 to VIN.
Typically you could just add a variable to your code that you can initially set to false before reading, and after you get a successful read you set it to true. Then just don't read any more if it's true. You can make it automatically reset back to false after a time out. You just have to think about how you want the action to work, and then figure out a way to code it. For instance, if you drop a tag on your scanner, but you don't want it to read multiple times, but do want it to read again right away if you pull the tag away and put it back... you have to see how fast it's reading when sitting on the scanner vs. how long it takes you to pull the card away and put it back. Hopefully the multiple read time is much faster than the pulling away and putting back time, because you'd want your timeout value to be somewhere in between those two. Hopefully that makes sense?
I can provide an example once I get my stuff