PaulS:
What were you trying to upload? To what?avrdude: ser_open(): can't open device "\.\COM16": The semaphore timeout period has expired.
If you have numbers that high for the com port, you have something (probably some bluetooth crap) tying up serial ports (and probably shanghai others that other apps open). Get rid of it.
One of Windows' "features" (at least on Win 7), is the retention of COM port numbers. Every time you plug in anything to the USB that enumerates as a COM port, it takes the first available number. You may forget that you once plugged in an FTDI adapter to run your Jelly-Jam Toaster Printer, but Windows didn't, and it still remembers that it was assigned COM 27, so now your poor Arduino gets COM port 28 the first time it is plugged in. And if you then plug it in to a different USB port, it will get COM 29, and so on.
If you really prefer it to be a low number, all you need to do is to Go to Control Panel > Computer (right click) >Properties > Device Manager. Within Device Manager, click on Ports. Doublle-Click on the Arduino in question, Select Port Setting > Advanced. Use the COM Port Number dropdown, and select a low number you KNOW is not in use.
But then, why bother? It will work just fine if your Arduino is on COM 16.