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

Collapse
This is a sticky topic.
X
X
 
  • Giờ
  • Show
Clear All
new posts
  • phủ phước
    Nhập môn đệ tử
    • Dec 2008
    • 2

    #46
    Truyền ADC 8 KÊNH

    Tôi có đoạn code viết trên ccs nhưng khi chạy trên vb thì chỉ có kênh 0 là được .Xin giúp tôi tìm chổ sai:

    Comment

    • phủ phước
      Nhập môn đệ tử
      • Dec 2008
      • 2

      #47
      Truyền ADC 8 KÊNH

      Tôi có đoạn code này nhưng nó chỉ truyền lên vb kênh 0 mà thôi ,xin góp ý giúp với .thank
      #include <C:\Program Files\PICC\Devices\16F877A.h>
      #device *=16 ADC=8
      #fuses HS,NOWDT,NOLVP,NOPROTECT
      #use delay(clock=20000000)
      #use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7)
      byte adc;
      byte buffer;
      #INT_TIMER0
      void send_data()
      {
      byte begin = 0xAA;


      adc = read_adc();
      putc(begin);
      putc(adc);

      }
      void main()
      {
      int channel;

      setup_adc_ports( ALL_ANALOG );
      setup_adc(ADC_CLOCK_INTERNAL );
      for (channel=0;channel<=7;channel++)
      {
      set_adc_channel( channel );

      setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);//sets the internal clock as source
      enable_interrupts(GLOBAL);
      enable_interrupts(INT_TIMER0); // ngat timer0 de update screen
      send_data();


      while(1)
      {
      buffer=getc();


      }
      }
      }

      Comment

      • HUT&I
        Nhập môn đệ tử
        • Dec 2008
        • 2

        #48
        Chào anh Bac!
        Thật mừng là PIC việt nam có một thành viên như anh.Càng mừng hơn khi anh lại là sinh viên DHBKHN.Em thấy anh tham gia rất nhiều diễn đàn trên mạng phục anh quá.Anh có phương pháp học nào học hiệu quả chỉ giúp cho em với. Nhất là học lập trình thực sự em rất ngại động vào nó ,mặc dù ngành chúng em rất cần đến nó. Thú thực với anh em học về nó rất nhiều nhưng kết quả thì trái ngược với những j mà em dành cho nó. Rất mong nhận được sự chỉ bảo của anh.Chúc anh học tốt ,Cảm ơn anh

        Comment

        • tungtot_vl
          Đệ tử 6 túi
          • Jul 2007
          • 154

          #49
          chào các bác. em muốn làm một mạch giao tiếp cổng của pc với 2 pic (ví dụ A và B). em muốn khi pc gửi data cho pic A thì chỉ có pic A nhận, B không nhận. khi pc gửi data cho pic B thì B nhận, A không nhận. các bác có cách nào thì xin chỉ mình giúp.

          Comment

          • hoangvanhuy
            Nhập môn đệ tử
            • Dec 2008
            • 1

            #50
            Minh đang hoc visual basic , nen vao day. đã đăng kí rồi nhưng sao ko tải được tài liệu...Bạn nào biết chỉ mình, cảm ơn nhiều.

            Comment

            • bacaynet
              Nhập môn đệ tử
              • Jan 2009
              • 2

              #51
              Anh Hải Bắc ơi! Tại sao em không lôi cái MSComm ra project của em được vậy anh! Em cần gấp để làm đồ án! Mong anh giúp đỡ, cảm ơn nhiều!

              Comment

              • bacaynet
                Nhập môn đệ tử
                • Jan 2009
                • 2

                #52
                Mấy anh chị cho em hỏi thêm là:
                - Code cho VDK 89 để nó và PC gửi nhận dữ liệu liên tục.
                - Còn trong VB, em làm code này, không biết có đúng không:

                Private Sub MSComm1_OnComm()
                If MSComm1.CommEvent = comEvReceive Then
                dRec = MSComm1.Input
                MSComm1.Output = dSend
                End If
                End Sub

                Comment

                • vandungevn
                  Đệ tử 5 túi
                  • Oct 2006
                  • 116

                  #53
                  Lâu rùi không vào mà thấy mọi người trao đổi nhiều quá. hiiic.
                  Bạn nên mã hóa để cho nó gửi không bị sai tín hiệu.
                  VD: gửi mã hóa => gửi dữ liệu => gửi checksum.

                  Như vậy nếu c.hỉ gửi không thì bạn sẽ dễ hơn đó.
                  Còn về ADC các bạn nên dùng ADC 10 bít thì tốt hơn, nó có độ phân giải cao hơn và độ chính sác cao hơn là dùng 8 bít (đương nhiên là 1024 sẽ lớn hơn 256).

                  ex code: // gửi số có giá trị là 16 byte là "datasend"

                  void send_to_pc(unsigned int datasend, char set){
                  unsigned char chksum;
                  putc(0xAD); // gui ma hoa
                  putc(0xDA); // gui ma hoa
                  putc(set); // chon che do gui
                  putc((datasend>>8)&0xff); // Gui byte cao
                  putc(datasend & 0xff); // Gui byte thap
                  chksum = ((datasend>>8)|datasend))%256; // kiem tra loi
                  putc(chksum); // gui byte kiem tra loi
                  }

                  gửi phủ phước
                  code của bạn sai trong vòng for bạn chưa kết thúc chương trình, nếu bạn để như vậy thì vòng For chỉ chạy lần đầu tiên, không gửi được các kênh adc còn lại là đúng. Nên để chương trình đọc adc là chương trình con và gửi luôn là ok. như trên bạn gửi "set" là các kênh adc khác nhau là ok. như vậy vừa có thể đọc adc theo kênh vừa gửi là ok không sợ bị lỗi và bị nhầm.......

                  Chúc thành công nhé.
                  Last edited by vandungevn; 28-02-2009, 11:51 PM. Lý do: Gửi thêm code mã hóa + kiểm tra lỗi.
                  Hãy chung sức vì nền Điện Tử Viêt Nam...! Sản Phẩm thương hiệu Việt "Made in Viet Nam"
                  Nguyen Van Dung - Nguyễn Văn Dũng. Mobile : (+84) 97 329 1368
                  Nick name : VanDungEvn ( Yahoo + Skype )
                  Tư vấn & thiết kế điện tử + Làm mạch in + Hoàn thiện sản phẩm điện tử. Mạch nạp 89-PIC-AVR.
                  Email: vandungevn@gmail.com Website: www.dientuphuongdung.com
                  Xóm Mới - Nguyên Xá - Minh Khai - Từ Liêm - Hà Nôi - Viet Nam.

                  Comment

                  • tranvangvn
                    Nhập môn đệ tử
                    • Feb 2009
                    • 7

                    #54
                    Các bác ơi giúp em với em giao diện vi điều khiển với máy tính bằng vb.còn vi điều khiển em viết bằng ngôn ngữ c
                    Vb em viết đơn giản sau:
                    Private Sub Command1_Click()
                    End
                    End Sub

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

                    Private Sub MSComm1_OnComm()
                    Dim strf As String
                    Do
                    DoEvents
                    Loop Until MSComm1.InBufferCount >= 50
                    strf = MSComm1.Input
                    L.Caption = strf

                    End Sub
                    Vi điều khiển em viết như sau:em dùng 89C52
                    #include<REG52.H>
                    #include<stdio.h>
                    void xung()
                    {
                    SCON= 0x50;
                    TMOD= 0x20;
                    TH1 = 0xF3;
                    TR1 = 1;
                    TI = 1;
                    }
                    main()
                    {
                    int i;
                    P1=0x00;
                    xung();
                    for(;
                    {
                    P1=0x01;
                    printf("CHUNG TOI LA NNUNG CHIEN SI");
                    } }
                    Nhưng không hiểu trên máy tính toàn nhận kí tự gì ấy không được như ý nắm và báo nỗi "28", thỉnh thoảng được thì hiển thị kí tự quá nhiều và phụ thuộc vào cái này:Loop Until MSComm1.InBufferCount >= 50
                    Các bác nào bớt chút thời gian giải thich và khác phục cho em với
                    Tiện thể cho em mấy chương trình xuất nhập đơn giản trên VB và cả VDK một chương trình mà khi ta bấm 1 phím mà trên VDK các post xuất cho tín hiệu để điều khiển và ngược lại VDK gửi tín hiệu máy tính mà hiển thị trên màn hình
                    Các bác có gắng các lệnh đều phải có chú giải nhé !
                    Cám ơn những nhà thông thái!

                    Comment

                    • tranvangvn
                      Nhập môn đệ tử
                      • Feb 2009
                      • 7

                      #55
                      Gủi theo địa chỉ tranvang8@yahoo.com

                      Comment

                      • tranvangvn
                        Nhập môn đệ tử
                        • Feb 2009
                        • 7

                        #56
                        Các bác cho em cả các mã lệnh trong C với VDK truyền thông nối tiếp nhé!

                        Comment

                        • tranvangvn
                          Nhập môn đệ tử
                          • Feb 2009
                          • 7

                          #57
                          Các bác ơi giúp em với em giao diện vi điều khiển với máy tính bằng vb.còn vi điều khiển em viết bằng ngôn ngữ c
                          Vb em viết đơn giản sau:
                          Private Sub Command1_Click()
                          End
                          End Sub

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

                          Private Sub MSComm1_OnComm()
                          Dim strf As String
                          Do
                          DoEvents
                          Loop Until MSComm1.InBufferCount >= 50
                          strf = MSComm1.Input
                          L.Caption = strf

                          End Sub
                          Vi điều khiển em viết như sau:em dùng 89C52
                          #include<REG52.H>
                          #include<stdio.h>
                          void xung()
                          {
                          SCON= 0x50;
                          TMOD= 0x20;
                          TH1 = 0xF3;
                          TR1 = 1;
                          TI = 1;
                          }
                          main()
                          {
                          int i;
                          P1=0x00;
                          xung();
                          for(;
                          {
                          P1=0x01;
                          printf("CHUNG TOI LA NNUNG CHIEN SI");
                          } }
                          Nhưng không hiểu trên máy tính toàn nhận kí tự gì ấy không được như ý nắm và báo nỗi "28", thỉnh thoảng được thì hiển thị kí tự quá nhiều và phụ thuộc vào cái này:Loop Until MSComm1.InBufferCount >= 50
                          Các bác nào bớt chút thời gian giải thich và khác phục cho em với
                          Tiện thể cho em mấy chương trình xuất nhập đơn giản trên VB và cả VDK một chương trình mà khi ta bấm 1 phím mà trên VDK các post xuất cho tín hiệu để điều khiển và ngược lại VDK gửi tín hiệu máy tính mà hiển thị trên màn hình
                          Các bác có gắng các lệnh đều phải có chú giải nhé !
                          Cám ơn những nhà thông thái!
                          Các bác cho em các hàm trong C hay trong KEIL về giao tiếp máy tính nhé

                          Comment

                          • tranvangvn
                            Nhập môn đệ tử
                            • Feb 2009
                            • 7

                            #58
                            Giao tiếp RS232 trên PC bằng Visual Basic.

                            Các bác ơi giúp em với em giao diện vi điều khiển với máy tính bằng vb.còn vi điều khiển em viết bằng ngôn ngữ c
                            Vb em viết đơn giản sau:
                            Private Sub Command1_Click()
                            End
                            End Sub

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

                            Private Sub MSComm1_OnComm()
                            Dim strf As String
                            Do
                            DoEvents
                            Loop Until MSComm1.InBufferCount >= 50
                            strf = MSComm1.Input
                            L.Caption = strf

                            End Sub
                            Vi điều khiển em viết như sau:em dùng 89C52
                            #include<REG52.H>
                            #include<stdio.h>
                            void xung()
                            {
                            SCON= 0x50;
                            TMOD= 0x20;
                            TH1 = 0xF3;
                            TR1 = 1;
                            TI = 1;
                            }
                            main()
                            {
                            int i;
                            P1=0x00;
                            xung();
                            for(;
                            {
                            P1=0x01;
                            printf("CHUNG TOI LA NNUNG CHIEN SI");
                            } }
                            Nhưng không hiểu trên máy tính toàn nhận kí tự gì ấy không được như ý nắm và báo nỗi "28", thỉnh thoảng được thì hiển thị kí tự quá nhiều và phụ thuộc vào cái này:Loop Until MSComm1.InBufferCount >= 50
                            Các bác nào bớt chút thời gian giải thich và khác phục cho em với
                            Tiện thể cho em mấy chương trình xuất nhập đơn giản trên VB và cả VDK một chương trình mà khi ta bấm 1 phím mà trên VDK các post xuất cho tín hiệu để điều khiển và ngược lại VDK gửi tín hiệu máy tính mà hiển thị trên màn hình
                            Các bác có gắng các lệnh đều phải có chú giải nhé !
                            Cám ơn những nhà thông thái!
                            Các bác cho em các hàm trong C hay trong KEIL về giao tiếp máy tính nhé

                            Comment

                            • t_duyphuong
                              Nhập môn đệ tử
                              • Feb 2009
                              • 3

                              #59
                              giao tiep RS232

                              Anh Hải Bắc ơi! Cho em hỏi : Em đã dùng đoạn code mà anh post lên về giao tiếp RS232 bằng VC++ nhưng khi biên dịch thì chuơng trình báo lỗi là chưa định nghĩa "COM1" và "COM2". Anh có thể chỉ cho em cách sửa lỗi không ạ?
                              Em vẫn chưa hiểu là chuơng trình tự nhận ra cổng COM hay là mình phải cấu hình như thế nào cho nó?
                              Cho em hỏi luôn là trên máy tính nó có ghi cho mình biết cái nào là "COM1" và "COM2" cho mình biết ko?
                              Em xin cám ơn!!!!!!!!!!!!!!!!!

                              Comment

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

                                #60
                                i'm beginning

                                chào mọi người . mình mới nghiên cứu về pic.
                                chủ đề giao tiếp này mình thấy cực cực hay & thực tế.
                                mới tìm hiểu nên lùng bùng quá. có gì nhờ mọi người giúp ( dù câu hỏi ngây thơ nhưng đừng cười nha).
                                mình tự tin là mình làm được.
                                " impossible is nothing "

                                Comment

                                Working...