#define LEN_SERIAL_NUMBER (12)
void C_CosemObjMeterInfo::SetSerialNum(U08 u08MeterId, U64 u64SerialNum)
{
U08 u08tmp[LEN_SERIAL_NUMBER+2] = {0};
memset(u08tmp, 0xFF, sizeof(u08tmp)); // 將緩存置為0xFF
sprintf((char *)u08tmp, "%012lld", u64SerialNum); // 打印12位數據至緩存
memcpy(m_stMeterInfoTbl[u08MeterId].serialNum, u08tmp, LEN_SERIAL_NUMBER);
printf("\r\nUpdate Meter%d's serial num to %012s\r\n", u08MeterId, u08tmp);
for (U08 j = 0; j < sizeof(u08tmp); j++)
{
printf("0x%02x ", u08tmp[j]);
}
}
打印輸出結果如下:
Update Meter0's serial num to 098020000703
0x30 0x39 0x38 0x30 0x32 0x30 0x30 0x30 0x30 0x37 0x30 0x33 0x00 0xff
由輸出結果可以清楚地看出,在12位數據之后,自動追加了0x00,即’\0’。
