اطلاعیه

Collapse
No announcement yet.

کمک برای دریافت اعتبار سیمکارت در sim900

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    کمک برای دریافت اعتبار سیمکارت در sim900

    با سلام به همه دوستان
    در ابتدا لازم هست از وقتی که می گذارید سپاسگزاری کنم


    من میخوام با ماژول sim900 اعتبار یا میزان شارژ سیمکارت رو دریافت کنم و در مرحله بعد شارژ رو برای اون ارسال کنم تا خودش سیمکارت رو شارژ کنه
    از کامپایلر کدویژن و زبان سی استفاده می کنم و کلا بیسیک هم بلد نیستم
    در انجمن بخش مربوط به تاپیک sim900 رو هم گشتم اما این قسمت رو نداشت

    خوب من می دونم که باید از دستور AT+CUSD استفاده کنم
    ولی وقتی این دستور رو ارسال می کنم یا ارور بر می گردونه یا هیچی
    و اگر دستور دیگری هم هست که بهتر جواب میده معرفی کنید

    ممنون میشم که کمک کنید
    اگر با کد توضیح بدید که خلی عالی خواهد شد

    #2
    پاسخ : کمک برای دریافت اعتبار سیمکارت در sim900

    سلام

    تو برنامه ای که قبلا نوشته بودم گشتم دیدم با این کد USSD رو ارسال می کردم
    کد:
    sprintf(buf,"ATD%s\r",USSD);
    //puts(buf);
    puts1(buf);
    یا ERROR برمی گردوند یا OK

    یه command هم خودم تعریف کرده بودم که وقتی یه اس ام اس می گرفت که شامل اون command بود عدد بعد ":" رو(که همون رمز شارژ بود) رو با دستور بالا می فرستاد

    دوش دیوانه شدم عشق مرا دید و بگفت آمدم نعره مزن جامه مدر هیچ مگو
    گفتم ای عشق من از چیز دگر می​ترسم گفت آن چیز دگر نیست دگر هیچ مگو
    من به گوش تو سخن​های نهان خواهم گفت سر بجنبان که بلی جز که به سر هیچ مگو
    قمری جان صفتی در ره دل پیدا شد در ره دل چه لطیف است سفر هیچ مگو
    مولانا

    دیدگاه


      #3
      پاسخ : کمک برای دریافت اعتبار سیمکارت در sim900

      خیلی از شما ممنونم
      ممکنه یکم بیشتر توضیح بدید مخصوصا قسمت دریافت رمز و ارسالش برای اپراتور رو

      تا جایی که من فهمیدم شما از تماس استفاده کردید ولی توی AT command ها یک جوری شبیه به ارسال پیام هست
      فرق این دوتا با هم چیه

      دیدگاه


        #4
        پاسخ : کمک برای دریافت اعتبار سیمکارت در sim900

        َATD*140*1#
        مدت زمانی که صرف ایجاد تاپیک و منتظر پاسخ هستید را صرف سرچ کنید...

        دیدگاه


          #5
          پاسخ : کمک برای دریافت اعتبار سیمکارت در sim900

          یادمه منم با خود دستور ارسال USSD نتونستم کار کنم، از ATD استفاده کردم،
          من باید با توجه به متن اس ام اس های دریافتی یه سری کارهارو انجام می دادم، مثلا OUT1: ON باید خروجی رله اول رو روشن می کردم، بعد از اینکه اس ام اس رو می گرفتم میومدم بررسی می کردم که چه کاری باید انجام بشه، این دستورات رو خودم تعریف کرده بودم ، مثلا گفته بدم برای شارژ باید یه اس ام اس با فرمت زیر برسه :
          USSD: *140*1234567890123# ، وقتی اینو تشخیص می دادم ATD*140*1234567890123# رو میگرفتم و شارژ میشد، واسه محکم کاری جواب شبکه رو هم دوباره برای شماره ای که کد رو فرستاده بود میفرستادم.

          این روش کمک میکرد هر کد دیگه هم بشه استفاده کرد. مثلا تو ایرانسل وقتی میفرستاد *140*1# میزان شارژ براش ارسال می شد ...

          دوش دیوانه شدم عشق مرا دید و بگفت آمدم نعره مزن جامه مدر هیچ مگو
          گفتم ای عشق من از چیز دگر می​ترسم گفت آن چیز دگر نیست دگر هیچ مگو
          من به گوش تو سخن​های نهان خواهم گفت سر بجنبان که بلی جز که به سر هیچ مگو
          قمری جان صفتی در ره دل پیدا شد در ره دل چه لطیف است سفر هیچ مگو
          مولانا

          دیدگاه


            #6
            پاسخ : کمک برای دریافت اعتبار سیمکارت در sim900

            با سلام
            از همه دوستانی که راهنمای کردند تشکر می کنم
            منم دقیقا می خوام همین کاری که اقای فرامرز مختاری انجام دادند رو انجام بدم
            با این تفاوت که من برای دستورات کد تعریف کردم
            برای مثال کد 2222 مربوط به دریافت مانده حساب هست
            من می تونم کدها رو تشخیص بدم اینجای برنامه مشکلی نیست
            و فقط وقتی که دستور ارسال رو می زنم ارور بر می گردونه و زمانی هم که ارور نمی ده چیزی بر نمی گرده که من بتونم نشون بدم یا برای کاربر ارسال کنم
            اگر دوستان لطف کنند و یک تابع یا قطعه کد بنویسن من خیلی بهتر متوجه می شوم که چکار باید بکنم
            خیلی از شما متشکر هستم

            دیدگاه


              #7
              پاسخ : کمک برای دریافت اعتبار سیمکارت در sim900

              اگه سیم کارت دو طرف ایرانسله میتونی از دستور 704 اس بدی که ماژول دیگه به شارج احتیاج نداشته باشه
              در ضمن برای تایید عملکرد ها
              ینی یک رله روشن کردی برای تایید روشن شدنش از تک زنگ استفاده کن بصرفه تره
              من خودم نزدیک 20 هزار تومن تاحالا با هاش اس بازی کردم
              مدت زمانی که صرف ایجاد تاپیک و منتظر پاسخ هستید را صرف سرچ کنید...

              دیدگاه


                #8
                پاسخ : کمک برای دریافت اعتبار سیمکارت در sim900

                خیلی ممنون از وقتتون
                سیمکارتم همراه اوله چون جایی که قراره دستگاه قرار بگیره ایرانسل انتن دهی خوبی نداره و نمیشه از اون استفاده کرد
                اینش مهم نیست فقط دستورات اعتبار با هم فرق می کنه که اون رو جایگزین می کنم
                هدفم از این تاپیک این بود که روشهای مختلف رو از دوستان بپرسم تا ببینم کدوم بهتر هست
                درمورد شارژ هم منم تا حالا شاید حدود همین میزانی که شما هزینه کردید خرج کردم :twisted:
                البته هزینه اهمیتی نداره نتیجه مهمه

                دیدگاه


                  #9
                  پاسخ : کمک برای دریافت اعتبار سیمکارت در sim900

                  سلام
                  برای دریافت میزان اعتبار برای ایرانسل
                  AT+CUSD=1,”*140*1#”,15
                  اینو بفرست
                  AT+CUSD=1,string,15
                  که اون استرینگه در خواستته
                  حالا برا همراه اول مینه کد خودش باشه
                  برا شارژ هم بجای استرین دستور شارژ رو بذار
                  جواب بعضی حرفا فقط یه نفس عمیقه ، بذار تو دلت بمونه...

                  دیدگاه


                    #10
                    پاسخ : کمک برای دریافت اعتبار سیمکارت در sim900

                    من هر دو روش که دوستان گفتند رو ازمایش کردم
                    ولی نتیجه ای نگرفتم :angry: :angry:
                    درمورد اجرای دستور AT+CUSD=1,string,15 که هیچی بر گشت نداد
                    و دستور ATD*140*1# بعد از یک تماس کوچک به میکرو وقفه وارد شد و هیچ پیامی دریاف نشد
                    من برای دریافت پیامها از وقفه شماره صفر استفاده کردم
                    گفتم هر وقت پیام اومد مثلا 10 پیام اول رو نمایش بده
                    و الان هم 3 تا پیام بیشتر ندارم بقیه اش خالیه
                    موقعی که کد دوم رو می زنم شروع می کنه به نمایش همه پیامها ولی پیام اعلام اعتبار نیست :sad:

                    لطفا کمک کنید

                    دیدگاه


                      #11
                      پاسخ : کمک برای دریافت اعتبار سیمکارت در sim900

                      نوشته اصلی توسط sr.morteza
                      و دستور ATD*140*1# بعد از یک تماس کوچک به میکرو وقفه وارد شد و هیچ پیامی دریاف نشد
                      من برای دریافت پیامها از وقفه شماره صفر استفاده کردم
                      گفتم هر وقت پیام اومد مثلا 10 پیام اول رو نمایش بده
                      مشکل نمی دونم از چی می تونه باشه ولی یادمه ماژولی که من باهاش کار می کردم هم با همراه اول یه سری مشکل داشت، با ایرانسل هم چک کن، جدار از میکرو با سریال کامپیوتر اول همه چیز رو چک کن، جز ATD و ATCUSD فکر نکنم کامند دیگه ای برای کار با USSD باشه. بعضی از ماژول های Sim 900 نیاز به پگرید دارن اینم بررسی کن .
                      دوش دیوانه شدم عشق مرا دید و بگفت آمدم نعره مزن جامه مدر هیچ مگو
                      گفتم ای عشق من از چیز دگر می​ترسم گفت آن چیز دگر نیست دگر هیچ مگو
                      من به گوش تو سخن​های نهان خواهم گفت سر بجنبان که بلی جز که به سر هیچ مگو
                      قمری جان صفتی در ره دل پیدا شد در ره دل چه لطیف است سفر هیچ مگو
                      مولانا

                      دیدگاه


                        #12
                        پاسخ : کمک برای دریافت اعتبار سیمکارت در sim900

                        نوشته اصلی توسط sr.morteza
                        و دستور ATD*140*1# بعد از یک تماس کوچک به میکرو وقفه وارد شد و هیچ پیامی دریاف نشد
                        من برای دریافت پیامها از وقفه شماره صفر استفاده کردم
                        گفتم هر وقت پیام اومد مثلا 10 پیام اول رو نمایش بده
                        و الان هم 3 تا پیام بیشتر ندارم بقیه اش خالیه
                        موقعی که کد دوم رو می زنم شروع می کنه به نمایش همه پیامها ولی پیام اعلام اعتبار نیست :sad:

                        لطفا کمک کنید
                        در ضمن جواب درخواست اعتبار به صورت اس ام اس نیست که تو حافظه ماژول بمونه، این جواب مثل جواب های کامند ماژول هست و فقط همون لحظه روی پورت سریال ماژول ارسال میشه که اگه نخونیش از دست رفته.
                        دوش دیوانه شدم عشق مرا دید و بگفت آمدم نعره مزن جامه مدر هیچ مگو
                        گفتم ای عشق من از چیز دگر می​ترسم گفت آن چیز دگر نیست دگر هیچ مگو
                        من به گوش تو سخن​های نهان خواهم گفت سر بجنبان که بلی جز که به سر هیچ مگو
                        قمری جان صفتی در ره دل پیدا شد در ره دل چه لطیف است سفر هیچ مگو
                        مولانا

                        دیدگاه


                          #13
                          پاسخ : کمک برای دریافت اعتبار سیمکارت در sim900

                          نوشته اصلی توسط فرامرز مختاری
                          در ضمن جواب درخواست اعتبار به صورت اس ام اس نیست که تو حافظه ماژول بمونه، این جواب مثل جواب های کامند ماژول هست و فقط همون لحظه روی پورت سریال ماژول ارسال میشه که اگه نخونیش از دست رفته.
                          خیلی ممنون از اینکه جواب دادید
                          مشکل همین جاست که میگید باید از ورودی سریال بخونم
                          ببنید وقتی من دستور ATD*140*1# استفاده می کنم میکرو وقفه می خوره برنامه من طوری است که وقتی پیامی از ورودی دریافت میشه وقفه می خوره و می ره به اون پیام رسیدگی می کنه
                          من برنامه رو عوض کردم و گفتم وقتی وقفه خورد همه پیامها رو نشون بده ولی چیزی از اعلام شارژ دریافت نمیشه

                          خوب حالا من نمی تونم از سریال بخونم چون وقتی این دستور رو می زنم وقفه می خوره مشکل اینه :angry:
                          من توی تابع اعلام شارژ وقفه ها رو هم غیرفعال می کنم ولی فایده ای نداره به محض شماره گیری دستور اعلام شارژ وقفه می خوره

                          دیدگاه


                            #14
                            پاسخ : کمک برای دریافت اعتبار سیمکارت در sim900

                            من برنامه رو بدون وقفه هم نوشتم ولی بازم مشکل داره اینجا کد رو می گذارم اگه دوستان لطف کنن و کمک کنن خیلی ممنون می شم
                            کد:
                             
                            void getstr(char *str)
                            {
                              char ch = 0;
                              ch = getchar();
                              while((ch == 10) || (ch == 13) || (ch == 0))
                                ch = getchar();
                              
                              while((ch != 10) && (ch != 13))
                              {
                                *str++ = ch;
                                ch = getchar();
                              }
                              *str = 0;
                            }
                            
                            
                            
                               lcd_clear();
                                lcd_gotoxy(0,0);
                                lcd_putsf("Eelaam shaargj...");
                                 delay_ms(1000); 
                                 
                                 
                                 while(k==0){
                                 k=SIM900_Is_ON();
                                 
                                 }
                                 
                                 
                                
                              printf("AT+CMGF=1%c",Enter);
                              getstr(text1);
                              getstr(text2); 
                              
                              
                               
                               lcd_clear();
                                lcd_gotoxy(0,0);
                                lcd_putsf("earsal dastor..");
                                 delay_ms(1000); 
                                 
                              printf("ATD%s;%c",me,Enter);
                              delay_ms(500); 
                              getstr(text1);
                              getstr(text2);
                              sprintf(lcd_buffer,"ATD text1, %s",text1);
                              lcd_puts(lcd_buffer);
                              delay_ms(2000);
                              lcd_clear();
                              sprintf(lcd_buffer,"ATD text2, %s",text2);
                              lcd_puts(lcd_buffer);
                              delay_ms(2000); 
                              
                                   
                                
                             
                              printf("AT+CUSD=1,%s;%c",me,Enter);
                                    getstr(text1);
                                    getstr(text2);  
                               sprintf(lcd_buffer,"cusd text1, %s",text1);
                              lcd_puts(lcd_buffer);
                              delay_ms(2000);
                              lcd_clear();
                              sprintf(lcd_buffer,"cusd text2, %s",text2);
                              lcd_puts(lcd_buffer);
                              delay_ms(2000);
                              
                             printf("AT+CMGF=1%c",Enter);
                              getstr(text1);
                              getstr(text2);
                               
                                 
                                for(b=1;b<8;b++){ 
                                  lcd_clear(); 
                                  lcd_gotoxy(0,0);
                                  sprintf(lcd_buffer,"b= %d",b);
                                  lcd_puts(lcd_buffer);
                                  delay_ms(500);
                                 i=SMS_Recieve(sms,phone1,b);
                                    delay_ms(50);  
                                   if(i==1){
                                     lcd_clear();
                                     lcd_gotoxy(0,0);
                                     lcd_puts(phone1);
                                     delay_ms(1000);
                                     lcd_clear();
                                     lcd_gotoxy(0,0);
                                     lcd_puts(sms);
                                    delay_ms(1000);
                                   
                                    
                                    }
                             
                                }
                            یک توضیح مختصر هم بدم
                            تابع SMS_Recieve پیامهای دریافتی را می خواند و در متغییر sms قرار می دهد و شماره تلفن را هم در متغییر phone قرار می دهد
                            تابع getstr کاراکترها را از پورت سریال دریافت کرده و در یک متغییر قرار می دهد
                            تابع SIM900_Is_ON چک می کنه ببینه ایا ماژول اماده دریافت دستور هست یا خیر
                            بقیه اش هم فقط ارسال دستورات و نمایش روی ال سی دی هست

                            اگه دوستان لطف کنن و کمک کنن خیلی ممنون میشم

                            دیدگاه


                              #15
                              پاسخ : کمک برای دریافت اعتبار سیمکارت در sim900

                              سلام اینو تست کن
                              printf("AT+CUSD=1,%c*140*1#%c,15\r",34,3 4);
                              جواب بعضی حرفا فقط یه نفس عمیقه ، بذار تو دلت بمونه...

                              دیدگاه

                              لطفا صبر کنید...
                              X