"Cannot implicitly convert type 'int' to 'byte'. An explicit conversion exists (are you missing a cast)" error
This will generat the error:
TxData[ByteIndex++] = (byte)TagIdCharacter[0] | 0x80;
Its because the result of the IOR operation does not result in a byte, so you need to use parenthesis:
TxData[ByteIndex++] = (byte)(TagIdCharacter[0] | 0x80);
Feel free to comment if you can add help to this page or point out issues and solutions you have found. I do not provide support on this site, if you need help with a problem head over to stack overflow.