Your problem is this line:
tankval = AscW(CChar(SerialPort1.ReadExisting))
ReadExisting() returns a string and you are converting it to a character and then converting it to a string.
If you are sure you only have one message you can do this:
tankval = Integer.Parse(SerialPort1.ReadExisting().Trim())
If not you may consider using String.Split() or some other way to get the individual values out of the return string.
BTW- It's generally not good form to do so much processing in the event handler, but that's a whole different question.