[Hỏi] Vấn đề tốc độ nhận dữ liệu từ COM trong C#?

khoa vo

Trứng gà
Xin chào mọi người!

Mình viết ứng dụng trong C# để nhận 3 biến từ vi điều khiển qua cổng COM, khi nhận 2 biến thì tốc độ vẫn bình thường nhưng nếu nhận 3 biến thì tốc độ bị trễ hơn 1s.
Mình dùng Terminal để kiểm tra thì thấy tốc độ vẫn bình thường khi nhận 3 biến.

Mình ko biết lỗi nằm ở đâu, mong được mọi người giúp đỡ. Thanks!
 

Attachments

thienminh_npn

Thành Viên PIF
Xin chào mọi người!

Mình viết ứng dụng trong C# để nhận 3 biến từ vi điều khiển qua cổng COM, khi nhận 2 biến thì tốc độ vẫn bình thường nhưng nếu nhận 3 biến thì tốc độ bị trễ hơn 1s.
Mình dùng Terminal để kiểm tra thì thấy tốc độ vẫn bình thường khi nhận 3 biến.

Mình ko biết lỗi nằm ở đâu, mong được mọi người giúp đỡ. Thanks!
Code thỉ không chạy mà mình hiểu ý tường lập trình của bạn.
Trong môn Truyền số liệu thì UART là định hướng byte nên chúng ta không nên lấy biến string cả đống bytes làm cách thông tin giữa MCU và máy tính, phí lắm. Giả sử như thế này:
Data bạn gửi thuộc về 1 trong 3 loại, vậy mình mất 2 bits trong byte cho việc phân loại, vậy là ta còn 6 bits = 64 giá trị, nếu sai số nhiệt độ chấp nhận khoản 2* hoặc <64, humidity ss khoảng 2%, và tốc độ động cơ đo bằng m/s thì 64 giá trị này có vẻ vừa vặn... Nhận byte nào ta update hiển thị giá trị ấy. Tuy nhiên bạn vẫn có thể dùng một byte để phân loại, byte còn lại chứa giá trị, 256x256, thế là vừa chính xác vừa đa dạng. Nói chung là tùy ứng dụng mà mình "utilize" cái data. Khi điều khiển động cơ real time mình có đụng chiện hiệu suất như thế này nên chia sẻ kinh nghiệm thôi nhé.

Trong code, bạn nên quản lý bộ đệm của COM, bao nhiêu byte cho một lần đọc, đọc một loạt hay từng byte, xài byte nào làm gì gì, v.v.. Nếu không quản lý thì nó có lỗi khi nhấn disconnect thì exit thread của COM mà bộ đệm còn. Bạn thử sửa lại theo mình gợi ý nhé, không đc thì hãy nghía cái code đính kèm.
 

Attachments

Top