#include <stdio.h>
void parseSerialData(unsigned char* data, int length) {
int packetCount = 0;
int packetStartIndex = -1;
for (int i = 0; i < length; i++) {
if (data[i] == 0xBB) {
if (packetStartIndex != -1) {
if (i - packetStartIndex >= 10) {
MolPump_RS232_RX_message(&data[packetStartIndex]);
packetCount++;
}
}
packetStartIndex = i;
}
if (data[i] == 0x0D && i + 1 < length && data[i + 1] == 0x0A) {
if (packetStartIndex != -1 && i - packetStartIndex + 2 >= 10) {
MolPump_RS232_RX_message(&data[packetStartIndex]);
packetCount++;
packetStartIndex = -1;
}
}
}
printf("Detected packets: %d\n", packetCount);
}
void MolPump_RS232_RX_message(unsigned char* rx_buf) {
printf("Received packet: ");
for (int i = 0; i < 10; i++) {
printf("%02X ", rx_buf[i]);
}
printf("\n");
}
int main() {
unsigned char receivedData[] = {0xBB, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0D, 0x0A, 0xBB, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0D, 0x0A};
int dataLength = sizeof(receivedData) / sizeof(receivedData[0]);
parseSerialData(receivedData, dataLength);
return 0;
}