Site icon TAPIT

Hướng dẫn xử lý chuỗi trong lập trình vi điều khiển (P3)

Khi lập trình vi điều khiển, nhiều trường hợp chúng ta cần làm việc với các dữ liệu ở dạng chuỗi ký tự, ví dụ như đóng gói các dữ liệu thành một chuỗi để lưu trữ hoặc gửi đi, nhận dữ liệu, bóc tách dữ liệu từ các bản tin nhận được để sử dụng. Xử lý chuỗi là một chủ đề quan trọng khi lập trình vi điều khiển, nhất là khi các hệ thống nhúng, IoTs ngày càng phát triển dẫn đến việc trao đổi dữ liệu giữa các thiết bị ngày càng nhiều. Xử lý chuỗi là một thử thách với rất nhiều bạn sinh viên / kỹ sư phần mềm nhúng – những người mới bắt đầu. Với tài liệu này, các kiến thức cơ bản liên quan đến khai báo, lưu trữ, xử lý chuỗi sẽ được tổng hợp lại và được mô tả, hướng dẫn thông qua những ví dụ, tình huống cụ thể, thường gặp. 

Phần 1 – Một số khái niệm và các hàm chức năng

Phần 2 – Các hàm chức năng thường gặp

Tiếp tục với phần 1 và phần 2 của chuỗi bài viết, tại phần 3 (phần cuối) mình sẽ hướng dẫn các bạn thực hiện Ví dụ thực hành xử lý chuỗi trên Vi điều khiển STM32.

Phần 3. Hướng dẫn ví dụ thực hành xử lý chuỗi trên Vi điều khiển

3.1. Ví dụ thực hành

Vi điều khiển (device) và máy tính giao tiếp với nhau qua giao tiếp UART thông qua giao diện terminal (ví dụ Hercules). Trên thiết bị sẽ có một mã ID của thiết bị và có 2 đèn led (LED1 và LED2). Trên máy tính, thông qua giao diện terminal có thể cấu hình và đọc được ID của thiết bị, thay đổi trạng thái của các đèn LED. Viết chương trình điều khiển đơn giản sử dụng các lệnh sau để giao tiếp giữa máy tính và thiết bị:

3.2. Phân tích bài toán

Chúng ta cần phải xem qua các command và phản hồi của nó để lựa chọn cách xử lý. 

3.3. Cấu hình phần cứng

3.4. Mã chương trình tham khảo

3.5. Kết quả thực hiện

Hình 1. Cài đặt mã ID và lấy mã ID trên thiết bị

Hình 2. Cấu hình trạng thái LED và lấy trạng thái LED trên thiết bị

TỔNG KẾT

Qua chuỗi bài viết này, chúng ta đã tìm hiểu về khai báo chuỗi và xử lý chuỗi bằng những hàm thường sử dụng được hỗ trợ bởi các thư viện C, các ví dụ cụ thể của các hàm cũng đã được trình bày một cách chi tiết. Chuỗi bài viết cũng đưa ra một ví dụ trường hợp sử dụng trên vi điều khiển STM32. Có thể thấy, xử lý chuỗi là một chủ đề rất quan trọng khi lập trình vi điều khiển với các bài toán truyền, nhận, đóng gói, bóc tách, phân tích dữ liệu. Bên cạnh những vấn đề phổ biến được nêu ra trong bài viết, các bạn cũng có thể tìm hiểu thêm các vấn đề nâng cao như toàn vẹn dữ liệu với các phương pháp kiểm tra lỗi như CRC, checksum, hash, cũng như bảo mật dữ liệu với các kỹ thuật mã hóa và giải mã. 

Chúc các bạn thành công! 

H.V.Binh, N.T.Nhien & N.H.N.Thuong

Tìm hiểu thêm:
Tổng hợp hướng dẫn Internet of Things với NodeMCU ESP8266 và ESP32
Tổng hợp các bài hướng dẫn Lập trình vi điều khiển STM32
[HỌC ONLINE: LẬP TRÌNH VI ĐIỀU KHIỂN STM32, VI XỬ LÝ ARM CORTEX – M]
Fanpage Cộng đồng Kỹ thuật TAPIT: TAPIT – Learning, Research and Sharing Community