Монитор последовательного порта показывает значения в шестнадцатеричном формате, поэтому они точно соответствуют значениям, которые вы отправляете. Преобразование не происходит, десятичное значение 37 равно 25 в шестнадцатеричном формате, а десятичное значение 30 равно 1E в шестнадцатеричном.
Используйте шестнадцатеричное представление (0x) для литеральных значений при создании массива, затем выубедитесь, что значения выходят так, как ожидается на мониторе последовательного порта:
byte[] c = new byte[] {
0x01,
0x00,
0x00,
0x02,
0x37,
0x30,
0x04
};
serialPort 1.Write(c, 0, c.Length);