# Native Code > برنامه نویسی موبایل >  ارسال و دریافت اس ام اس

## raha_20

سلام به همه دوستان گرام

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

----------


## reza6384

سلام دوست عزیز.
بله ، می تونید برای استفاده از این PDU ها از HyperTerminal استفاده کنید و اتفاقا این کار قبل از شروع پیاده سازی ها خوبه ، چون یک مقدار اول به PDU ها مسلط میشین و بعدش هم میرسین به ارسال اون PDU ها روی پورت از طریق برنامه.
شما با چه زبانی برنامه می نویسید؟
در ضمن در سایت noorsoft که مدیربخش هستن، یک برنامه هست که شماره گیرنده و متن پیام رو میگیره و به شما PDU ای رو که باید ارسال کنید ارائه میده.
www.noorsoft.com

----------


## raha_20

یعنی من گوشی موبایلم را ازطریق پورت usb به کامپیوتر وصل کنم و بعد با hyper terminal کد ها را ارسا ل کنم ؟

میشه یه کم طریقه کار را برا من بگین ممنون میشم

----------


## noorsoft

شما گوشی تون رو به کامپیوتر وصل کنید و بعد تو Hyper terminal دستورات رو بدین

----------


## raha_20

من میخوام یه اس ام اس بدون محتوا ارسال کنم . حالا دستور at  که باید به کار ببرم برای این کار چی هست . اگه میشه یه نمونه برا م مثال بزنید 

یه سوال دیگه : اینکه دستور ATVQ10  مودم را هم چک میکنه یا نه یعنی وقتی من موبایل را به کامپیوتر وصل نکردم ولی مودم خود کامپیوتر وصل هست بازم OK میده یا نباید اینجوری باشه



با تشکر

----------


## reza6384

> اینکه دستور ATVQ10 مودم را هم چک میکنه یا نه یعنی وقتی من موبایل را به کامپیوتر وصل نکردم ولی مودم خود کامپیوتر وصل هست بازم OK میده یا نباید اینجوری باشه


من دقیقا نمی دونم ، اما یادمه که وقتی دستور AT رو می زدم مودم خود کامپیوتر هم Reply می کرد و جزو GSM Modem های شناخته میشد. من برای اینکار از یه دستور دیگه مثل AT+CBC یا AT+CSQ استفاده کردم که جزو دستورات مودم معمولی نیست. بعد از خوندن بافر چک کردم که آیا رشته رسیده شامل کلمه OK هست یا نه.




> من میخوام یه اس ام اس بدون محتوا ارسال کنم



AT+CMGF=0
OK
AT+CMGS=14
>0031000B81*9021212121F1*0000FF00


به جای قسمت مشخص شده شماره گیرنده رو بزنید و بعد از نوشتن این رشته هم باید Ctrl+Z رو بزنید و بعد از حدود 3 ثانیه از مودم OK رو دریافت می کنید که یعنی SMS ارسال شد.

----------


## raha_20

AT+CMGF=0
OK
AT+CMGS=14
>0031000B819021212121F10000FF00

ولی وقتی من دستور AT+CMGF را می زنم ERROR میده در حالی که گوشی هم به کامپیوتر وصله و من نمیدونم مشکلش چیه ؟ 

در ضمن من گوشی را از طریق پورت USB وصل می کنم از این نظر که مشکلی نداره ؟

----------


## noorsoft

> من میخوام یه اس ام اس بدون محتوا ارسال کنم . حالا دستور at  که باید به کار ببرم برای این کار چی هست . اگه میشه یه نمونه برا م مثال بزنید 
> 
> یه سوال دیگه : اینکه دستور ATVQ10  مودم را هم چک میکنه یا نه یعنی وقتی من موبایل را به کامپیوتر وصل نکردم ولی مودم خود کامپیوتر وصل هست بازم OK میده یا نباید اینجوری باشه
> 
> 
> 
> با تشکر



اولا باید ATQ0V1E0 رو ارسال کنید تا موبایل شناسایی بشه 
دوما برای فرستادن اس ام اس شما نیاز به یک دستگاه موبایل یا  مودم جی اس ام دارین متاسفانه مودمهای جی اس ام فقط دستور AT رو قبول میکنن ور در واقع ATQ0V1E0 فقط برای موبایل قابل استفاده است

----------


## noorsoft

