标题: 怎么把ADS1248采集到的数据发送出去? [打印本页]

作者: 15547989435    时间: 2023-7-10 17:01
标题: 怎么把ADS1248采集到的数据发送出去?

将采集到的电流放在Var->ADS1248_CON1.Result[0]中,电压放在Var->ADS1248_CON1.Result[3]中(电压暂时不用管),想通过usartSendData(Var->ADS1248_CON1.Result[0],(Var->ADS1248_CON1.Result[3]))函数在一帧里发送,下面是usartSendData函数

const unsigned char header[2]  = {0x55, 0xaa};
const unsigned char ender[2]   = {0x0d, 0x0a};

void usartSendData(unsigned int current, unsigned int voltage)
{
        // 协议数据缓存数组
        unsigned char buf[10] = {0};
        int i, length = 0;


        // 设置消息头
        for(i = 0; i < 2; i++)
                buf[ i] = header[ i];                      // buf[0] buf[1]

        // 设置采集数据长度与采集值
        length = 4;
        buf[2] = length;     // buf[2]

        // 将result[0]的电流值存储到buf数组的第4、5位
        buf[3] = (current >> 8) & 0xFF;  // 高位
        buf[4] = current & 0xFF;         // 低位


        // 将result[3]的电压值存储到buf数组的第6、7位

        buf[5] = (voltage >> 8) & 0xFF;  // 高位
        buf[6] = voltage & 0xFF;         // 低位


        // 设置校验值、消息尾
        buf[3 + length] = getDataSum(buf, 7);  // buf[7]
        buf[3+ length + 1] = ender[0];              // buf[8]
        buf[3+ length + 2] = ender[1];              // buf[9]

        //发送字符串数据
        USART_Send_String(buf,sizeof(buf));

接收到的电流不对,而且几乎一直是一个固定的数,请问大家是哪里出错了?

作者: Hephaestus    时间: 2023-7-10 18:11
你这是32位单片机,int是4字节的,你当2字节的了。
作者: 15547989435    时间: 2023-7-10 20:22
Hephaestus 发表于 2023-7-10 18:11
你这是32位单片机,int是4字节的,你当2字节的了。

那是应该把电流和电压原本的占2个字节改成占4个字节吗
作者: Hephaestus    时间: 2023-7-10 23:40
15547989435 发表于 2023-7-10 20:22
那是应该把电流和电压原本的占2个字节改成占4个字节吗

通讯协议不能改,你就要把current改成2字节的。

如果你可以改协议,那就改呗。
作者: 15547989435    时间: 2023-7-11 10:29
Hephaestus 发表于 2023-7-10 23:40
通讯协议不能改,你就要把current改成2字节的。

如果你可以改协议,那就改呗。

我现在的问题是发送个设定好的值就可以正常发送,但发送Var->ADS1248_CON1.Result[0]里的值发送不了,这是什么原因




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1