Thông báo

Collapse
No announcement yet.

Cần giúp về serial port trong VB.net!

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

  • #16
    Nguyên văn bởi secvnn Xem bài viết
    Vấn đề ở đây là mình không biết khi đọc dữ liệu về nó là chuỗi lớn nhất hay không, rồi nguyên tắc nhận về trên cổng COM nhu thế nào, nếu biết được rùi thì xử lý quá đơn giản. làm sao để load toàn bộ buffer trong cổng COM về để xử lý kìa, chứ hiện tại là có dữ liệu đỗ về là code nó xử lý liền. nên không chính xác. Bạn có code nào giống HyperTerminal của windows không. ngôn ngữ gì cũng được. share cho mình với.
    hic .

    Về giao tiếp cổng com nó sẽ đóng gói và gửi cho mình từng byte một .

    khai báo 1 mảng chứa dữ liệu : Dim mydata(1024) as byte

    lúc đó ta có chỗ chứa 1024 byte ( chắc thừa cái chuỗi trên )

    ....
    Bắt dữ liệu :

    Đọc serial và kiểm tra có phải là ô vuông không ? kiểm tra đúng là ô vuông rồi ( biết là đoạn start ) thì cứ thế mà bắt cho đến khi gặp cái start ( ô vuông ) tiếp theo thôi !

    Nếu cần xử lý dữ liệu ngay thì làm thêm hàm timeout vào nữa ( chỉ cho phép nhận chuỗi dữ liệu trong khoảng thời gian giới hạn cho phép )

    serial_qdec.zip
    Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

    Comment


    • #17
      Nguyên văn bởi queduong Xem bài viết
      hic .

      Về giao tiếp cổng com nó sẽ đóng gói và gửi cho mình từng byte một .

      khai báo 1 mảng chứa dữ liệu : Dim mydata(1024) as byte

      lúc đó ta có chỗ chứa 1024 byte ( chắc thừa cái chuỗi trên )

      ....
      Bắt dữ liệu :

      Đọc serial và kiểm tra có phải là ô vuông không ? kiểm tra đúng là ô vuông rồi ( biết là đoạn start ) thì cứ thế mà bắt cho đến khi gặp cái start ( ô vuông ) tiếp theo thôi !

      Nếu cần xử lý dữ liệu ngay thì làm thêm hàm timeout vào nữa ( chỉ cho phép nhận chuỗi dữ liệu trong khoảng thời gian giới hạn cho phép )

      [ATTACH]79572[/ATTACH]
      Mình thấy trong code mẫu bạn gửi có mấy thuộc tính này

      Code:
      Me.SerialPort1.DiscardOutBuffer()           'clear output buffer
      Me.SerialPort1.DiscardInBuffer()            'clear input buffer
      Me.SerialPort1.RtsEnable = False
      Me.SerialPort1.DtrEnable = False
      Bạn cho đọc cổng COM bằng Timer à, liệu có bị mất dữ liệu không, vì cuộc gọi nó đổ về liên tục nè.

      Mình dùng thử tool của bạn gửi test thử rồi. không recived được dữ liệu. mà đã vậy nó lưu buffer trên cổng com quá trời. khi mình bật tool của mình lại thì nó nối chuỗi lại. bạn có phương án nào chỉ mình với.
      Last edited by secvnn; 06-12-2013, 20:44.

      Comment


      • #18
        Nguyên văn bởi secvnn Xem bài viết
        Mình thấy trong code mẫu bạn gửi có mấy thuộc tính này

        Code:
        Me.SerialPort1.DiscardOutBuffer()           'clear output buffer
        Me.SerialPort1.DiscardInBuffer()            'clear input buffer
        Me.SerialPort1.RtsEnable = False
        Me.SerialPort1.DtrEnable = False
        Bạn cho đọc cổng COM bằng Timer à, liệu có bị mất dữ liệu không, vì cuộc gọi nó đổ về liên tục nè.

        Mình dùng thử tool của bạn gửi test thử rồi. không recived được dữ liệu. mà đã vậy nó lưu buffer trên cổng com quá trời. khi mình bật tool của mình lại thì nó nối chuỗi lại. bạn có phương án nào chỉ mình với.

        phương án thì không có ... vì tôi không nắm được cái cách thức truyền của cái tổng đài đó !

        Cuộc gọi đổ về liên tục ? chẳng có lẽ nó không lúc nào ngừng ? Dữ liệu mà cứ đẩy liên tục chẳng lúc nào ngừng ... thì thời gian đâu mà xử lý cái dữ liệu đó !!!
        Attached Files
        Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

        Comment


        • #19
          Nguyên văn bởi queduong Xem bài viết
          phương án thì không có ... vì tôi không nắm được cái cách thức truyền của cái tổng đài đó !

          Cuộc gọi đổ về liên tục ? chẳng có lẽ nó không lúc nào ngừng ? Dữ liệu mà cứ đẩy liên tục chẳng lúc nào ngừng ... thì thời gian đâu mà xử lý cái dữ liệu đó !!!
          Đúng vậy. nó đổ ra liên tục. nó lưu trong buffer của cổng COM. khi mình đọc bằng ReadExting() nó là 1 chuỗi dài ngoằn nè. Nói chung là có những mã mình không hiểu nó là gì, giống như là mã điều khiển phần cứng vậy đó. nên mình không thể xử lý chuỗi được nè. Tool của bạn viết bằng C++ àh.

          Comment


          • #20
            Nguyên văn bởi secvnn Xem bài viết
            Đúng vậy. nó đổ ra liên tục. nó lưu trong buffer của cổng COM. khi mình đọc bằng ReadExting() nó là 1 chuỗi dài ngoằn nè. Nói chung là có những mã mình không hiểu nó là gì, giống như là mã điều khiển phần cứng vậy đó. nên mình không thể xử lý chuỗi được nè. Tool của bạn viết bằng C++ àh.
            Cá nhân mình không phải chuyên về software nhưng mình cũng am hiểu software , mấy cái như VB , VB. NET , C# , C++ , delphi , java ... ( những ngôn ngữ về lập trình giao tiếp phần cứng hiện tại ở VN ) mình đều có thể trợ giúp bạn , tuy nhiên chưa tiếp xúc với " cái tổng đài " nó đưa ra dữ liệu " thể loại nào " thì không thể giúp được đâu.
            Bản thân bạn làm thiết bị tổng đài mà không hiểu nó đưa ra giao thức ( cách thức ) protocol , cách phân chia bố trí thế nào ... thì mình hoàn toàn chịu luôn .
            Những bài viết mình chỉ đưa ra ý kiến , suy nghĩ gọi mở mà thôi ! ( vì đó không phải là công việc của mình nên cũng chẳng đầu tư, đào sâu suy nghĩ làm gì ) . Bạn nên tham khảo ý kiến xung quanh xem , biết đâu có ai đó đã từng làm những công việc tương tự có thể gọi ý tốt hơn !

            Mẫu giao tiếp serial mà mình đưa lên viết và compiler bằng C++ builder XE5 và nrcomm lib !
            Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

            Comment


            • #21
              Nếu bạn chưa có thông tin về cách thức của gói dữ liệu giao tiếp của cái hệ thống đó. thì trước tiên bạn nên tìm kiếm tài liệu về nó, không được nữa thì tìm đến người có kinh nghiệm về cái đó, còn cuối cùng nếu không được thì áp dụng kĩ thuật Reverse engineering

              Comment


              • #22
                Nguyên văn bởi vuhapassall Xem bài viết
                Nếu bạn chưa có thông tin về cách thức của gói dữ liệu giao tiếp của cái hệ thống đó. thì trước tiên bạn nên tìm kiếm tài liệu về nó, không được nữa thì tìm đến người có kinh nghiệm về cái đó, còn cuối cùng nếu không được thì áp dụng kĩ thuật Reverse engineering
                Thanks mọi người nè, mình đã tìm ra giải pháp rồi. nói chung là nhận dữ liệu từ tổng đài không đơn giản như giao tiếp bình thường. nên nó hay mất dữ liệu nè.

                Comment

                Về tác giả

                Collapse

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

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

                Collapse

                Đang tải...
                X