Thông báo

Collapse
No announcement yet.

Xử lý dữ liệu nhận về từ cổng COM trong thời gian thực...

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Xử lý dữ liệu nhận về từ cổng COM trong thời gian thực...

    Mình đang làm 1 project về gọi điện thoại, trong đó có nhiều máy con và 1 máy mẹ (do mình điều khiển thông qua RS 232). Cụ thể là:
    Máy con muốn liên lạc với máy mẹ thì sẽ gửi 1 đoạn byte (độ dài 8 byte) đến máy mẹ, và nhiệm vụ của mình là nghe đoạn byte đó và xác định đó là máy con có ID bao nhiêu (cái này mình đã làm đc) và có cho phép nói chuyện với máy mẹ hay không (cái này mình cũng làm đc).
    Nhưng trong quá trình làm mình gặp vài vấn đề sau, thực sự là tìm nhiều cách rồi mà không giải quyết được..
    Thứ 1: Xử lý động trong thời gian thực. Mình muốn liên tục cập nhật request của các máy con, tức là khi máy con request là phải có tên trong danh sách luôn. Hiện tại thì mình chỉ xác định được máy con nào request sau khi ấn 1 button lưu lại dữ liệu nhận được từ các máy con rồi mới xử lý. Mình rất muốn quá trình đọc đoạn byte gửi về và phân tích này nó tự động.
    Thứ 2: Mình lắng nghe đoạn dữ liệu gửi về ở dạng string, sau đó chuyển về dạng byte, sau đó chuyển ra hex rồi phân tích chuỗi hex đó theo protocol cho trước, nhưng cách phân tích này nhiều lúc gặp lỗi vì là thao tác cắt, xén chuỗi string rồi so sánh:
    Ví dụ 07 6A 01 01 02 00 02 00 => minh sẽ cắt xén lấy ra chuỗi tại vị trí 13-14 tức là 02 để xử lý, nhưng hay gặp lỗi do dữ liệu nhận về không đủ, hoặc nhiều máy con cùng request dẫn đến chèn dữ liệu lên nhau và không đúng định dạng protocol cho trước.
    Có một anh đã nói mình nên dùng Ring buffer, nhưng mình chưa hiểu lắm, mình nghĩ nhận dữ liệu về dạng byte rồi lưu vào buffer để chờ xử lý vẫn là chuẩn nhất rồi chứ không phải là receive data như kiểu của mình. Nhưng nên lưu thế nào thì mình vẫn đang mắc.
    Mong các bạn giúp đỡ mình 2 vấn đề này. Mình rất cần hướng giải quyết sớm vì sắp đến deadline rồi. Cám ơn mọi người nhiều.

  • #2
    Bạn học bên viễn thông chắc luôn và đã được học qua ghép kênh ..bạn đưa các hoạt động bạn cần xử lý vào một chu kỳ làm việc và cứ thế mà lặp đi lặp lại cái chu kỳ đó n lần thôi ...thân

    Comment


    • #3
      Nguyên văn bởi pephuong Xem bài viết
      Bạn học bên viễn thông chắc luôn và đã được học qua ghép kênh ..bạn đưa các hoạt động bạn cần xử lý vào một chu kỳ làm việc và cứ thế mà lặp đi lặp lại cái chu kỳ đó n lần thôi ...thân
      Mình viết chương trình này trên C# bạn ơi, sao mà ghép kênh gì được?

      Comment


      • #4
        cám ơn mọi người nhiều

        Comment

        Về tác giả

        Collapse

        please1102 Tìm hiểu thêm về please1102

        Bài viết mới nhất

        Collapse

        Đang tải...
        X