This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/CC2530:如何在串行传输中包含 EOS 和#39;/0&#39

Guru**** 2614325 points

Other Parts Discussed in Thread: CC2530

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/809347/compiler-cc2530-how-to-include-eos-0-in-serial-transmission

器件型号:CC2530

工具/软件:TI C/C++编译器

大家好、

正如您所说 的、我正在努力完成调光器的工作、ZCD 和 PWM 控制在 CC2530之外、我使用的是 MSP430。

要获取从 CC2530发送 到 MSP430的串行信息、调光器电平(从1到254)、我使用 了 zclxxx0003_NewLevel。 要识别 MSP430、接收到的字节需要在字符串末尾包含 EOS (/0)。 正如 您在上一篇文章中看到的那样、我使用两个 HalUARTWrite 来完成它。 但它运行不是很好、因为我需要在同一串数组中发送调光器级别和"/0"。

uint8 zclTTa0003_NewLevel;

字符字符串结束={'\0'};  

HalUARTWrite (HAL_UART_PORT_0、(uint8*)&zclTTa0003_NewLevel、SIZE_OW_UART_RX_buffer);

HalUARTWrite (HAL_UART_PORT_0、(char*)&stringEndof、size_of _UART_RX_buffer); 

例如(10%)对应的0x1A、我需要发送0x1A'/0'。 如果没有 EOS、MSP430中使用的字符串函数将无法识别字符串数组的末尾、并且将不起作用。 在下面的示例中、您能否看到、变量结果始终 返回零、这是由于 字符串末尾的数字(通过 CC2530发送的串行接收)没有'/0'(NULL 或0十六进制)导致的。

MSP430灯串处理可获得调光器级别:

if((P1OUT & BIT3) == BIT3)
{
Zero_Cross = 1;
i = 0;
if(cnt ==1)
{
result =(int)strtol(digits, NULL, 0);
cnt = 0;
RXByteCtr = 0;
}
dimSet = result;
}
P1IFG &= ~BIT3;
}

´需要将变量 zclTTa0003_NewLevel 转换为 ASCII、在末尾添加"//0"、而不是使用 HalUARTWrite 函数将其发送到串行。 我尝试使用 itoa 函数、但它在 IAR 编译器中不起作用。  

有人可以建议我如何解决这个问题?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将使用以下代码。

    字符串 Endof=0x00;

    HalUARTWrite (HAL_UART_PORT_0、(char*)&stringEndof、1);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Yikai 先生、

    非常感谢。

    我需要同时发送两个字节、一个是串行端口。 交换 uC 将以字符串序列的形式处理它、并了解在序列结束时包含´/0´(0x00)的必要条件。 例如、发送调光器级别(10%)  0x1A00。

    这是错误的、但它会如下所示:

    HalUARTWrite (HAL_UART_PORT_0、(uint8*)&zclTTa0003_NewLevel&&(char*)&stringEndof、2); 

    我认为、我必须使变量兼容、而不是联系那些通过串行发送的变量。

    如果理解我的想法、您能给我建议吗?

    此致、

    Alex  

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我假设您可以使用以下代码。

    uint8 zclTTa0003_NewLevel_With _EOS[2];
    zclTTa0003_NewLevel_With _EOS[0]= zclTTa0003_NewLevel;
    zclTTa0003_NewLevel_With _EOS[1]=0x00;

    HalUARTWrite (HAL_UART_PORT_0、(uint8*) zclTTa0003_NewLevel_With_EOS、2);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Yikai 先生。

    非常感谢、您是最棒的!

    此致、

    Alex