add pop data and read data
This commit is contained in:
parent
5d95ffc2f5
commit
dffc5c5f20
|
@ -36,7 +36,8 @@
|
|||
|------|--------|---------|-------|-------|
|
||||
| AT | AT | OK | OK | 测试串口是否连通 |
|
||||
| AT+MSGSTORE=`len`,`data` | AT+MSGSTORE=10,00AA02F556789098783E | OK/ERROR | OK | 向队尾存储一条数据 |
|
||||
| AT+MSGREAD=? | AT+MSGREAD=? | `index`,`len`,`data`/ERROR | 25,10,00AA02F556789098783E | 读取队头的一条数据,并删除此数据 |
|
||||
| AT+MSGREAD=? | AT+MSGREAD=? | `index`,`len`,`data`/ERROR | 25,10,00AA02F556789098783E | 读取队头的一条数据,但不删除此数据 |
|
||||
| AT+MSGPOP=? | AT+MSGPOP=? | `index`,`len`,`data`/ERROR | 25,10,00AA02F556789098783E | 读取队头的一条数据,并删除此数据 |
|
||||
| AT+DEVIDREAD=? | AT+DEVIDREAD=? | `ID`/ERROR | NHND02458821 | 读取设备唯一序列号 |
|
||||
| AT+SYSCFGREAD=? | AT+SYSCFGREAD=? | `config`/ERROR | 0,9,6 | 读取配置 |
|
||||
| AT+FORCESAVE | AT+FORCESAVE | OK/ERROR | OK | 强制写入队列数据至 Flash |
|
||||
|
|
|
@ -22,6 +22,7 @@ public:
|
|||
int Init(VFileSystem* fs);
|
||||
int PushData(uint8_t len, const uint8_t* data);
|
||||
int PopData(int& index, uint8_t& len, uint8_t* data);
|
||||
int ReadData(int& index, uint8_t& len, uint8_t* data);
|
||||
int ReadDataFromIndex(int index, uint8_t& len, uint8_t* data);
|
||||
int HeadIndex();
|
||||
int TailIndex();
|
||||
|
|
|
@ -72,6 +72,17 @@ int DataRecorder::PopData(int& index, uint8_t& len, uint8_t* data)
|
|||
return IncHeadIndex();
|
||||
}
|
||||
|
||||
int DataRecorder::ReadData(int& index, uint8_t& len, uint8_t* data)
|
||||
{
|
||||
if (head == tail) {
|
||||
return -4;
|
||||
}
|
||||
index = head;
|
||||
len = headBlock.record[head % RECORD_PER_BLOCK].len;
|
||||
memcpy(data, headBlock.record[head % RECORD_PER_BLOCK].data, len);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int DataRecorder::ReadDataFromIndex(int index, uint8_t& len, uint8_t* data)
|
||||
{
|
||||
int ret;
|
||||
|
|
|
@ -113,6 +113,27 @@ void InterSerial::ParseCmd(String cmd)
|
|||
Serial1.printf("OK\r\n");
|
||||
|
||||
} else if (cmd == "MSGREAD=?") {
|
||||
uint8_t dataBuf[RECORD_DATA_SIZE] = {0};
|
||||
uint8_t dataLen = 0;
|
||||
int index = 0;
|
||||
if (rec->ReadData(index, dataLen, dataBuf)) {
|
||||
Serial1.printf("ERROR\r\n");
|
||||
return;
|
||||
}
|
||||
String result = "";
|
||||
result += String(index);
|
||||
result += ",";
|
||||
result += String(dataLen);
|
||||
result += ",";
|
||||
char tmpHex[2] = {0};
|
||||
for (int i = 0; i < dataLen; i++) {
|
||||
sprintf(tmpHex, "%02X", dataBuf[i]);
|
||||
result += tmpHex[0];
|
||||
result += tmpHex[1];
|
||||
}
|
||||
Serial1.printf("%s\r\n", result.c_str());
|
||||
|
||||
} else if (cmd == "MSGPOP=?") {
|
||||
uint8_t dataBuf[RECORD_DATA_SIZE] = {0};
|
||||
uint8_t dataLen = 0;
|
||||
int index = 0;
|
||||
|
|
Reference in New Issue