Thông báo

Collapse
No announcement yet.

VB 6 và truyền thông đa xư lí

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

  • VB 6 và truyền thông đa xư lí

    Khi xây dựng một mạng master/slave trong đó master là PC còn Slave là các VDK thì yêu cầu là phải có truyền thông đa xứ lí .Mình không hiểu tại sao một chủ đề hay như vậy lại không có bài viết nào nói cụ thể vấn đề này. Tóm tắt thì mình xin mạn phép trích dẫn một đoạn ở link này "http://dientuvietnam.net/forums/showthread.php?t=523"
    " Ví dụ với 8051, cổng nối tiếp UART có cung cấp chế độ truyền nối tiếp phục vụ giao tiếp đa vi xử lý. Trong chế độ này ngoài 8bit dữ liệu được truyền đi còn có thêm bit thứ 9 dùng để báo hiệu 8bit đó là dữ liệu (bit9 = 0) hay địa chỉ (bit9 = 1). Các byte địa chỉ (có bit9=1) sẽ gây ngắt tất cả các Slave. Bọn này sẽ đọc và so sánh với địa chỉ được gán cho nó từ trước, nếu không giống sẽ đi làm việc khác, nếu giống sẽ chuyển chế độ để có thể nhận được dữ liệu sẽ truyền tới tiếp theo (Dữ liệu không gây ngắt do đó phải chuyển chế độ mới gây ngắt và nhận được!). Các thằng không chuyển chế độ sẽ không bị các byte dữ liệu (trao đổi giữa Master và Slave được chọn) ngắt, làm phiền, thoải mái làm việc của chúng nó, cho đến khi một phiên giao tiếp mới được Master khởi động bằng một byte địa chỉ mới."
    Như đã nói ở trên "thằng master" chính là PC còn các VDK chính là Slave.Mình hiểu rất rõ truyền thông đa xử lí phía dưới VDK nhưng cái mình thắc mắc là không biết dùng VB với MSCOMM thì truyền một byte địa chỉ như thế nào và truyền một byte dữ liệu thì như thế nào ? Mình biết chắc rằng câu trả lời nằm ở đâu đó ở thuộc tính "Setting" của MSCOMM , nhưng cụ thể thế nào thì mình không biết. Các cao thủ giúp mình với !

  • #2
    Nguyên văn bởi saobanmai Xem bài viết
    Khi xây dựng một mạng master/slave trong đó master là PC còn Slave là các VDK thì yêu cầu là phải có truyền thông đa xứ lí .Mình không hiểu tại sao một chủ đề hay như vậy lại không có bài viết nào nói cụ thể vấn đề này. Tóm tắt thì mình xin mạn phép trích dẫn một đoạn ở link này "http://dientuvietnam.net/forums/showthread.php?t=523"
    " Ví dụ với 8051, cổng nối tiếp UART có cung cấp chế độ truyền nối tiếp phục vụ giao tiếp đa vi xử lý. Trong chế độ này ngoài 8bit dữ liệu được truyền đi còn có thêm bit thứ 9 dùng để báo hiệu 8bit đó là dữ liệu (bit9 = 0) hay địa chỉ (bit9 = 1). Các byte địa chỉ (có bit9=1) sẽ gây ngắt tất cả các Slave. Bọn này sẽ đọc và so sánh với địa chỉ được gán cho nó từ trước, nếu không giống sẽ đi làm việc khác, nếu giống sẽ chuyển chế độ để có thể nhận được dữ liệu sẽ truyền tới tiếp theo (Dữ liệu không gây ngắt do đó phải chuyển chế độ mới gây ngắt và nhận được!). Các thằng không chuyển chế độ sẽ không bị các byte dữ liệu (trao đổi giữa Master và Slave được chọn) ngắt, làm phiền, thoải mái làm việc của chúng nó, cho đến khi một phiên giao tiếp mới được Master khởi động bằng một byte địa chỉ mới."
    Như đã nói ở trên "thằng master" chính là PC còn các VDK chính là Slave.Mình hiểu rất rõ truyền thông đa xử lí phía dưới VDK nhưng cái mình thắc mắc là không biết dùng VB với MSCOMM thì truyền một byte địa chỉ như thế nào và truyền một byte dữ liệu thì như thế nào ? Mình biết chắc rằng câu trả lời nằm ở đâu đó ở thuộc tính "Setting" của MSCOMM , nhưng cụ thể thế nào thì mình không biết. Các cao thủ giúp mình với !
    Trong uồng dưới tối có hướng dẫn rồi đấy, lần sau bạn tìm kỹ hơn 1 chút nhé
    http://dientuvietnam.net/forums/show...233#post126233
    Viết lại:
    Trong VB6.0 nó khai báo như sau: "9600,n,8,1" đây là cái bạn thường dùng.
    Còn có các khai báo "9600,m,8,1" ,"9600,s,8,1" ,"9600,e,8,1" ,"9600,o,8,1"...
    m là bit thứ 9 =1
    s là bit thứ 9 =0
    e,o là bit chẵn lẻ
    Bạn thấy đã thảo mãn chưa?
    Nếu dùng PC làm Master thì khi truyền địa chỉ bạn dùng "9600,m,8,1", còn khi truyền dữ liệu bạn dùng "9600,s,8,1"

    email:mahaco@fpt.vn

    Comment


    • #3
      Nguyên văn bởi hoctro89xxx Xem bài viết
      Trong uồng dưới tối có hướng dẫn rồi đấy, lần sau bạn tìm kỹ hơn 1 chút nhé
      http://dientuvietnam.net/forums/show...233#post126233
      Viết lại:
      Trong VB6.0 nó khai báo như sau: "9600,n,8,1" đây là cái bạn thường dùng.
      Còn có các khai báo "9600,m,8,1" ,"9600,s,8,1" ,"9600,e,8,1" ,"9600,o,8,1"...
      m là bit thứ 9 =1
      s là bit thứ 9 =0
      e,o là bit chẵn lẻ
      Bạn thấy đã thảo mãn chưa?
      Nếu dùng PC làm Master thì khi truyền địa chỉ bạn dùng "9600,m,8,1", còn khi truyền dữ liệu bạn dùng "9600,s,8,1"
      Hoàn toàn đồng ý với bác .Em vừa tìm ra sáng nay , em tính vào đây post cho mọi người xem thì bác trả lời rồi .Cám ơn bác nhiều nhé .Nói thêm tí chút, các bác phải cấu hình dưới con VĐK ở chế độ 2 hay 3(UAST 9 bit) để nhận byte địa chỉ.Khi nhận một byte địa chỉ thì việc so sánh địa chỉ này hoàn toàn thủ công và do người lập trình.Sau khi nhận đúng địa chỉ thì cấu hình lại con VĐK ở chế độ 1 hay 2 để nhận các byte dữ liệu theo sau byte địa chỉ. Tất cả các công việc như nhận byte địa chỉ ,so sánh địa chỉ,cấu hình lại,… tốt nhất nên thực hiện trong chương trình ngắt port nối tiếp.
      Nhưng … lại nhưng … he he .Có vấn đề khác các bác ạ ! Em cấu hình VĐK ở chế độ 3 (truyền/nhận 9 bit ) thế mà khi truyền hình như chỉ có 8 bit .Vì vậy khi cấu hình MSCOMM ở “9600,m,8,1” để truyền địa chỉ thì chương trình báo lỗi , nếu em cố tình bỏ qua lỗi này và nhận dữ liệu thì dữ liệu nhận được sai (một cách có hệ thống) .Thế nên, khi em truyền byte địa chỉ xuống VĐK thì bắt buộc phải cấm ngắt trên MSCOMM . Không biết mầm răng chừ các bác hè !

      Comment


      • #4
        Trong khi lướt net tôi đến đây và tìm thấy một trang web khác nhau ... i tìm thấy thông tin hữu ích tại đây ... Có chắc chắn có nhiều bài viết khác nhau tại đây ... Và một trong những điều này cũng có vẻ với tôi khác nhau một!
        Get ẽcited offer on

        Comment

        Về tác giả

        Collapse

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

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

        Collapse

        Đang tải...
        X