Tách chuỗi trong arduino

Chào cả nhà, em có một chuỗi như sau “*22.33#44.55^66.77” thì có thuật toán hay hàm nào để tách thành 22.33 44.55 66.77 không dạ? em cảm ơn

Cách đơn giản nhất là loop qua từng character kết hợp state machine và ghép lại.

int state = 0;// bắt đầu tìm
int phan_nguyen_sothu1, phan_thap_phan_sothu1;
for(uint8_t i = 0; i = sizeof(s); i++)
{
    if(s[i] == '*')
    { 
        state = 1; //  bắt đầu phần nguyên số thứ 1
    }
    else if(s[i] == '.')
    {
        state++; //  bắt đầu phần thập phân
    }
    else
    {
        if(state == 1)
        {
             phan_nguyen_sothu1 = phan_nguyen_sothu1* 10 + (s[i] - '0'); 
            //Cộng thêm vào số thứ 1.
        }
//...
    }
}

Mình đoán bạn dùng lệnh print hoặc println để truyền data cho các board Arduino.
Về mặt logic thì việc bạn convert từ số sang string rồi convert ngược lại thì không sai, nhưng không tối ưu. Bạn nên học cách mã hóa các con số, truyền đi và giải mã ở phía nhận. (mã hóa frame)

VD:

byte 0 + 1 byte 2 + 3 byte 4 + 5 byte 6 + 7
2 bytes phần nguyên số thứ nhất 2 bytes phần thập phân 2 bytes phần nguyên số thứ hai 2 bytes phần thập phân
VD để truyền 23.45 67.89 có thể mã hóa
0x00 0x17 0x00 0x2D 0x00 0x43 0x00 0x59
4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?