void put_float(uint8 name, float dat) { uint8 datc[10] = { 197, name,2,0,0,0,0,0,0,198}; unsigned char *p = (unsigned char*)&dat + 3; datc[3] = *(p-3); datc[4] = *(p-2); datc[5] = *(p-1); datc[6] = *p; uint8 crc[6] = { name, 2,datc[3],datc[4],datc[5],datc[6]}; uint16 CRC16 = CRC_CHECK(crc,0,6); datc[7] = (uint8)(CRC16&0xff); datc[8] = (uint8)(CRC16>>8); sw_write_buffer(datc,10); }什么意思
时间: 2024-03-31 17:33:34 浏览: 44
这段代码实现了将一个float类型的数据通过串口发送出去。具体来说,代码中的put_float()函数接受两个参数:name和dat。其中,name是数据的名称,dat是要发送的float类型数据。
该函数首先声明了一个长度为10的数组datc,用于存储要发送的数据。数组的第一个元素是197,最后一个元素是198,这两个元素分别表示数据包的起始和结束。数组中的第2个和第3个元素表示数据长度,因为要发送的是一个float类型数据,所以长度为2。数组的第4到第7个元素则是要发送的float类型数据。这里使用了指针运算将float类型数据拆分成4个字节,分别存储到数组中。
接着,代码计算了数据的CRC校验码。CRC校验码是一种校验数据传输是否出错的方法,通过对数据进行异或运算,可以生成一个校验码。这里的CRC_CHECK()函数用于计算数据的校验码,返回一个16位的CRC校验值。
最后,代码将数据包发送出去。sw_write_buffer()函数用于将数据写入串口输出缓冲区,等待发送。
阅读全文