i use this in a modbus network and its work, try differents if you have pb!
good luck
..................
GoSub Calcul_CRC16
BufTx[Nbr-2]=CRC16.LowByte
BufTx[Nbr-1]=CRC16.HighByte
SerOut2 InOut,BR,[STR BufTx\Nbr]
..................
Calcul_CRC16:
CRC16=$FFFF
For i=0 to Nbr-3
CRC16=CRC16^BufTx[i]
For j=1 to 8
IF CRC16.Bit0=1 Then
CRC16=$A001^(CRC16>>1)
Else
CRC16=CRC16>>1
EndIF
Next j
Next i
Return