Giao tiếp RS232 trên PC

Collapse
This is a sticky topic.
X
X
 
  • Giờ
  • Show
Clear All
new posts
  • tpasterisk
    Nhập môn đệ tử
    • Mar 2009
    • 5

    #121
    Em chào các bác, em thấy mọi người thảo luận xôn xao về giao tiếp cổng COM, cÓ rất nhìu bài hay luôn, nhưng em chưa thấy bác nào nói về tập lệnh AT.
    Chẳng dấu là : em đang tìm hiểu tập lệnh AT, sau khi thiết lập giao tiếp với cổng COM, em muốn gửi, nhận tin nhắn bằng tập lệnh AT qua GSM modem G2403R .
    Bác nào đã từng nghiên cứu về tập lệnh AT, cũng như là gửi nhận tin nhắn dùng tập lệnh AT xuất ra cổng COM -> GSM modem G2403R thì giúp em với.
    Hiện tại em chưa biết viết câu lệnh như thế nào để xuất những câu lệnh AT ra cổng COM........................

    Comment

    • chinh_coc
      Nhập môn đệ tử
      • Apr 2009
      • 3

      #122
      Nếu viết bằng VB thì mình có xử lý được hiển thị giá trị thực không. đầu vời ccomms là int còn hiển thị ra giá trị cstring

      Comment

      • nguyennam8888
        Đệ tử 3 túi
        • Dec 2008
        • 50

        #123
        bài tập truyền nhận cơ bản đầu tiên

        các bác giúp em với, nghĩ mãi mà chưa làm được , chương trình của em nó chỉ nhận thôi, nhưng khi nhận xong thì PIC lại không thấy hiển thị, còn truyển ngược lại thì chưa đươc
        code trong Pic:
        #include <16F877a.h>
        #include <DEFS_16F877A.h>
        #fuses HS,NOWDT,NOPROTECT,NOLVP
        #use delay(clock=20000000)
        #use rs232(baud=9600,parity=n, xmit=PIN_C6, rcv=PIN_C7)
        unsigned char dulieu;
        #INT_RDA
        void data_receive(void)
        {
        dulieu = getc();
        putc(dulieu);
        }
        void main()
        {
        set_tris_a(0);
        ENABLE_INTERRUPTS(GLOBAL);
        ENABLE_INTERRUPTS(INT_RDA);
        while(true)
        {
        output_a(dulieu);

        delay_ms(2000);
        }
        }
        code trong VB:

        Private Sub cmdClear_Click()
        Text1.Text = ""

        End Sub

        Private Sub cmdExit_Click()
        Unload Me
        End Sub

        Private Sub cmdSend_Click()
        MSComm1.Output = Text2.Text
        End Sub

        Private Sub Form_Load()
        cmdSend.Caption = "&Send"
        Text1.Text = ""
        Text2.Text = ""
        Text1.Enabled = False
        cmdExit.Caption = "&Exit"
        With MSComm1
        .Settings = "9600,N,8,1"
        .CommPort = 4
        .RThreshold = 1
        .SThreshold = 0
        .InputMode = comInputModeText
        .InputLen = 0
        .Handshaking = comNone
        .InBufferSize = 1024
        .OutBufferSize = 1024
        If .PortOpen = False Then
        .PortOpen = True
        End If

        End With
        End Sub

        Private Sub MSComm1_OnComm()
        If MSComm1.CommEvent = comEvReceive Then
        Text1.Text = Text1.Text + Asc(MSComm1.Input)
        End If
        End Sub
        (em tìm mãi mà không thấy chỗ nào để viết code.)
        Last edited by nguyennam8888; 10-04-2009, 08:56 AM.

        Comment

        • sinhthai
          Nhập môn đệ tử
          • Mar 2009
          • 6

          #124
          Pak hải ơi !cho em hỏi về rs232 cái:em muốn bít về nó mà em thì chưa bít j cả.pak có thể giúp em hỉu đôi chút về nó ko.có tài liệu nào bằng tiếng việt nói về nó ko pak.cám ơn pak nhìu
          Đừng giấu em anh có một trái tim biết khóc
          Một trái tim khao khát vỗ về
          Trái tim non, trái tim mềm quá thể
          Trước em mà sao nỡ giấu che đi...

          Comment

          • sinhthai
            Nhập môn đệ tử
            • Mar 2009
            • 6

            #125
            pak nao co tài liệu tiếng việt về cổng com ko.em đang rất cần.thanks các pak nhìu,
            Đừng giấu em anh có một trái tim biết khóc
            Một trái tim khao khát vỗ về
            Trái tim non, trái tim mềm quá thể
            Trước em mà sao nỡ giấu che đi...

            Comment

            • trinhminhson86
              Nhập môn đệ tử
              • Oct 2008
              • 2

              #126
              Em đang tìm hiểu cách giao tiếp cổng COM bằng VC++ bằng cách sử dụng thư viện inpout32 qua win 32.Bác nào biết về cái này thì hướng dẫn e với.

              Comment

              • digan
                Đệ tử 1 túi
                • Jan 2006
                • 14

                #127
                Xin chào! Mình thử giao tiếp mãi mà ko dc không biết sai sót ở đâu. mình dùng cachs bật các led ở Port b để báo là có truyền thông
                #include <16f877a.h>
                #include <def_877a.h>
                //#device *=16 ADC=8
                #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOWRT
                #use delay(clock=20000000)
                #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=9)
                char buf;
                int a;
                // Ngat Truyen thong
                #INT_RDA
                Receive_isr()
                {

                buf=getc();
                putc(buf);
                PORTB=0x00;

                Các cao thủ KT hộ với. tôi nghi là sai phần khai báo(đánh dấu), nhưng mục này thường copy nên ko rõ bản chất

                Comment

                • ThaoBinh90
                  Đệ tử 1 túi
                  • Feb 2009
                  • 19

                  #128
                  Mình cũng đang làm RS232, đang gặp khó khăn về buffer của RS232. Khi chương trình PIC gởi lên một chuổi nào đó, trình ứng dụng đọc chuỗi này chưa hết thì nó vẫn còn trog bộ đệm làm ảnh hưởng đến lệnh sau đó. Có ai đó chỉ mình xóa bộ đệm của RS232 giúp mình với.

                  Comment

                  • tucn87
                    Đệ tử 1 túi
                    • Apr 2009
                    • 11

                    #129
                    anh Hải ơi, em làm theo cái TUT của anh nhưng đến đoạn thêm điều khiển AxtiveX Microsoft Communications 6 thì bị lỗi "don't send". Em dùng bản Visual Studio 6 Enterprise Edition.

                    Comment

                    • mtuankct
                      Đệ tử 6 túi
                      • Apr 2006
                      • 125

                      #130
                      Bạn cài lại VS

                      Comment

                      • tucn87
                        Đệ tử 1 túi
                        • Apr 2009
                        • 11

                        #131
                        Nguyên văn bởi mtuankct View Post
                        Bạn cài lại VS
                        em cài lại rồi vẫn không được (

                        Comment

                        • mtuankct
                          Đệ tử 6 túi
                          • Apr 2006
                          • 125

                          #132
                          Nếu khôg được thì cài lại win đi haha hoặc có thể thử kiếm cái đĩa cài VS khác xem sao

                          Comment

                          • tucn87
                            Đệ tử 1 túi
                            • Apr 2009
                            • 11

                            #133
                            sau bước 1 của TUT, xóa 2 nút OK, CANCEL và dòng văn bản tĩnh TODO thì VC báo lỗi don't send và thoát ra ngoài, vậy là lỗi gì vậy các anh?

                            Comment

                            • chinh_coc
                              Nhập môn đệ tử
                              • Apr 2009
                              • 3

                              #134
                              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

                              • phandinh
                                Đệ tử 6 túi
                                • Nov 2008
                                • 131

                                #135
                                dữ liệu mà VB nhận ở dạng internal number , để hiển thị ra màn hình bạn phải chuyển về dạng text string :
                                bạn thử thay Text2.Text = Cstr(StringIn)
                                hoặc Text2.Text = Asc(StringIn) xem

                                Comment

                                Working...