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
Tách chuỗi trong arduino
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