serial.write(0x00); gives an error

I therefore think that there is a bug in this piece of software.

No, there isn't. The compiler is telling you EXACTLY what the problem is. The value 0x00 is not typed, so it could be a char (NULL), a byte, or an int. The compiler is refusing to guess which method you want to use.

You can do as runaway_pancake suggests, or you can simply tell the compiler how YOU want it to interpret the typeless value:
Ser1.write((byte)0x00);