
نحوه ی ارسال یک عدد متغیر با پیامک بدون کتابخانه چگونه است؟
ابتدا به این آدرس رفته و شماره تلفن مرکز و دریافت کننده پیام را با +۹۸ و بدون صفر وارد کنید…(مثال:۹۸۹۰۱۱۲۳۴۵۶۷+)
سایز کلمه را بر روی ۱۶ بیتی قرار دهید
بدون اینکه متنی در کادر بنویسید دکمه تبدیل را بزنید
خروجی را کپی کرده و در متغیر data_str_const قرار دهید
به صورت زیر:
1 |
data_str_const="07918939050004F011000C918909014486190008AA00" |
در کامپایلر کدویژن و یا کامپایلرهای زبان C
1 |
flash char data_str_const[]="07918939050004F011000C918909014486190008AA00"; |
سپس با استفاده از تابع مقدار متغیر را ارسال کنید…
تابع دو پارامتر میگیرد
هر دو پارامتر از نوع متنی یا رشته و یا استرینگ می باشد
با استفاده از پارامتر اول شما متنی که می خواهید قبل از مقدار متغیر نشان داده شود را وارد می کنید و سپس با پارامتر دوم مقدار متغیر تبدیل شده به متن را ارسال می کنید
مقدار متغیر می تواند شامل اعداد صحیح و یا متغیری از نوع اعداد اعشار با رقم های دلخواه باشد…
برای درک بهتر موضوع نمونه کد ارسال یک متغیر عدد از نوع اعشار برای دو کامپایلر بیسیک و سی در زیر آورده شده است…
شما می توانید با این تابع ساده با نام send_sim_com_value هر متغیری اعم از خروجی سنسورها و … یا هر دیتای دلخواهی را بدون استفاده از کتابخانه ارسال کنید.
کد کامل استفاده در کامپایلر بسکام (نام متغیر ارسالی:my_var)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
$regfile="m32def.dat" $crystal=8000000 $hwstack = 64 $swstack = 64 $framesize = 64 '///////////////////////////www.MCULIBRARY.IR/////////////////////////////////// Config Single = Scientific , Digits = 2 '///////////////////////////www.MCULIBRARY.IR/////////////////////////////////// const data_str_const="07918939050004F011000C918909014486190008AA00" '///////////////////////////www.MCULIBRARY.IR/////////////////////////////////// dim str_value as string *10 dim my_var as single dim data_str as string*150 '///////////////////////////www.MCULIBRARY.IR/////////////////////////////////// declare sub send_sim_com_value(byval my_text as string,byval value_str as string) '/////////////////////////////////////////////////////////////////////////////// do '=========== my_var=25.19 '=========== str_value=str(my_var) print "AT";chr(13); waitms 1000 print "ATE0";chr(13); waitms 1000 print "AT+CMGF=0";chr(13); waitms 1000 call send_sim_com_value("Value: ",str_value) wait 60 loop '///////////////////////////www.MCULIBRARY.IR/////////////////////////////////// '//send_sim_com_value... '///////////////////////////www.MCULIBRARY.IR/////////////////////////////////// sub send_sim_com_value(byval my_text as string,byval value_str as string) local asc_str as byte local i as byte , i2 as byte local mid_str as string*10 local len_str as byte data_str=data_str_const len_str=len(data_str) i=len_str-2 len_str=len(my_text) i2=len_str len_str=len(value_str) i2=i2+len_str i2=i2*2 data_str=left(data_str,i) i2=i2+14 mid_str=str(i2) print "AT+CMGS="+mid_str+chr(13); i2=i2-14 mid_str=hex(i2) data_str=data_str+mid_str mid_str="" i=1 i2=1 do if i2=1 then len_str=len(my_text) else len_str=len(value_str) endif for i=1 to len_str step 1 if i2=1 then mid_str=mid(my_text,i,1) else mid_str=mid(value_str,i,1) endif asc_str=asc(mid_str) mid_str=hex(asc_str) data_str=data_str+"00" data_str=data_str+mid_str next i incr i2 loop until i2>2 print data_str waitms 20 print chr(26); end sub |
کد کامل استفاده در کامپایلر کدویژن (نام متغیر ارسالی:my_var)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
/******************************************************* Chip type : ATmega32 Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 512 *******************************************************/ #include <mega32.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <delay.h> unsigned char str_value[20]; unsigned char str[3]; float my_var; unsigned char data_str[150]; ////////////////////////////www.MCULIBRARY.IR/////////////////////////////////// flash char data_str_const[]="07918939050004F011000C918909014486190008AA00"; ////////////////////////////www.MCULIBRARY.IR/////////////////////////////////// void send_sim_com_value(unsigned char *my_text,unsigned char *value_str); void print(unsigned char *string); unsigned char len(char *string); void hex(unsigned char value); ////////////////////////////www.MCULIBRARY.IR/////////////////////////////////// void main(void) { DDRA=255; PORTA=0; DDRB=255; PORTB=0; DDRC=255; PORTC=255; PORTD=0; // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: Off // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=0; UCSRB=8; UCSRC=134; UBRRH=0x00; UBRRL=0x33; while (1) { //=========== my_var=25.19; //=========== ftoa(my_var,2,str_value); print("AT\r"); delay_ms(1000); print("ATE0\r"); delay_ms(1000); print("AT+CMGF=0\r"); delay_ms(1000); send_sim_com_value("Value: ",&str_value[0]); delay_ms(60000); } } ////////////////////////////www.MCULIBRARY.IR/////////////////////////////////// ///send_sim_com_value... ////////////////////////////www.MCULIBRARY.IR/////////////////////////////////// void send_sim_com_value(unsigned char *my_text,unsigned char *value_str) { unsigned char i,i2,len_str; unsigned char mid_str[10]; unsigned char asc_str; strcpyf(data_str,data_str_const); i=len(&data_str[0])-2; len_str=len(&my_text[0]); i2=(len_str+len(value_str))*2; data_str[i]=0;data_str[i+1]=0; i2=i2+14; strcpy(mid_str,"AT+CMGS="); print(&mid_str[0]); itoa(i2,mid_str); print(&mid_str[0]); delay_ms(10);putchar(13);delay_ms(10); i2=i2-14; hex(i2); strcat(data_str,str); i=1; i2=1; strcpy(mid_str,""); do{ if(i2==1)len_str=len(&my_text[0]);else len_str=len(&value_str[0]); for(i=0;i<(len_str);i++){ if(i2==1){ mid_str[0]=my_text[i];mid_str[1]=0; }else { mid_str[0]=value_str[i];mid_str[1]=0; } asc_str=mid_str[0]; hex(asc_str); strcat(data_str,"00"); strcat(data_str,str); } i2++; }while(i2<3); print(&data_str[0]); delay_ms(20); putchar(13);delay_ms(20);putchar(26);delay_ms(3); } ////////////////////////////www.MCULIBRARY.IR/////////////////////////////////// ///len... ////////////////////////////www.MCULIBRARY.IR/////////////////////////////////// unsigned char len(char *string) { unsigned char i=0; while(string[i]!=0) { i++; } return i; } ////////////////////////////www.MCULIBRARY.IR/////////////////////////////////// ///print... ////////////////////////////www.MCULIBRARY.IR/////////////////////////////////// void print(unsigned char *string) { while(*string!=0) { UDR=*string++; delay_ms(3); } } ////////////////////////////www.MCULIBRARY.IR/////////////////////////////////// ///hex... ////////////////////////////www.MCULIBRARY.IR/////////////////////////////////// void hex(unsigned char value) { unsigned char val1,val2; val1=value/16; val2=value%16; if(val1<10)val1+=48; else val1+=55; if(val2<10)val2+=48; else val2+=55; str[0]=val1;str[1]=val2;str[2]=0; } |
اگر مدار را ببندید و همین برنامه را پروگرام کنید خروجی به صورت زیر خواهد بود
1 2 3 4 5 |
AT ATE0 AT+CMGF=0 AT+CMGS=38 ۰۷۹۱۸۹۳۹۰۵۰۰۰۴F011000C918909014486190008AA1800560061006C00750065003A002000320035002E00310039 |
امیدوارم که این آموزش برای شما مفید واقع شده باشد.
دیدگاهها (0)