我如何一次发送一个字符串?

时间:2012-12-04 04:31:40

标签: c

这是我的代码。我现在无法测试它,所以我只是想知道是否有人可以验证这将使用完整的str字符串并将每个字符单独发送到TXREG

char str [10];
int n;
n = sprintf(str, "%u%% %u\n", Duty_Cycle, DAC_Output);
transmit_uart(str);                    // Send the value

这是transmit_uart()方法。

void transmit_uart(const char *value) {
    for(int i = 0; value[i] != '\0'; i++) {
        while(TXIF == 0) {}
        TXREG = value[i];
    }
}

所以这应该发送像

这样的东西

50% 128

每当我用一个字符串调用transmit_uart()时就会按照我的方式调用它。

更新:我昨天能够测试它,这确实有效!感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

虽然我没有亲自将其加载到MCU上并对其进行测试,但是,只要TXIF看起来像它就会看起来很好。

你真的应该使用snprintf或更大的缓冲区。这是溢出整数的一种情况(如简单地具有太大的值或任何负值)将级联到缓冲区溢出。

答案 1 :(得分:1)

如果要发送5-9个字符的字符串:

1 or 2 or 3 symbols - Duty_Cycle value,
1 symbol - % symbol,
1 symbol - space,
1 or 2 or 3 symbols - DAC_Output value,
1 symbol - \n symbol,

你做对了。