Thông báo

Collapse
No announcement yet.

Giao tiếp RS232 trên PC bằng Visual Basic 6.0

Collapse
This is a sticky topic.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #31
    Nguyên văn bởi nbb3i Xem bài viết
    Form Load là những thứ khi chương trình được mở ra nó sẽ ngay lập tức thực hiện.
    Phải ko nhỉ?
    Vậy chương trình giao tiếp nào với cổng COM, cũng cần "From_Load" phải ko bác?
    Nhưng "From_Load" ko có cái nút lệnh nào tr6n giao diện à? Mình chỉ thêm đoạn lệnh From Load vào để chạy thôi à?
    Thank you

    Comment


    • #32
      Nguyên văn bởi h_h_h Xem bài viết
      Em cũng mới học VB , và xem mục này thấy anh Bắc hướng dẫn chi tiết, em cũng thử làm 1 chương trình nhỏ truyền ký tự giữa máy tinh qua cổng com và em có thêm một số chức năng hay , gửi lên cho mọi người xem và cho ý kiến.
      bác ơi,bác up lên mạng cái đã sử dụng được rùi, bác có thể up mã nguồn lên cho anh em tham khảo dc ko ????????

      Comment


      • #33
        Nguyên văn bởi tpasterisk Xem bài viết
        Vậy chương trình giao tiếp nào với cổng COM, cũng cần "From_Load" phải ko bác?
        Nhưng "From_Load" ko có cái nút lệnh nào tr6n giao diện à? Mình chỉ thêm đoạn lệnh From Load vào để chạy thôi à?
        Thank you
        Tốt nhất là như thế.
        Form_Load là đoạn khai báo những đoạn code được thực thi khi cái "Form" (chương trình chính) được "Load" (được mở). Bản chất của nó cũng giống như cái Button_Click() ấy chả có gì khác cả.
        123...

        Comment


        • #34
          MScomm1.SThreshold là tham số cài đặt ngắt truyền của cổng com. Dặt =0 có nghĩa là không có ngắt xảy ra khi truyền tin từ máy tính. VD đặt =10 có nghĩa khi phần cứng máy tính gửi đi được 10 byte thì nó sẽ phát sinh một tín hiệu ngắt. Tín hiệu ngắt này được nhận biết trong sự kiện Oncom.

          Comment


          • #35
            Mình đang làm cái VB để làm giao diện với VXL.
            Mình đã thiết kế như các bạn nói ở trên nhưng không hiểu sao khi VXL của mình gửi ra một giá trị kiểu INT (là số 15 chẳng hạn) thì trên giao diện không hiển thị đúng số 15 mà nó hiển thị một kiểu khác. Làm thế nào để hiển thị giá trị thực từ VXL gửi ra.
            Mong các bạn giúp đỡ . đây là code VB của mình

            Private Sub Command1_Click()
            On Error GoTo OpenFalse
            If MSComm1.PortOpen = False Then
            MSComm1.PortOpen = True
            End If
            Exit Sub
            OpenFalse:
            MsgBox Err.Description & vbLf + vbCr + "Loi, khong the mo cong. Hay dong cac ung dung dang su dung cong COM"

            End Sub

            Private Sub Command2_Click()
            If MSComm1.PortOpen = True Then
            MSComm1.PortOpen = False
            End If
            End
            End Sub

            Private Sub Command3_Click()
            On Error GoTo sendfalse
            MSComm1.Output = Text1.Text
            Exit Sub
            sendfalse:
            MsgBox Err.Description & vbLf + vbCr + "Loi, Cong COM chua duoc mo, nhan Connect"
            End Sub

            Private Sub Form_Load()
            With MSComm1
            .Settings = cmbBaudRate.Text + "N,8,1"
            .RThreshold = 1
            .SThreshold = 0
            .InBufferSize = 1024
            .OutBufferSize = 1024
            .InputMode = comInputModeText
            .ParityReplace = ""
            .CommPort = Switch(cmbComPort.Text = "COM 1", 1, cmbComPort.Text = "COM 2", 2, cmbComPort.Text = "COM 3", 3, cmbComPort.Text = "COM 4", 4)
            End With
            End Sub

            Private Sub MSComm1_OnComm()
            Dim StringIn As String
            If MSComm1.CommEvent = comEvReceive Then
            StringIn = MSComm1.Input 'Nhan chuoi du lieu to VCOM
            Text2.Text = StringIn
            End If
            End Sub

            Comment


            • #36
              Bạn cộng thêm offset cho số bạn gửi lên vi xử lý để VB có thể hiển thị nó dưới dạng Text
              Ví dụ:
              Giả sử bạn muốn gửi số 1 từ vi xử lý lên hiển thị trên VB
              Trên Vi xử lý gửi putc(49) ; 1+48 =49
              trên VB giữ nguyên lệnh: Text2.Text = StringIn
              nếu ko cộng trên vi thì cộng trên VB cũng được: lấy mã ASCII của ký tự nhận được cộng thêm 48 rồi cho hiển thị.
              Còn nếu muốn hiển thị từng ký tự (VD: 15) thì bạn phải tách nó ra gửi lần lượt 2 số 1 và 5 sau đó trên VB cũng cộng thêm 48 vào từng số nhận được.
              Tại sao cộng thêm 48 thì bạn tham khảo thêm ở đây: http://www.asciitable.com/
              123...

              Comment


              • #37
                cám ơn các bác đã giúp đỡ tận tình. em đã xử lý được phần này rồi.

                Rất đơn giản. không cần cộng thêm 48
                đưa vào một mảng kiểu byte rồi dùng vòng for cho hiển thị ra là ok.

                Ở VB . mình khai báo

                X() As Byte
                Y As Byte / là số kí tự cần hiển thị
                x()= mscomm.input
                for i=0 to y-1
                abc. Text = abc.Text + x(i)
                next

                Comment


                • #38
                  Cách mới này đơn giản đấy .
                  Bạn có thể chú thích chi tiết hơn về đoạn code trên không?
                  123...

                  Comment


                  • #39
                    code vb:

                    Dim s As String
                    Dim s2 As String
                    Private Sub Command1_Click()
                    s = Text1.Text
                    MSComm1.Output = s
                    End Sub

                    Private Sub Command2_Click()
                    s2 = MSComm1.Input
                    If (s2 = "c") Then
                    Text.Text2 = "DHBKHN"
                    End If
                    Text3.Text = "TOI LA TOI"
                    End Sub

                    Private Sub Command3_Click()
                    End
                    End Sub

                    Private Sub Form_Load()
                    MSComm1.CommPort = 1
                    MSComm1.Settings = "9600,n,8,1"
                    MSComm1.PortOpen = True
                    End

                    code c trong CCS:
                    #include <18F4550.h>
                    //#device ADC=10
                    #fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG
                    #use delay(clock=20000000)
                    #use rs232( baud=9600, xmit=PIN_C6, rcv=PIN_C7)

                    char s=0;

                    #INT_RDA
                    void RDA_isr()
                    {
                    s=getc();
                    puts(s);
                    output_bit(PIN_B4,1);
                    }

                    VOID main()
                    {
                    set_tris_B(00000000);
                    enable_interrupts(GLOBAL);
                    enable_interrupts(INT_RDA);
                    output_b(0x01);

                    while(1){}
                    }

                    các bác cho em hỏi, tại sao khi em truyền kí tự c từ PC xuống thì em lại không nhận được kí tự c từ cổng Com? có ai biết thì giúp em nhé.

                    Comment


                    • #40
                      Nguyên văn bởi bac86_bk3i Xem bài viết
                      các bác cho em hỏi, tại sao khi em truyền kí tự c từ PC xuống thì em lại không nhận được kí tự c từ cổng Com? có ai biết thì giúp em nhé.
                      Bạn nhận được ký tự gì thế?
                      khi đàn sếu bay qua

                      Comment


                      • #41
                        Cho mình hỏi có ai biết hàm nào trong VC++ dùng để chuyển đổi chuỗi thành giá trị byte ko? Sao mình chỉ tìm thấy những hàm đổi chuỗi ra giá trị integer hay double..... nhưng ko có hàm nào dùng để đổi ra byte cả

                        Comment


                        • #42
                          Các bạn cho mình hỏi không hiểu sao ở PLC mình mã hóa ra ký tự ASCII rồi mà khi truyền lên VB6.0 thì khi dùng lệnh StringIn = MsComm1.Input thì vẫn hiển thị chuỗi bình thường. Thế nhưng khi mình dùng lệnh chuyển chuỗi sang dạng số thì lại báo lỗi. Speed = cdbl(StringIn). Khi debug thì mình thấy StringIn có dạng các ký tự ô trống. Phải xử lý thế nào đây. Các bạn giúp mình với nhé.

                          Comment


                          • #43
                            Nguyên văn bởi h_h_h Xem bài viết
                            Em cũng mới học VB , và xem mục này thấy anh Bắc hướng dẫn chi tiết, em cũng thử làm 1 chương trình nhỏ truyền ký tự giữa máy tinh qua cổng com và em có thêm một số chức năng hay , gửi lên cho mọi người xem và cho ý kiến.
                            em tải về mà không dùng được bác ạ

                            Comment


                            • #44
                              Có ai thử truyền tín hiệu từ AVR-CDC về VB 6.0 chưa, ví dụ em dùng kiểm tra ComEvents = OnComReceive sau đó lấy Textbox.text = Comm1.Input
                              Ví dụ:
                              Chuỗi gửi về có dạng "103S204A405B"
                              Thì nhận được tại Textbox ko hoàn toàn như vậy, thường là bị lỗi
                              Chuỗi nhận tại Textbox có khi là "405B" có khi là "204A405B", rất ít khi nhận đúng chuỗi gửi về. Ai thử làm vấn đề này giải thích hộ em chút...

                              Comment


                              • #45
                                Em có dùng bộ chuyển đổi RS485-RS232 để giao tiếp với máy tính, nhưng con Max485 lại có 1 chân điều khiển đường truyền(Transmitt or Receive). Vậy làm sao để có thể điều khiển được chân này từ máy tính? Theo như em biết có thể dùng chân RTS của cổng com, nhưng em không biết tác động đến chân này bằng cách nào.

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                • mèomướp
                                  Trả lời cho Công thức điện tử
                                  bởi mèomướp
                                  Dạ thời thế giờ thay đổi theo hướng tích cực hơn rồi chú trung sĩ ạ. Kiến thức được chia sẻ ngày càng nhìu nên làm ăn gian dối ko còn dễ dàng như trước đâu ạ. Những thợ nhỏ rồi sẽ thành công nhân sản xuất đồ mới hết thay vì sửa chữa lặt vặt...
                                  Hôm qua, 21:21
                                • mèomướp
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi mèomướp
                                  Dạ cùng chuẩn tín hiệu thì chắc chắn là nhận ạ. Vì bản chất oled hay lcd thì đều phải có mạch chuyển đổi trên thanh gỗ rồi chuyển sang những chip xử lý hàng nghìn chân gắn trên những tab mỏng dính rồi mới ra các điểm ảnh theo hàng...
                                  Hôm qua, 20:31
                                • yname11
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi yname11
                                  Ok , thanks bác đã chỉ...
                                  Hôm qua, 15:06
                                • nguyendinhvan
                                  Công thức điện tử
                                  bởi nguyendinhvan
                                  Sau bao năm nghiên cứu cái dtvn. Tôi phát hiện công thức này. Các anh em xem đúng bao nhiêu phần trăm nhé !

                                  Chập thì thay. Cháy thì tháo
                                  Làm thì láo. Báo thì hay
                                  May thì khoe. Rủi thì bỏ
                                  Thành tích nhỏ. Báo thành to
                                  Làm cho có. Báo chi li
                                  Sai cả li. Báo
                                  ...
                                  Hôm qua, 00:35
                                • yname11
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi yname11
                                  có chắc ko b, màn lcd phải có cao áp mới sáng, màn led thì ko có, ko có cáp chuyển đổi thì lắp thế nào đc ??...
                                  25-11-2024, 22:31
                                • mèomướp
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi mèomướp
                                  Dạ ý chú là màn oled ấy ạ. Cùng chuẩn lvds cùng độ phân giải thì cắm được ạ. Còn nó mà khác thì hơi khó vì oled các điểm ảnh nó tự phát sáng chứ ko dùng đèn nền như lcd. Cháu chỉ biết đến vậy thôi ạ. Chú muốn nghịch phải tự tìm hiểu kỹ trước khi mua thôi, khó mà ông thợ nào tư vấn vụ này...
                                  25-11-2024, 22:14
                                • bactho
                                  Trả lời cho Tự làm máy đo Cuộn cảm
                                  bởi bactho
                                  Hay đấy bạn ạ. Đây có thể hiểu là máy đo cuộn dây. Tiện đây xin cho hỏi bạn có hiểu rõ về máy nạp rôm pcb 45 của hãng thiên minh không giúp mình cách cài fw của nó với vì mình vừa được anh bạn cho nhưng lại không biết cài fw nên chưa dùng được. Nếu có thể thì bạn giúp mình với...
                                  25-11-2024, 21:48
                                • yname11
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi yname11
                                  màn của mình là LCD , giờ m muốn mua màn LED để thay thế (ko muốn dùng màn LCD nữa) , lên muốn hỏi xem có cáp chuyển đổi nào có thể cắm đc màn LED vào ko , tất nhiên phải có cùng số chân pin với màn cũ rồi . VD: màn cũ là lcd mỏng , 40 pin...
                                  25-11-2024, 21:43
                                • bactho
                                  Trả lời cho các bạn giúp mình về file HEX với!!!
                                  bởi bactho
                                  Bạn vào trang phuclanshop.com ,tìm đến góc kỹ thuật. Tác giả vương khánh hưng nói rất rõ về điều bạn tìm...
                                  25-11-2024, 21:21
                                • mèomướp
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi mèomướp
                                  Dạ màn hình lcd đều có thể lai cấy cho nhau được hết ạ. Các loại cáp, bo mạch chuyển đổi lvds rất nhìu, với dòng sony còn phải nhổ cả chip nhớ của main cũ đưa lên gỗ thì mới lắp sang máy khác đc, chưa kể các bệnh về màu... ngay cả...
                                  25-11-2024, 20:43
                                Đang tải...
                                X