Приветствую. Делаю реализацию ccnet протокола купюрника на Arduino, данные отправляются и приходят нормально, но есть один затык - купюрник, судя по всему, отправляет ответ частями и ответ на первый запрос получаю после того, как отправил второй. Пробовал делать ожидание, но почему-то ничего не приходит. Код:
const uint8_t CMD_IDENT[] = {0x02, 0x03, 0x06, 0x37};
const uint8_t CMD_BILL_TABLE[] = {0x02, 0x03, 0x06, 0x41};
void getCashData()
{
uint8_t pack_size_hex = 0;
long pack_size = 0;
if (ccnetSerial->available())
{
uint8_t code = ccnetSerial->read();
uint8_t device_type = ccnetSerial->read();
pack_size_hex = ccnetSerial->read();
pack_size = convert.hexaToDecimal(String(pack_size_hex, HEX));
Serial.print("size of pack: ");
Serial.print(pack_size_hex, HEX);
Serial.print("---");
Serial.println(pack_size);
}
int psz = 0;
while (psz <= pack_size)
{
psz += 1;
int getByte = ccnetSerial->read();
Serial.print(getByte, HEX);
Serial.print("--");
Serial.print(psz);
Serial.print("--");
Serial.print(pack_size);
Serial.println("");
if (getByte == -1)
{
delay (5000);
getByte = ccnetSerial->read();
}
if (psz == pack_size)
break;
}
Serial.println("*************");
}
void loop() {
Serial.println("CMD_IDENT: ");
sendCommand(CMD_IDENT, sizeof(CMD_IDENT));
delay (1000);
getCashData();
delay (5000);
Serial.println("CMD_BILL_TABLE: ");
sendCommand(CMD_BILL_TABLE, sizeof(CMD_BILL_TABLE));
delay (1000);
getCashData();
}
В ответ последовательный порт получаю:
CMD_IDENT:
Send data: 02,03,06,37,FE,C7
size of pack: 27---39
4D--1--39
53--2--39
4D--3--39
2D--4--39
55--5--39
41--6--39
31--7--39
38--8--39
33--9--39
38--10--39
20--11--39
20--12--39
20--13--39
20--14--39
20--15--39
30--16--39
33--17--39
4B--18--39
42--19--39
34--20--39
30--21--39
30--22--39
33--23--39
38--24--39
39--25--39
32--26--39
31--27--39
27--28--39
68--29--39
FFFFFFFF--30--39
FFFFFFFF--31--39
FFFFFFFF--32--39
FFFFFFFF--33--39
FFFFFFFF--34--39
FFFFFFFF--35--39
FFFFFFFF--36--39
FFFFFFFF--37--39
FFFFFFFF--38--39
FFFFFFFF--39--39
*************
CMD_BILL_TABLE:
Send data: 02,03,06,41,4F,D1
size of pack: 7D---125
5--1--125
55--2--125
4B--3--125
52--4--125
0--5--125
1--6--125
55--7--125
4B--8--125
52--9--125
1--10--125
2--11--125
55--12--125
4B--13--125
52--14--125
1--15--125
5--16--125
55--17--125
4B--18--125
52--19--125
1--20--125
1--21--125
55--22--125
4B--23--125
52--24--125
2--25--125
2--26--125
55--27--125
4B--28--125
52--29--125
FFFFFFFF--30--125
FFFFFFFF--31--125
FFFFFFFF--32--125
FFFFFFFF--33--125
FFFFFFFF--34--125
FFFFFFFF--35--125
Подскажите, как правильно вычитать данные в данном контексте?