Д.ARMоед (30.07.2013 00:41, просмотров: 336) ответил Скрипач на А можно пример? Как будет выглядеть с циклами Дейкстры?
конечно, можно
while (1) {
if (GET_NEXT_BYTE) ReadByte(ch);
else if ((len <= MaxLength) && GET_PACKET) ReadPacket(len);
else if (ValidChecksum(data, len, ch) && GET_CHECKSUM) Dispatch(data, len);
else Log_Step();
}
static int receive_counter;
void ReadPacket(int num2read) {
switch READ_PACKET_STATE {
case 0:
receive_counter=0;
GET_NEXT_BYTE = 1;
READ_PACKET_STATE = 1;
break;
case 1:
data[receive_counter] = ch;
while (receive_counter < len) {
receive_counter++;
GET_NEXT_BYTE = 1;
return;
}
READ_PACKET_STATE = 2;
break;
case 2:
GET_PACKET = 0;
GET_CHECKSUM = 1;
break;
default:
break;
}
}