> AT+CMGF=0
> OK
> AT+CMGS=14
> >0031000B819021212121F10000FF00
> 
> ولی وقتی من دستور AT+CMGF را می زنم ERROR میده در حالی که گوشی هم به کامپیوتر وصله و من نمیدونم مشکلش چیه ؟ 
> 
> در ضمن من گوشی را از طریق پورت USB وصل می کنم از این نظر که مشکلی نداره ؟


مدل گوشی شما چیه؟ 
بعضی از موبایلهای بعضی از دستورات AT را پشتیبانی نمی کنن ولی این دستور باید کار کنه !

----------


## raha_20

مدل گوشیم  k750  هستش . 

پس من الان مشکل کارم چیه ؟ دستورات درست نیست . اگه میشه یه نمونه کامل برام بزارین چو ن من اون کد را که وارد میکنم ERROR میده و نمیشه کاریش کرد .

----------


## raha_20

من چه گوشی موبایل به کامپیوترم وصل باشه چه نباشه وقتی دستور ATQ0V1E0 را میزنم OK دریافت میکنم . چرا این طورییه 

گوشی من با کابل USB به کامپیوتر وصله . توی یه تاپیک خوندم بهتر ازطریق پورت COM  باشه حال ایا این باعث مشکل شده یا نه 

ممنون که کمک میکنید .

----------


## noorsoft

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

----------


## raha_20

راستش من کارخاصی که انجام نمیدم.گوشی را وصل میکنم . بعد هم توی HYPER TERMINAL این دستورات را عینا مینویسم . ولی خوب دستورات قبلی را که ERROR میده و دستور شناسایی موبایل را هم که چه وصل باشه چه نباشه OK میده .

----------


## reza6384

دوست عزیز ، در Device Manager ببینید ( وقتی موبایل شما متصل است ) که مودم موبایل شما روی کدام پورت COM هست. برای اینکار Modems رو باز کنید و روی مودمی که به نام موبایلتون هست دبل کلیک کنید و از قسمت مودم ببینید که روی کدوم پورت COM هست. 




> دستور شناسایی موبایل را هم که چه وصل باشه چه نباشه OK میده .


دستور AT+CBC یا AT+CSQ رو امتحان کنید .

----------


## noorsoft

> راستش من کارخاصی که انجام نمیدم.گوشی را وصل میکنم . بعد هم توی HYPER TERMINAL این دستورات را عینا مینویسم . ولی خوب دستورات قبلی را که ERROR میده و دستور شناسایی موبایل را هم که چه وصل باشه چه نباشه OK میده .


اگه موبایل وصل نباشه پورت اون باز نمیشه و هایپر ترمینال هم نمیتونه به اون اطلاعات ارسال کنه که OK بگیره شما دارین به یک پورت دیگه مثلا مودم کامپیوتر این اطلاعات رو ارسال میکنید

----------


## raha_20

توی قسمت DEVICE MANAGER که دیدم موبایلم روی دو تا پورت COM 8  و COM 9   کار میکنه .  دستو رات AT+CBC  هم کار نکرد و ERROR داد .

----------


## reza6384

من هم با noorsoft موافقم. یه جایی رو اشتباه می کنید. با اینکه چیزی که می گم منطقی نیست ولی چک کنید.
1-تنظیمات رو روی پورت COM9 ، Baudrate=9600 , Parity = None,StopBits=1,DataBits = 8 قرار بدید.
(اینکه میگم منطقی نیست به خاطر اینه که اگر غیر از این تنظیمات انجام داده باشید اصلا هیچ داده ای از پورت دریافت نمی کردید.)

2- بلوتوث گوشی شما ممکنه روشن باشه و ارتباط با کامپیوتر از طریق بلوتوث برقراره. البته اگر اینجوری بود بازهم نباید به دستورات شما Error میداد. ولی با این حال چک کنید.

3- وقتی که کابل USB رو از گوشی قطع می کنید دیگه هیچ Text ای با کیبردتون نمی تونید توی HyperTerminal بنویسید. اگر بعد از قطع کابل کماکان در HyperTerminal می نویسید و جوابی هم دریافت می کنید مطمئن باشید که به موبایلتون وصل نیستید.

----------


## noorsoft

> توی قسمت DEVICE MANAGER که دیدم موبایلم روی دو تا پورت COM 8  و COM 9   کار میکنه .  دستو رات AT+CBC  هم کار نکرد و ERROR داد .


موبایل که نمی تونه همزمان روی دو تاپورت کار کنه

----------


## raha_20

