unsigned int sum = STXBUS_CRC16 ((unsigned char *) ba.data(), ba.size());
invalid conversion from 'char*' to 'unsigned char*'...
В том то и прикол - как обратиться к массиву байт внутри QByteArray?
Ну что Вы мне рассказываете сказки Венского леса?
invalid conversion будет без приведения
unsigned int sum = STXBUS_CRC16 (ba.data(), ba.size());
А если стоит (unsigned char *) ba.data(), то приведет, куда он денется