初级会员

- 积分
- 77
- 金钱
- 77
- 注册时间
- 2016-8-1
- 在线时间
- 25 小时
|

楼主 |
发表于 2016-8-8 11:47:39
|
显示全部楼层
就是个简单的读保持寄存器程序,读浮点型数据,crc错误,之前读u16没问题的
Modbus_HoldReg[0]=(u16*)&testData1;//测试数据1
Modbus_HoldReg[1]=(u16*)&testData2;//测试数据2
Modbus_HoldReg[2]=(u16*)&testData3;//测试数据3
Modbus_HoldReg[3]=(u16*)&testData4;//测试数据4
USART_TX_BUF[0]=USART_RX_BUF[0];
USART_TX_BUF[1]=USART_RX_BUF[1];
USART_TX_BUF[2]=RegNum*4;
for(i=0;i<RegNum;i++)
{
USART_TX_BUF[3+i*4]=(*Modbus_HoldReg[startRegAddr+i]>>8)&0xFF;
USART_TX_BUF[4+i*4]=*Modbus_HoldReg[startRegAddr+i]&0xFF;
USART_TX_BUF[5+i*4]=(*(Modbus_HoldReg[startRegAddr+i]+1)>>8)&0xFF;
USART_TX_BUF[6+i*4]=*(Modbus_HoldReg[startRegAddr+i]+1)&0xFF;
}
calCRC=CRC16(USART_TX_BUF,RegNum*4+3);
USART_TX_BUF[RegNum*4+3]=(calCRC>>8)&0xFF;
USART_TX_BUF[RegNum*4+4]=calCRC&0xFF;
RS485_SendData(USART_TX_BUF,RegNum*4+5);
里面数据高低字节顺序可能有问题,关键是crc错了,现在没办法验证。 |
|