为什么我的指针数组赋值不起作用?

时间:2017-04-06 15:07:53

标签: c++ arduino

我有这个方法原型

bool setMacParam(const char* paramName, const uint8_t* paramValue, uint16_t size)
{
    debugPrint("[setMacParam] "); debugPrint(paramName); debugPrint("= [array]");
this->loraStream->print(STR_CMD_SET);
this->loraStream->print(paramName);

for (uint16_t i = 0; i < size; ++i) {
    this->loraStream->print(static_cast<char>(NIBBLE_TO_HEX_CHAR(HIGH_NIBBLE(paramValue[i]))));
    this->loraStream->print(static_cast<char>(NIBBLE_TO_HEX_CHAR(LOW_NIBBLE(paramValue[i]))));
}

this->loraStream->print(CRLF);

return expectOK();}

我想将变量devEUI分配给paramValue,我正在进行此调用

uint8_t DevEUI2[8] = {  0x00, 0x00, 0x00, 0x00, 0x41, 0x47, 0x30, 0x39 };
setMacParam(STR_DEV_EUI,DevEUI2,8);

但是我的终端显示paramValue为空

[setMacParam] deveui = [array]

我做错了什么?

1 个答案:

答案 0 :(得分:1)

debugPrint将您的数组解释为字节数组,其中每个字节都是char;因为第一个值是0x00,顺便说一下'\ 0'字符的值是相同的,表示“字符串结束”。

另一个值将由它们的ascii表示来表示,它与字节值永远不会相同。

Serial的print()接受一些参数,告诉函数打印十六进制,十进制,八进制或二进制的ascii表示;也许你的SerialUSB也支持它们。