Thông báo

Collapse
No announcement yet.

Nhờ mọi người chỉ giúp cách xử lý sms báo có tin nhắn tới của sim900a

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

  • #16
    Bạn myth-coder cho mình hỏi khi mình gửi lệnh từ con dspic lên cho con sim 900 nó có trả về kí tự "OK" , và khi có lệnh đọc tin nhắn thì sim nó vẫn đọc tin nhắn ra. Vậy thì có được xem là đã giao tiếp đúng tốc độ baud và truyền nhận được với con sim 900 chưa vậy bạn ?



    Nhưng khi nó trả cái nội dung tin nhắn ra và mình đọc rồi cất vào mảng và dùng lệnh putc để gửi 5 kí tự đầu tiên của mảng lên lại trên sim để mình quan sát trên Terminal thì lại thấy toàn kí từ lạ như hình:



    Comment


    • #17
      Code:
      Đây là code mình kiểm tra kí tự nhận được từ nội dung tin nhắn của sim900 trả về
      
      
      /*
      Dat tin nhan dang text:
      
      
      */
      
      #include <30F6014A.h>
      
      
      #FUSES NOWDT                    //No Watch Dog Timer
      #FUSES NOCKSFSM                 //Clock Switching is disabled, fail Safe clock monitor is disabled
      #FUSES NOBROWNOUT               //No brownout reset
      #FUSES HS2_PLL8   // Clock /2 *8
      #FUSES NOPROTECT
      
      #use delay(crystal=10000000)
      #use rs232(UART1, baud=9600, stream=UART_PORT1, PARITY=N, BITS=8)
      
      #include <input.c>
      #include <string.h>
      
      char nhan[100],c;
      
      unsigned int i,k,new_sms;
      
      void xulychuoi()
         {
            
                for(k=0;k<5;k++) // In ra 5 kí tự đầu tiên của mảng
                  {
                     putc(nhan[k]);
                  }
               
         }
      
      #INT_RDA
      void  rda_isr(void)
      {
         c=getc();
         if((c!=13) && (c!=10))
            {
               
               nhan[i]=c;
               i++;
            }
         else
         xulychuoi();
        }
         
      
      
      void main()
      {  
         i=0;
         set_tris_d(0x00);
         
         printf("ATE0\r\n");
         Delay_ms(500);
         
         printf("AT+CMGF=1\r\n");
         Delay_ms(500);
       
         printf("AT+CMGR=1\r\n");  
       
         
       
         enable_interrupts(INT_RDA);
         enable_interrupts(GLOBAL);
         
         
          
      
         
       
         
         while(1)
            {  
             
               }
               }

      Comment


      • #18
        .....................................

        Comment


        • #19
          GSM thì dễ nhận lệnh từ PIC thôi mà. Thực ra nếu bạn để ý thì khi bạn chạy cái lệnh AT để sét tốc độc baud cho con GSM thì thực chất con GSM nó đã nhận được rồi nên mới thực hiện lệnh, và mình nghĩ bước set baud là không cần thiết. Còn về max232 thì thực ra mình gần như chưa biết gì về điện tử đâu nên đừng hỏi nhiều, cái nào mình va và khắc phục như thế nào thì mình cũng đã nói rồi còn đâu.

          Comment


          • #20
            Bạn có code CCS nào cho mình chạy thử với. Hôm nay, mình dùng 2 con max232 để chuyển mức điện áp của 2 chân rx,tx của sim900 và dspic. Nhưng vẫn k thể nào đọc được cái nội dung text mà sim 900 trả về. Trong khi mình gửi text từ máy tính xuống nó vẫn chạy và nhận đầy đủ kí tự.

            Mình cho lệnh printf("AT+CMGR=1\r\n"); để gửi lệnh đọc tin nhắn ra cho con sim900. Và sim 900 trả về +CMGR: "REC UNREAD","+84934306492","","15/03/24,22:30:43+28" OUT1=0

            Trong ngắt, mình chỉ dùng hàm get() và putc() để xuất dữ liệu lên lại sim900 để quan sát xem nó nhận đc gì ? Thì cũng chỉ in ra toàn khoảng trắng mà k có kí tự nào.

            Comment


            • #21
              Tui không hiểu phần cứng hiện tại của bạn như thế nào?????

              Comment


              • #22
                hiện tại mình đang dùng uart1 gồm 2 chần RF2 và RF3 của con dsPic6014A và kết nối với 2 chân RX và TX của con sim900a. Hiện tại, mình vẫn gửi được lệnh từ con dspic lên modual sim900a và sim 900a có trả về các kí tự OK, và lệnh yêu cầu nó đọc tin nhắn ra nó vẫn trả về nội dung của tin nhắn. Vấn đề mình gặp phải là không thể nào đọc được cái nội dung của con sim900a nó trả về là gì ? Dù trong ngắt mình chỉ dùng hàm getc() và putc() để in ra lại kí tự của sim gửi cho pic qua uart thôi. Mình thử khi vào ngắt thì bật PORTD lên 0x0f thì thấy nó đã vào ngắt RDA nhưng không hiểu vì sao lại k bắt đc bất kì kí tự nào tự con sim trả xuống.


                Lúc đầu, mình nghi ngờ điện áp con sim 900a chạy 4.1 v và con dspic chạy 5v nên truyền bị lỗi. Và mình dùng 2 con max232 để đổi mức điện áp cho nó mà cũng k đc. Mặc dù trường hợp kết nối trực tiếp, hay kết nối thêm qua max232 thì text từ terminal truyền xuống cùng 1 code mà pic nhận đc đầy đủ text. Trong khi cái text con sim 900a đọc ra thì pic nó lại k bắt đc từ nào.

                Mình thấy con dspic sau khi nhận đc cái nội dung tin nhắn của con sim900a gửi xuống nó chỉ gửi lên lại cho con sim có cái mã 0d ( CR) mà k có nội dung gì hết. Trong ngắt mình dùng hàm c=getc(), sau đó dùng putc(c) để in ra lại liền luôn.



                Comment


                • #23
                  Cậu nói khó hiểu quá. ;(, có nghĩa là giờ cậu dùng 2 cổng UART 1 cổng nối với GSM, 1 cổng nối với máy tính???? nếu là thế thật thì tại sao không thử cứ nhận được ký tự nào từ GSM ta forward ngay sang cho máy tính xem con PIC đã nhận đúng chưa????? với cả có 2 cổng như thế thì làm sao mà biết getc() là get của UART nào và putc là put vào UART nào?????

                  Comment


                  • #24
                    Nguyên văn bởi myth-coder Xem bài viết
                    Cậu nói khó hiểu quá. ;(, có nghĩa là giờ cậu dùng 2 cổng UART 1 cổng nối với GSM, 1 cổng nối với máy tính???? nếu là thế thật thì tại sao không thử cứ nhận được ký tự nào từ GSM ta forward ngay sang cho máy tính xem con PIC đã nhận đúng chưa????? với cả có 2 cổng như thế thì làm sao mà biết getc() là get của UART nào và putc là put vào UART nào?????
                    mình sài có 1 cổng uart thôi bạn. Mình nối thêm cái mạch uart sang usb vào 2 chân rx và tx trên đường truyền để đọc dữ liệu truyền lên xuống của con pic và con sim. Chỉ cần đảo 2 dây rx và tx trên cái uart sang usb là mình đọc đc nội dung 2 đứa nó truyền với nhau.

                    Comment


                    • #25
                      2 cái mạch đó phải chung GND nhé, vì nếu không điện áp 2 bên chênh lệch bạn không chuyền được đâu và làm không đúng. xem lại đi nhé
                      Yêu em do duyên số
                      lấy em do sự cố xảy ra.........

                      Comment


                      • #26
                        Nguyên văn bởi takado Xem bài viết
                        2 cái mạch đó phải chung GND nhé, vì nếu không điện áp 2 bên chênh lệch bạn không chuyền được đâu và làm không đúng. xem lại đi nhé
                        trước khi làm, mình có nối mass hết bạn ah ? H mình đã nhận text đc hết rồi. Do cái trình dịch CCS nó bị sao sao đó. Mình đổ code khác đang chạy bình thường. Xong mình compile lại cái code k chạy. Thì nó bỗng lại nhận đc tất. Nói chung CCS nó hay bị lỗi này nọ.

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        Đang tải...
                        X