Thông báo

Collapse
No announcement yet.

Giúp mình lồng code trong visual basic với.

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

  • Giúp mình lồng code trong visual basic với.

    Chào các bạn. Mình mới mua 1 cái Kít giao tiếp với máy tính qua cổnng COM. Mình dùng phần mềm Visual basic 6.0 để giao tiếp nhưng lại gặp khó khăn trong khai báo data:
    Mình muốn truyền chuỗi code :REQA[7]={0xAA,0x00,0x02,0x03,0x26,0x27,0xBB}

    Private Sub cmdcheck_Click()
    Dim j As Byte
    For j = 0 To 7
    tam =Val(REQA[j])
    MSComm1.Output = Chr$(tam)
    Next
    End Sub

    Mình không biết khai báo sao cho đúng nữa. Các bạn nào đã làm rùi chỉ cho mình với. Cám ơn nhiều nha.

  • #2
    Code:
    Public REQA(6) as Byte
    
    Private Sub Send_Click()
         REQA(0) = &HAA
         REQA(1) = &H0
         REQA(2) = &H2
         REQA(3) = &H3
         REQA(4) = &H26
         REQA(5) = &H27
         REQA(6) = &HBB
         If Mscomm1.PortOpen = True then
              Mscomm1.Output= a
         Else
              Msgbox("Com Port is Close !")
         End if
    End Sub
    Attached Files
    Last edited by duong_act; 25-10-2012, 19:22.

    Comment


    • #3
      Nguyên văn bởi duong_act Xem bài viết
      Code:
      Public REQA(6) as Byte
      
      Private Sub Send_Click()
           REQA(0) = &HAA
           REQA(1) = &H0
           REQA(2) = &H2
           REQA(3) = &H3
           REQA(4) = &H26
           REQA(5) = &H27
           REQA(6) = &HBB
           If Mscomm1.PortOpen = True then
                Mscomm1.Output= a
           Else
                Msgbox("Com Port is Close !")
           End if
      End Sub
      Cám ơn bạn duong_act nhiều. nhân tiên cho mình hỏi khi mình nhận data về PC thì mình muốn nhận riêng lẻ( mình không sử dụng ngắt) sau một khoảng delay. Trong vb6 mình sử dụng ra sao.

      Comment


      • #4
        Chưa hiểu ý bạn ?

        Comment


        • #5
          Nguyên văn bởi duong_act Xem bài viết
          Chưa hiểu ý bạn ?
          Cái kít này khi mình muốn đọc data từ nó về PC thì phải truyền 1 đoạn code tuơng tứng thì nó mới truyền về. Do đó muốn lấy data mình cần thì phải truyền nhiều đoạn code. mỗi đoạn code sẽ có 1 data trả về tuơng ứng cho mỗi đoạn code. Giờ mình chỉ muốn lấy data mình muốn thì mình xẽ bỏ những data nó truyền về trước đó. do đó giữa mỗi đoạn code truyền đi mình sẽ dùng delay để bỏ qua quá trình nhận data. ( Mình làn mạch vdk bên ngoài thì được rùi nhưng vô VB thì chịu thua. ) Mình tìm hiều thì trong Vb có cái Timer. không biết dùng được không.

          ah. bạn rành về con atmega 32 thì cho mình hỏi về cách lưu data vô bộ nhớ eeprom của nó. Mình dùng phần mềm MiKroC để viết. Phần mềm này hỗ trợ tất cả các thư viện rủi. Không biết sao mình ghi vô rùi đọc ra không đúng giá trị nữa.

          Comment


          • #6
            Vẫn chưa hiểu lắm. Nhưng mà mình nghĩ việc gửi data lên PC đơn giản thôi mà.
            Bạn cứ gửi qua RS232 lên PC. Ở VB thì bạn dùng ngắt Oncom để lấy dữ liệu.
            Nếu chương trình của bạn có nhiều giá trị mà bạn sợ nhầm thì có thể truyền theo khung dữ liệu. Tức là không truyền mỗi giá trị biến lên mà có thể kèm các kí tự khác để phân biệt các biến.
            _____
            VÍ dụ bạn có 2 biến : x(8 bits) = 200 và y(16 bits) = 60000.
            Việc đầu tiên là bạn biến x và y ra dạng chuỗi có n kí tự và lắp ghép thêm một vài kí tự đặc biệt :
            200 (char) = chuỗi C 2 0 0 S( 5 byte)
            60000 (int) = I 6 0 0 0 0 S (7 byte).
            Khi đó bạn truyền từng chuỗi lên PC thì dựa vào 2 byte cuối để bạn xác định giá trị.
            Bạn nhận được chuỗi "C200S" thì dựa vào đầu cuối là CS thì bạn lấy giá trị là 3 byte giữa.
            Tương tự chuỗi I60000S thì dựa vào IS để lấy 60000 ở giữa.
            Với cách này bạn có thể truyền mọi lúc đều OK.
            Hoặc bạn có thể truyền luôn cả 2 số bằng khung B 2 0 0 6 0 0 0 0 S.
            Đó chỉ là 1 ví dụ, còn khung thế nào bạn có thể tự tạo cho riêng mình.

            Comment


            • #7
              Nguyên văn bởi duong_act Xem bài viết
              Vẫn chưa hiểu lắm. Nhưng mà mình nghĩ việc gửi data lên PC đơn giản thôi mà.
              Bạn cứ gửi qua RS232 lên PC. Ở VB thì bạn dùng ngắt Oncom để lấy dữ liệu.
              Nếu chương trình của bạn có nhiều giá trị mà bạn sợ nhầm thì có thể truyền theo khung dữ liệu. Tức là không truyền mỗi giá trị biến lên mà có thể kèm các kí tự khác để phân biệt các biến.
              _____
              VÍ dụ bạn có 2 biến : x(8 bits) = 200 và y(16 bits) = 60000.
              Việc đầu tiên là bạn biến x và y ra dạng chuỗi có n kí tự và lắp ghép thêm một vài kí tự đặc biệt :
              200 (char) = chuỗi C 2 0 0 S( 5 byte)
              60000 (int) = I 6 0 0 0 0 S (7 byte).
              Khi đó bạn truyền từng chuỗi lên PC thì dựa vào 2 byte cuối để bạn xác định giá trị.
              Bạn nhận được chuỗi "C200S" thì dựa vào đầu cuối là CS thì bạn lấy giá trị là 3 byte giữa.
              Tương tự chuỗi I60000S thì dựa vào IS để lấy 60000 ở giữa.
              Với cách này bạn có thể truyền mọi lúc đều OK.
              Hoặc bạn có thể truyền luôn cả 2 số bằng khung B 2 0 0 6 0 0 0 0 S.
              Đó chỉ là 1 ví dụ, còn khung thế nào bạn có thể tự tạo cho riêng mình.
              Cám ơn bạn .Bạn ơi. Cái kít này nó đã được lập trình sẵn rồi. Mình chỉ việc gửi code rồi nhận data của nó gửi lên thôi. mình cũng sử dụng oncom rồi nhưng sao nó hiển thị có mỗi một giá trị thôi. Khi truyền nó truyền lên một chuỗi lận.

              Private Sub MSComm1_OnComm()

              If (MSComm1.CommEvent = comEvReceive) Then
              H(k) = Val(Asc(MSComm1.Input))
              If (k = i) Then Text1.Text = H
              End If
              k = k + 1
              End Sub

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              Đang tải...
              X