من وقتی گوشیم را وصل میکنم دوتا مودم برای گوشیم شناسایی میشه و عکسش زا گذاشتم . یکی روی COM8 کار میکنه و یکی روی COM9 کار میکنه . 

اگه گوشی من هیچ پورتی را باز نمیکنه و یا حالا گوشی من شنا خته نشده چطوریه که من میتو نم اطلاعت رو رم ان بریزم .

----------


## raha_20

> وقتی که کابل USB رو از گوشی قطع می کنید دیگه هیچ Text ای با کیبردتون نمی تونید توی HyperTerminal بنویسید. اگر بعد از قطع کابل کماکان در HyperTerminal می نویسید و جوابی هم دریافت می کنید مطمئن باشید که به موبایلتون وصل نیستید.
> __________________


 
مگه وقتی موبایل به کامپیوتر وصل نیست نباید بشه توی HYPER TERMINAL   دستور نوشت . من اگه موبایلم هم وصل نباشه میتو نم بنویسم

----------


## noorsoft

> مگه وقتی موبایل به کامپیوتر وصل نیست نباید بشه توی HYPER TERMINAL   دستور نوشت . من اگه موبایلم هم وصل نباشه میتو نم بنویسم


اگه ارتباط برقرار نباشه نباید بتونی چیزی تایپ کنید

----------


## reza6384

دقیقا همینه که جناب noorsoft گفتند. در ضمن وقتی گوشیتون متصل نباشه و Hyper Terminal  رو باز کنید یک پیام خطا میده و می گه که Unable To Communicate With Modem...

----------


## raha_20

من فکر میکنم مشکل از کامپیوترم باشه چون روی سیستمای دیگه دیدم اگه موبایل وصل نباشه نمیشد دستور نوشت ولی رو سیستم من میشه این کار را کر د . 

درایور موبایل باید نصب باشه دیگه ؟

----------


## raha_20

مشکل من آیا با نصب دوباره windows  حل میشه یا نه . ممکن از مودمم باشه که همیشه میتونم توی hyper terminal دستور بنویسم

----------


## reza6384

دوست عزيز ، شايد مشكل شما اين باشه كه HyperTerminal شما داره روي يك پورت Valid‌ديگه كار مي كنه. مطمئن بشيد كه همون پورت موبايلتون رو براي HyperTerminal انتخاب كردين.

با نصب دوباره Windows همه چي درست ميشه. اما اين ديگه تير خلاصه. به نظر من حتي المقدور بايد از نصب ويندوز فرار كرد. چون كار طاقت فرسايي هست. مخصوصا براي كسايي كه برنامه زياد روي سيستمشون نصب مي كنند.

----------


## raha_20

مشکل من حل شد همینطور که آقای NOORSOFT و آقا رضا گفته بودید HYPER TERMINAL من روی پورت مودمم کار میکرد . 
الان من با نوشتن دستورات AT دیگه باERROR مواجه نمیشم ولی SMS خالی هم ارسال نمیشه .
AT+CMGF=0
OK
AT+CMGS=14
>0031000B81*9021212121F1*0000FF00این شماره ای که شما نوشتید با ان روشی که برای pdu وجود داره که فرق میکنه وشماره فرستنده را نداره .من باید خودم شماره را به pdu تبدیل کنم یا  مثل همین کد باشه فقط شماره قرمز رنگ را عوض کنم و شماره گیرنده را جایگزین آن کنم ؟

----------


## reza6384

سلام. شما باید جای اون مقدار قرمز رنگ شماره گیرنده رو به صورت دوتایی و برعکس بذارین و همچنین به صورت Local  یعنی ....0912 یا .....0935 . بله این PDU با اون PDU مثال یه فرق کوچیک داره و اون اینه که در این PDU شماره Service Center رو مشخص نکردیم و جای اون 00 قرار دادیم. یعنی طول شماره SMS Center صفر هست.

----------


## raha_20

خوب من هم همین کار را میکنم و شماره را همینطور که میگین مینویسم و لی ارسال نمیشه . من آخر شماره ctrl+z را باید بزنم ؟ 

این کار را کردم و لی +cms 304 ولی این error  را میده و نمیشه sms ارسال کرد

----------


## reza6384

سلام.

بله ، بعد از نوشتن PDU باید Ctrl+z رو بزنید که کاراکتری که نمایش داده میشه یک فلش به سمت راست هست.
لطفا رشته PDU ای رو که میفرستید بنویسید. 
در ضمن قبلش باید AT+CMGS=14 رو زده باشید.

