我有这个方法原型
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]
我做错了什么?
答案 0 :(得分:1)
debugPrint
将您的数组解释为字节数组,其中每个字节都是char;因为第一个值是0x00,顺便说一下'\ 0'字符的值是相同的,表示“字符串结束”。
另一个值将由它们的ascii表示来表示,它与字节值永远不会相同。
Serial的print()接受一些参数,告诉函数打印十六进制,十进制,八进制或二进制的ascii表示;也许你的SerialUSB也支持它们。