Added more error cases to better help users identify junk serial devices. Change a function paramter to accept pointers rather than create a duplicate copy on the stack