Cоздаешь структуру, согдасно документации, копируешь данные пакета по указателю струтруры и забираешь из компонентов структуры готовые данные с нужными типами.
typedef struct
{
short field1;
long field2;
} PacketDataStruct;
char data[] = [0x20,0x10,0x30,0x40,0x50,0x60,0x70];
PacketDataStruct recv;
memcpy(&data,&recv, sizeof(recv));
short data_field1 = recv.field1;
//data_field1 = 0x2010
а настройки порта играют главную роль - если есть парность или стоповых битов не стандарттное значение - то со стандартными значениями мусор примется - это и ежу понятно.