304 : 


Invalid PDU mode parameter

----------


## raha_20

کدی که من ارسال می کنم اینه :

AT+CMGF=0
OK
AT+CMGS=14
>0031000B81*9031021935f7*0000FF00

----------


## reza6384

کدتون درسته، نمی دونم Case sensitive هست یا نه الان نمی تونم چک کنم. فقط اون f در قسمت قرمز رو بزرگ کنید. و بعد از پایان رشته PDU باید CTRL+Z رو بزنید.

----------


## raha_20

مشکل من حل شد و تونستم sms ارسال کنم . حالا اگه بخوام متن ارسال کنم باید کد متن ارسالی را بعد از کد شماره قرار بدم یا طور دیگه ای هست

----------


## reza6384

خوب. برای متن قضیه یک مقداری فرق میکنه. اولا AT + CMGS باید مساوی نصف طول رشته منهای یک باشه. یعنی اگر رشته PDU شما 32 حرف داره باید بنویسید AT+CMGS=15 که در بخش PDU ENCODING کاملا بحث شده.
و اما در همون مثال شما به جای 0000 در پایان رشته بنویسی 04D2B23E0C یک پیام با متن "Reza"و اولش بنویسی AT+CMGS=18 به شمارتون ارسال میشه. و اما برای تست می تونید از سایت مدیریت بخش جناب آقای نوانیان استفاده کنید.

----------


## mutter

من میکرو رو به ماژول SIM 300 وصل کردم ولی نمیدونم چطوری SMS دریافتی توسط ماژول را پردازش کنم مثلا SMS  دریافتی را روی یک LCD که به میکروAVR وصل است نمایش دهم.من در مود TEXT  کار میکنم و با CODEVISION .اگر نمونه برنامه دارید کمکم کنید.

----------


## mahdi68

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

----------


## mahdi206

سلام من تو در یافت اس ام اس مشکل دارم چکار کنم چطور میشه دلیل error فهمید.کد error رو دارم اما hiper فقط خطا میده بدون کد خطا
تشکر

----------


## mahdi206

تو دریافت اس ام اس با at command خطا میده کسی مشکل رو حل نکرده

----------


## 8611670474

آقل این heyper terminal chie?
از کجا میتونیم پیدا کنیم.

----------


## z_software

با عرض سلام به همه دوستان .
ببخشید من یه مودم GPRS دارم و می خوام  قبل از برنامه نویسی با hyperterminal ارسال اس ام اس را انجام بدم .  تنظیمات  کنترل پنل و hyperterminal را از روی یه فایل لاتین انجام دادم(http://www.developershome.com/sms/ho...erTerminal.asp) ولی نمیدونم چرا اصلاً به دستور AT که میدم (خود دستور AT) اصلاً به خط بعد نمیره (نه error  میده OK ) تا این تاپیک رو خواندم . آیا من هم باید بادستوری خاص مودم GPRS را به hyperterminal  معرفی کنم ؟ لطفاً راهنمایی کنید .

----------


## noorsoft

> با عرض سلام به همه دوستان .
> ببخشید من یه مودم GPRS دارم و می خوام  قبل از برنامه نویسی با hyperterminal ارسال اس ام اس را انجام بدم .  تنظیمات  کنترل پنل و hyperterminal را از روی یه فایل لاتین انجام دادم(http://www.developershome.com/sms/ho...erTerminal.asp) ولی نمیدونم چرا اصلاً به دستور AT که میدم (خود دستور AT) اصلاً به خط بعد نمیره (نه error  میده OK ) تا این تاپیک رو خواندم . آیا من هم باید بادستوری خاص مودم GPRS را به hyperterminal  معرفی کنم ؟ لطفاً راهنمایی کنید .


خیر ، شما باید سرعت انتقال اطلاعات بین کامپیوتر و مودم را درست انتخاب نمایید مدمها معمولا با سرعت 19200 و یا 115200 کار میکنند و اگر سرعت دیگری انتخاب بشه جواب نمی دهند
در ضمن تنظیمات دیگر مربوط به flow control را هم باید None نمایید

----------


## hamedmaker4

سلام من هم با استفاده از یه برنامه که با net. نوشته شده میخوام اس ام اس بفرستم اما مشکل داره کسی میتونه منو
راهنمایی کنه
مشاهده برنامه

----------

