Thông báo

Collapse
No announcement yet.

cần giúp gởi tin nhắn với module sim300cz

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

  • cần giúp gởi tin nhắn với module sim300cz

    chào mọi người,.
    em hiện đang làm đồ án với con sim300CZ+pic
    em test thử module sim qua Hyper thì thấy ok hết,cả nhắn tin và thực hiện cuộc gọi.
    và em cũng đã thử lun con pic qua Hyper xem có gởi đúng lệnh theo kiểu AT hay ko,và thấy hắn gởi cũng chính xác.
    Thế khi em kết nối trực tiếp con pic với module sim để thử gởi 1 tin nhắn,thì lại ko chạy được ạ
    AC nào có kinh nghiệm làm phần này rồi hay đã từng gặp lỗi giống như em,thì xin AC chỉ giúp em với ạ.
    Đoạn code trên Pic của em :
    Code:
    #include <18f26K20.h>
    #device ADC=10
    
    #fuses HS,NOWDT,NOPROTECT,NOLVP
    #use delay(clock=11059000)
    #include <stdio.h>
    #include <string.h>
    #include <stdlibm.h>
    #include <stdlib.h>
    #use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7) // baud= 9600, chan truyen C6, chan nhan C7
    
    
    #BYTE PORTA =0xf80
    #BYTE PORTB =0xf81
    #BYTE PORTC =0xf82
    #BYTE ANSELH= 0xF7F
    #BYTE ANSEL  = 0xF7E
    #BYTE TRISA  = 0xF92
    #BYTE TRISB =  0xF93
    #BYTE ADCON2 = 0xFC0
    #BYTE ADCON1 = 0xFC1
    #BYTE ADCON0 = 0xFC2
    #BYTE INTCON = 0xFF2
    #BYTE INTCON2 = 0xFF1
    #BYTE INTCON3 = 0xFF0
    #BYTE T0CON =  0xFD5
    #BYTE TMR0L = 0xFD6
    #BYTE TMR0H = 0xFD7
    #BYTE PIR1 = 0x0F9E
    #BYTE PIE1 = 0x0F9D
    #BYTE T1CON = 0x0FCD
    #BYTE T1GCON = 0x0F9A
    #BYTE TCLKCON = 0x0F52
    //***********************************************************************************************
    #bit INTCON_GIEH = INTCON.7
    #bit INTCON_GIEL = INTCON.6
    #bit INTCON_TMR0IE = INTCON.5
    #bit INTCON_TMR0IF = INTCON.2
    #bit INTCON2_TMR0IP = INTCON2.2
    #bit INTCON_INT0IE = INTCON.4
    #bit INTCON_INT0IF = INTCON.1
    #bit INTCON2_INTEDG0 = INTCON2.6
    #bit INTCON2_INTEDG1 = INTCON2.5
    #bit INTCON3_INT1IE = INTCON3.3
    #bit INTCON3_INT1IF  = INTCON3.0
    #bit  TRISAbits_TRISA0 = TRISA.0
    #bit  TRISAbits_TRISA1 = TRISA.1
    #bit  TRISAbits_TRISA2 = TRISA.2
    #bit  TRISAbits_TRISA3 = TRISA.3
    #bit  TRISAbits_TRISA4 = TRISA.4
    #bit  TRISBbits_TRISB1 = TRISB.1
    #bit  TRISBbits_TRISB0 = TRISB.0
    
    
    //char chuoi_sms="ON_1"; // khai bao chuoi nay de so sanh vs tn,neu tn goi den on 1 thi ham ss chuoi return ve 1,bat role
    //char chuoi_sms2="ON_2"; 
    
    void send_sms(void)
    {
       printf("AT+CMGS=\"0905638093 \"\n"); 
       delay_ms(2000);
       printf("hello Chuan  ^__^ ");
       putc(26); //Ctrl+z,,, enter=13
       delay_ms(1000);
    }
    
    void call(void)
    {
      printf("ATD0905638093;"); 
      putc(13);
      delay_ms(400);
    }
    
    void gsm_config()
    {     
          delay_ms(4000);
          printf("AT\n\r");
          delay_ms(500); 
          printf("AT\n\r");
          delay_ms(500);
          printf("AT\n\r");
          delay_ms(500); 
          printf("AT\n\r");
          delay_ms(500);
          printf("AT+CMGF=1\n\r");
          delay_ms(500);
          printf("AT+CMGF=1\n\r");
          delay_ms(500);
    }
    void main()
    {
     set_tris_c(0x80); 
     
     gsm_config();
     send_sms();
     
     while(true)
      {
      
      }
    }
    Em cảm ơn mọi người đã đọc bài ạ
    thân chào.
    NTC ^^ 112
    YM:ramromct
    Mail:

  • #2
    Cho xin cái mạch nguyên lý.

    Theo như mình nhận xét code này bạn viết khá sơ sài, chưa có kiểm tra module sim xem đã khởi động chưa, chưa có kiểm tra phản hồi sau khi gửi tin nhắn.
    Mình đọc code chỉ thấy bạn setting cho module của bạn ở chế độ mode text nhưng mình nhớ khi làm việc giữa pic và sim300 để có thể gửi tin nhắn, đọc tin nhắn tức thời cần phải setting ở 1 vài chỗ nữa. Nếu bạn đã setting rồi nên up luôn phần setting để tiện theo dõi.

    Chúc bạn thành công!

    Ngô Đông Y
    ********
    Mobile : 0984053088
    Yahoo : mailabautroixanh_39@yahoo.com
    Email : mailabautroixanh39@gmail.com
    Last edited by lightspy39; 01-05-2011, 00:17.
    Ngô Đông Y
    ********
    Mobile : 0984053088
    Yahoo :
    Email :

    Comment


    • #3
      em đã sửa được rồi,code ko có sai đâu ạ,kiểm tra mạch cứng bị hở chỗ switch ạ.
      thân,
      NTC ^^ 112
      YM:ramromct
      Mail:

      Comment


      • #4
        Em cũng đang làm đề tài này, cũng test sim qua hyper gửi sms va call đều ok.Nhưng kết nối sim 300 và pic xong ,nạp code xong, gửi tin nhắn sms thì không thấy phản hồi lại,không biết code này có đúng hông xin anh chị giúp đỡ e ạ.E cám ơn nhiều .Đây là source code của em,dùng trình dich ccsc.


        #include <18f26K20.h> // chuong trinh su dung cho vi dieu khien Pic18f26k20
        #device icd=true // tao ma tuong thich debug phan cung Microchip
        #DEVICE ADC=10 // su dung ADC 10 bit
        #fuses HS,NOWDT,NOPROTECT,NOLVP // khai bao cac thiet dat cho Pic
        #use delay(clock=11059000) // su dung OSC=11,059 Mhz
        #include <stdio.h>
        #include <string.h>
        #include <stdlibm.h>
        #include <stdlib.h>
        #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,stream=SENSOR)
        // baud= 9600, chan truyen C6, chan nhan C7
        //************************************************** ******************************
        //khai bao thanh ghi
        #BYTE PORTA =0xf80
        #BYTE PORTB =0xf81
        #BYTE PORTC =0xf82
        #BYTE ANSELH = 0xF7F
        #BYTE ANSEL = 0xF7E
        #BYTE TRISA = 0xF92
        #BYTE TRISB = 0xF93
        #BYTE ADCON2 = 0xFC0
        #BYTE ADCON1 = 0xFC1
        #BYTE ADCON0 = 0xFC2
        #BYTE INTCON = 0xFF2
        #BYTE INTCON2 = 0xFF1
        #BYTE INTCON3 = 0xFF0
        #BYTE T0CON = 0xFD5
        #BYTE TMR0L = 0xFD6
        #BYTE TMR0H = 0xFD7
        #BYTE PIR1 = 0x0F9E
        #BYTE PIE1 = 0x0F9D
        #BYTE T1CON = 0x0FCD
        #BYTE T1GCON = 0x0F9A
        #BYTE TCLKCON = 0x0F52
        //************************************************** ******************************
        #bit INTCON_GIEH = INTCON.7
        #bit INTCON_GIEL = INTCON.6
        #bit INTCON_TMR0IE = INTCON.5
        #bit INTCON_TMR0IF = INTCON.2
        #bit INTCON2_TMR0IP = INTCON2.2
        #bit INTCON_INT0IE = INTCON.4
        #bit INTCON_INT0IF = INTCON.1
        #bit INTCON2_INTEDG0 = INTCON2.6
        #bit INTCON2_INTEDG1 = INTCON2.5
        #bit INTCON3_INT1IE = INTCON3.3
        #bit INTCON3_INT1IF = INTCON3.0
        #bit TRISAbits_TRISA0 = TRISA.0
        #bit TRISAbits_TRISA1 = TRISA.1
        #bit TRISAbits_TRISA2 = TRISA.2
        #bit TRISAbits_TRISA3 = TRISA.3
        #bit TRISAbits_TRISA4 = TRISA.4
        #bit TRISBbits_TRISB1 = TRISB.1
        #bit TRISBbits_TRISB0 = TRISB.0
        //************************************************** ******************************
        //khai bao bien
        #bit I_CD = PORTB.2
        #bit O_TN = PORTC.0
        #bit O_LOA = PORTC.1
        #bit O_RUN = PORTC.2
        //************************************************** ******************************
        #define BUFFER_SIZE 500
        BYTE buffer[BUFFER_SIZE];
        unsigned char temp_array[500];
        unsigned int16 next_in = 0;
        unsigned int16 next_out = 0;
        unsigned int16 count =0;
        unsigned char temp_sdt[200];
        unsigned char MKmacdinh[9] = "ADA",MK_tam[8],MSGmacdinh[102]="";
        int proba,k,dem_ND=0,skipline=2,status=0,count_mk=0,co unt_temp=0;
        unsigned char conf_MSG[]="MSG:",temp_MSG[102];
        unsigned char conf_PW[]="PW:",temp_MK[9],temp_PT[9];
        unsigned char conf_GETPW[15]="GET PASSWORD",conf_CONF[]="CONF:",PTOFF[]="OFF",PTON[]="ON",conf_PT[]="PT:";
        unsigned char conf_NHD[]="ND:",temp_NHD[3],NHDmacdinh_txt[3];
        unsigned char READY[]="READY",NETW[]="+CREG: 0,1";
        int NHDmacdinh_int=45;
        int save_pw,save_phone,save_msg,save_n=0,save_nhd=0,ic ount=0,inhietdo=0,check_sim=0,check_nw=0,check_crd =0;
        int itinnhan=0;
        int ichuyendong=0,ichuyendong1=0;
        int icua = 0,icua1=0;
        int inuoc = 0,inuoc1 = 0;
        int ikhoi = 0,ikhoi1=0;
        int inc = 0,inc1=0;
        int itimer0=0;
        int DONG=0,MO=0,PT_MO=0,PT_DONG=0;
        float tbnd=0,value=0;
        unsigned int doc =176,chao=0,count_dong=0,count_mo=0,count_cd=0,cou nt_khoi=0,count_nuoc=0;
        int time_out=0,check_NC=0,check_CD=0,check_KHOI=0,chec k_NUOC=0,check_ND=0,alarm=0;
        long icheck_NC=0,icheck_CD=0,icheck_KHOI=0,icheck_NUOC= 0,icheck_ND=0;
        //ham khai bao thoi gian timer0
        //bat timer0
        void en_timer0()
        {
        INTCON_TMR0IE = 1;
        INTCON_TMR0IF = 0;
        }
        //tat timer0
        void dis_timer0()
        {
        INTCON_TMR0IE = 0;
        INTCON_TMR0IF = 0;
        //INTCON2_TMR0IP = 1;
        }
        //************************************************** ******************
        //khoi tao timer0
        void init_timer0()
        {
        T0CON = 0b11000111;
        TMR0L = 0;
        TMR0H = 0;
        }
        void en_cuadong()
        {
        INTCON_GIEH = 1;
        INTCON_GIEL = 1;
        INTCON3_INT1IE = 1;
        INTCON3_INT1IF = 0;
        INTCON2_INTEDG1 = 0;//dong:0-->1
        }
        void en_cuamo()
        {
        INTCON_GIEH = 1;
        INTCON_GIEL = 1;
        INTCON3_INT1IE = 1;
        INTCON3_INT1IF = 0;
        INTCON2_INTEDG1 = 1;//mo:1-->0
        }
        void dis_cuadong()
        {
        INTCON_GIEH = 1;
        INTCON_GIEL = 1;
        INTCON3_INT1IE = 0;
        INTCON3_INT1IF = 0;
        INTCON2_INTEDG1 = 0;
        }
        int instr(unsigned char *chuoi,unsigned char *chuoi_ss)
        {
        int i,j,n=0,h=0;
        int dem,dem_ss;
        dem = strlen(chuoi);
        dem_ss = strlen(chuoi_ss);
        }
        //************************************************** ******************
        struct quanliso
        {
        unsigned char dt[12];
        }; struct quanliso so[11];
        struct quanlind
        {
        float nd;
        }; struct quanlind ql[11];
        //************************************************** ******************
        //************************************************** ******************
        //************************************************** ******************
        ///////////////////////////////////////
        //ham ngat tin nhan
        #int_ext
        void ngat_tinnhan()
        {
        itinnhan=1;
        }
        //************************************************** ******************
        //ham ngat nhan tu UART
        #int_rda
        void serial_isr()
        {
        buffer[next_in]=getc();
        if(next_in==next_out)
        next_in=0; // Buffer full !!
        }
        ///////////////////////////////////
        //ham ngat timer0
        #INT_timer0
        void ngat_timer0()
        {
        itimer0++;

        // Kiem tra Chuyen dong
        if(itimer0==1)
        {
        if(ichuyendong==0)
        {
        if(input(PIN_B2)==1)
        {
        ichuyendong=1;
        }
        }
        }
        init_timer0();
        INTCON_TMR0IF = 0;
        }
        //************************************************** ******************
        //TIM VI TRI
        int position(unsigned char *chuoi,unsigned char *chuoi_ss)
        {
        int hi,hj,hn=0,hh=0;
        int hdem,hdem_ss;
        hdem = strlen(chuoi);
        hdem_ss = strlen(chuoi_ss);
        for(hi=0;hi<hdem;hi++)
        {
        if(*(chuoi + hi) == *(chuoi_ss))
        {
        for(hj = hi;hj<hdem_ss+hi;hj++)
        {
        if(hn==hdem_ss) {return hi;};
        }
        }
        }
        return 0;
        }
        //XOA BO DEM
        void erase_buffer()
        {
        unsigned int16 i;
        for(i=0;i<BUFFER_SIZE;i++)
        buffer[i]=0;
        next_in=0;
        next_out=0;
        count=0;
        }
        //CAU HINH GSM
        void gsm_config()
        { int i;
        delay_ms(4000);
        printf("AT\n\r");
        delay_ms(500);
        printf("AT\n\r");
        delay_ms(500);
        printf("AT\n\r");
        delay_ms(500);
        printf("AT\n\r");
        delay_ms(500);
        printf("AT+CMGF=1\n\r");
        delay_ms(500);
        printf("AT+CMGF=1\n\r");
        delay_ms(500);
        printf("AT&W\n\r");
        // printf("ATE0\n\r");
        delay_ms(1500);
        erase_buffer();
        }
        //************************************************** ******************
        //************************************************** ******************
        //************************************************** ******************
        void main()

        { //khoi tao cac bien dem cuc bo
        int8 i=0,n=0,count_dauphay=0,count2_2cham=0,mposition=0 ;
        int8 dem;
        //khoi tao ngat
        enable_interrupts(int_rda);
        #if defined(__PCD__)
        enable_interrupts(intr_global);
        #else
        enable_interrupts(global);
        #endif
        //************************************************** ******************
        O_TN = 0;
        O_RUN = 0;
        O_LOA = 0;
        set_tris_b(0b00001111);//nhan xung vao INPUT
        set_tris_c(0b10000000);
        TRISAbits_TRISA2 = 0; // OUTPUT PORTA.2
        TRISAbits_TRISA3 = 0; // OUTPUT PORTA.3
        TRISAbits_TRISA4 = 0; // OUTPUT PORTA.3
        O_TN = 0;
        O_RUN = 0;
        O_LOA = 0;
        delay_ms(1000);
        do{
        O_TN=1;
        delay_ms(500);
        O_TN=0;
        delay_ms(500);
        i++;
        }
        while(i<2);
        i=0;
        gsm_config();
        //************************************************** ****************************
        while(1)
        {
        //************************************************** ****************************
        //bat dau xu li cac trang thai ngo vao(cam bien)
        //kiem tra neu co chuyen dong thi se bao tin nhan
        if(ichuyendong1==0)
        {
        if(ichuyendong==1)
        {
        O_LOA = 1;
        check_CD = 1;
        for(i=0;i<n+1;i++)
        { printf("AT+CMGS=\"%s\"\n\r",so[i].dt);
        delay_ms(100);
        printf("Nha tai %s co NGUOI. De nghi kiem tra.",MSGmacdinh);
        putc(26);
        delay_ms(1000);
        }
        delay_ms(2000);
        ichuyendong1=1;
        ichuyendong=ichuyendong1=0;
        }
        ichuyendong=0;
        count_cd=0;
        }

        //************************************************** ***************************
        //thuc hien va luu du cac lenh khi co tin nhan den
        if(itinnhan)
        {
        start:i=0;count=0;count_mk=0;count2_2cham=0;dem_nd =0;
        printf("AT+CMGR=1\n\r");
        delay_ms(500);
        O_TN=0;
        //kiem tra lenh CONF: cai dat so dien thoai
        if(instr(buffer,conf_CONF))
        {
        mposition = position(buffer,conf_CONF);
        dem_ND=0;
        do
        {
        temp_array[dem_ND++]=buffer[mposition++];
        }
        while(buffer[mposition]!=10);
        count_mk = 0;
        ///////////////////////////////////////////
        // BAT DAU VONG LAP KIEM TRA CONF
        if(instr(temp_array,conf_CONF))
        {
        // BAT DAU VONG LAP KIEM TRA MK
        if(instr(MK_tam,MKmacdinh))
        {
        for(i=0;i<11;i++)
        for(n=0;n<12;n++)
        so[i].dt[n]=0;
        // BAT DAU LUU SO DIEN THOAI
        O_TN=1;
        delay_ms(400);
        O_TN=0;
        count_temp=strlen(temp_array);
        count_temp=count_temp-count2_2cham;
        count_dauphay=0;
        i=0,n=0;
        sdt:
        i=dem;
        do
        {
        if(temp_sdt[i]==13) {so[n].dt[i-dem]=0;goto next;}
        so[n].dt[i-dem] = temp_sdt[i];
        i++;
        }
        while(temp_sdt[i]!=',');
        n++;
        dem=i+1;
        goto sdt;
        next:
        for(i=0;i<n+1;i++)
        { printf("AT+CMGS=\"%s\"\n\r",so[i].dt);
        delay_ms(100);
        printf("So dien thoai cua ban da duoc dua vao he thong canh bao");
        putc(26);
        delay_ms(1000);
        }
        O_TN=1;
        delay_ms(300);
        O_TN=0;
        }
        // da ket thuc doc va luu vao so dien thoai
        }
        printf("AT+CMGD=1\n\r");
        delay_ms(200);
        itinnhan=0;
        erase_buffer();

        ///////////////////////////////////////////
        }
        if(save_phone==49)
        {
        if(instr(buffer,conf_PW))
        {
        mposition = position(buffer,conf_PW);
        dem_ND=0;
        // BAT DAU VONG LAP KIEM TRA MK
        do{
        MK_tam[count_mk]=temp_array[3+count_mk];//lay mat khau sau dau
        count_mk++;
        }
        while(temp_array[3+count_mk]!=':');//cho toi khi gap dau 2 cham tiep theo
        count2_2cham=3+count_mk+1; // luu lai vi tri dau 2 cham thu 2

        if(instr(MK_tam,MKmacdinh))
        {
        // xoa bien MK moi truoc khi luu
        for(i=0;i<8;i++)
        MKmacdinh[i]=0;
        // Bat dau dem
        count_temp=strlen(temp_array);
        count_temp=count_temp-count2_2cham;
        count_dauphay=0;
        i=0;
        for(i=0;i<n+1;i++)
        {
        printf("AT+CMGS=\"%s\"\n\r",so[i].dt);
        delay_ms(100);
        printf("Mat khau moi:%s",MKmacdinh);
        putc(26);
        delay_ms(1000);
        }
        O_TN=1;
        delay_ms(300);
        O_TN=0;
        }
        printf("AT+CMGD=1\n\r");
        delay_ms(200);
        itinnhan=0;
        erase_buffer();
        }
        }
        /////////////////////////////////////////////////////////
        if(save_phone==49)
        {
        if(instr(buffer,conf_PT))
        {
        mposition = position(buffer,conf_PT);
        dem_ND=0;
        do{
        temp_array[dem_ND++]=buffer[mposition++];}
        while(buffer[mposition]!=10);
        count_mk = 0;

        // BAT DAU VONG LAP KIEM TRA MK
        do{
        MK_tam[count_mk]=temp_array[3+count_mk];//lay mat khau sau dau
        count_mk++;
        if(count_mk>8)
        {
        count_mk=0;
        printf("AT+CMGD=1\n\r");
        goto start;
        }
        }
        while(temp_array[3+count_mk]!=':');//cho toi khi gap dau 2 cham tiep theo
        count2_2cham=3+count_mk+1; // luu lai vi tri dau 2 cham thu 2

        if(instr(MK_tam,MKmacdinh))
        {
        if(instr(temp_array,PTON))
        {
        //tat cac ngat va xoa trang thai bien ve 0
        for(i=0;i<n+1;i++)
        {
        printf("AT+CMGS=\"%s\"\n\r",so[i].dt);
        delay_ms(50);
        printf("Bat chuc nang bao ve he thong tai nha %s",MSGmacdinh);
        putc(26);
        delay_ms(1000);
        }
        delay_ms(5000);
        en_timer0();
        //DONG=0;
        // PT_MO=0;
        //dis_int0();
        //Led_cd = 0;
        O_TN=1;
        //write_eeprom(502,'0');
        delay_ms(300);
        O_TN=0;
        delay_ms(10000);
        }
        if(instr(temp_array,PTOFF))
        {
        //tat cac ngat va xoa trang thai bien ve 0
        dis_timer0();
        PT_MO=1;
        O_LOA = 0;
        //O_KHOI = 0;
        //O_NUOC = 0;
        //O_CUA = 0;
        //O_NC= 0;
        ichuyendong=ichuyendong1=0;
        ikhoi=ikhoi1=0;
        inuoc=inuoc1=0;
        inc=inc1=0;
        //ket thuc
        delay_ms(1000);
        for(i=0;i<n+1;i++)
        {
        printf("AT+CMGS=\"%s\"\n\r",so[i].dt);
        delay_ms(100);
        printf("TAT bao ve tai nha %s.",MSGmacdinh);
        putc(26);
        delay_ms(1000);
        }
        //dis_int0();
        // Led_cd = 0;
        O_TN=1;
        // write_eeprom(502,'0');
        delay_ms(300);
        O_TN=0;
        delay_ms(10000);
        }
        printf("AT+CMGD=1\n\r");
        delay_ms(200);
        itinnhan = 0;
        erase_buffer();
        }
        }
        }
        //************************************************** ***************************
        //Bat dau kiem tra lenh MSG
        if(save_phone==49)
        {
        if(instr(buffer,conf_MSG))
        {
        mposition = position(buffer,conf_MSG);
        dem_ND=0;
        do{
        temp_array[dem_ND++]=buffer[mposition++];}
        while(buffer[mposition]!=10);
        count_mk = 0;
        // BAT DAU VONG LAP KIEM TRA MK
        do{
        MK_tam[count_mk]=temp_array[4+count_mk];//lay mat khau sau dau
        count_mk++;
        }
        while(temp_array[4+count_mk]!=':');//cho toi khi gap dau 2 cham tiep theo
        count2_2cham=4+count_mk+1; // luu lai vi tri dau 2 cham thu 2

        if(instr(MK_tam,MKmacdinh))
        {
        // Bat dau dem
        count_temp=strlen(temp_array);
        count_temp=count_temp-count2_2cham;
        count_dauphay=0;
        i=0;
        for(i=0;i<n+1;i++)
        {
        printf("AT+CMGS=\"%s\"\n\r",so[i].dt);
        delay_ms(50);
        printf("Da cai dia chi tai %s",MSGmacdinh);
        putc(26);
        delay_ms(1000);
        }
        O_TN=1;
        delay_ms(300);
        O_TN=0;
        }
        }
        }
        //************************************************** ***************************
        printf("AT+CMGD=1\n\r");
        delay_ms(200);
        itinnhan=0;
        erase_buffer();
        }

        }
        }

        Comment


        • #5
          đang tập viết tin nhắn điều khiển thiết bị,việc đầu tiên mình muốn đếm độ dài của một tin nhắn gửi đến để sau đó lấy được tin nhắn về và xử lí nó.nhưng không hiểu sao mỗi lần gửi tin nhắn thì lại nhận được số lần ngắt(số kí tự trả về từ modunsim) lại khác nhau.tất nhiên là cùng một tin nhắn như nhau.ai đã gặp rồi xin giải thích giúp mình với,code đơn giản của mình như sau:
          #include <18F4431.h>
          #include <def_877a.h>
          #FUSES HS,NOWDT,NOPROTECT,NOLVP
          #use DELAY (clock=20000000)
          #use rs232(stream=rs232A, baud=9600, xmit=PIN_c0,rcv=PIN_c1)
          #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
          #include <stdio.h>
          #include <string.h>
          #include <stdlibm.h>
          #include <stdlib.h>
          #include <LCD1.c>

          int i,m;
          ngat(){
          delay_ms(1);
          m=getc();
          i++; //nếu có kí tự gửi đến từ modunsim thì tăng biến
          str[i]=m;
          }

          #int_rda
          void ngat_modun(){
          ngat();
          }
          void main(){

          i=0;
          lcd_init();
          enable_interrupts(GLOBAL);
          enable_interrupts(int_rda);
          while (true){
          printf(lcd_putc,"%d",i);
          }
          }

          Comment


          • #6
            Nguyên văn bởi gauden Xem bài viết
            đang tập viết tin nhắn điều khiển thiết bị,việc đầu tiên mình muốn đếm độ dài của một tin nhắn gửi đến để sau đó lấy được tin nhắn về và xử lí nó.nhưng không hiểu sao mỗi lần gửi tin nhắn thì lại nhận được số lần ngắt(số kí tự trả về từ modunsim) lại khác nhau.tất nhiên là cùng một tin nhắn như nhau.ai đã gặp rồi xin giải thích giúp mình với,code đơn giản của mình như sau:
            #include <18F4431.h>
            #include <def_877a.h>
            #FUSES HS,NOWDT,NOPROTECT,NOLVP
            #use DELAY (clock=20000000)
            #use rs232(stream=rs232A, baud=9600, xmit=PIN_c0,rcv=PIN_c1)
            #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
            #include <stdio.h>
            #include <string.h>
            #include <stdlibm.h>
            #include <stdlib.h>
            #include <LCD1.c>

            int i,m;
            ngat(){
            delay_ms(1);
            m=getc();
            i++; //nếu có kí tự gửi đến từ modunsim thì tăng biến
            str[i]=m;
            }

            #int_rda
            void ngat_modun(){
            ngat();
            }
            void main(){

            i=0;
            lcd_init();
            enable_interrupts(GLOBAL);
            enable_interrupts(int_rda);
            while (true){
            printf(lcd_putc,"%d",i);
            }
            }
            Cho e hỏi trong module sim có CPU hay không? theo e bít thì để giao tiếp RS232 thì phải có CPU để điều khiển việc truyền nhận dữ liệu giữa vdk và sim. Nếu sim nhận được dữ liệu từ vdk thì làm sao để sim gửi du lieu ve cho vdk. e cám ơn

            Comment


            • #7
              simcard là smartcard theo chuẩn chân iso7816
              truyền nhận rs232 thì theo chuẩn phoenix =>serial reader, các hãng hay dùng chuẩn smartcard reader
              search google từ khóa sim protocol thì có nhiều nữa

              Comment


              • #8
                Nguyên văn bởi gauden Xem bài viết
                [i]=m;
                }

                #int_rda
                void ngat_modun(){
                ngat();
                }
                void main(){

                i=0;
                lcd_init();
                enable_interrupts(GLOBAL);
                enable_interrupts(int_rda);
                while (true){
                printf(lcd_putc,"%d",i);
                }
                }

                Comment


                • #9
                  Nguyên văn bởi plmobile Xem bài viết
                  simcard là smartcard theo chuẩn chân iso7816
                  truyền nhận rs232 thì theo chuẩn phoenix =>serial reader, các hãng hay dùng chuẩn smartcard reader
                  search google từ khóa sim protocol thì có nhiều nữa
                  Ý e hỏi là giao tiếp RS232 giữa module GSM và vdk, vdk và module GSM truyền nhận như thế nào? module GSM truyền dữ liệu đến vdk thông qua gì

                  Comment


                  • #10
                    vdk và modun GSM có cùng mức điện áp theo chuẩn TTL nên được nối với nhau ko cần qua thiết bị convert. vdk và modun GSM giao tiếp qua 1 cổng UART, nối chéo nhau giữa 2 chân TXD và RXD của vdk và modun gsm.

                    Comment


                    • #11
                      các bác nào ra tay giúp em sơ đồ nguyên lý với, em đang tìm hiểu về đề tài này mà không biết làm sao.

                      Comment

                      Về tác giả

                      Collapse

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

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

                      Collapse

                      Đang tải...
                      X