سلام .
من برای ارسال پیام چند پارتی مشکل دارم .
این متن پیام منه که دو پارت میشه :
برای ارسال در #C هم این طوری عمل می کنم :به نام خداوند بخشنده مهربان
یا رزاق یا رزاق یا رزاق
یا رزاق یا رزاق یا رزاق
یا رزاق یا رزاق یا رزاق
SP.Write("AT+CMGS=" + len.ToString());
b[0] = 13;
SP.Write(b, 0, 1);
SP.Write(stOut[i]);
b[0] = 26;
SP.Write(b, 0, 1);
PDU های ارسالی :
پارت اول :
AT+CMGS=153 0071000B819021336183F10008FF8B0608042AC90201062806 4700200646062706450020062E062F062706480646062F0020 0628062E06340646062F064700200645064706310628062706 46000D000A06CC062700200631063206270642002006CC0627 00200631063206270642002006CC0627002006310632062706 42000D000A06CC062700200631063206270642002006CC0627 00200631
پارت دوم :
AT+CMGS=93 0071000B819021336183F10008FF4F060804C8C30202063206 270642002006CC062700200631063206270642000D000A06CC 062700200631063206270642002006CC062700200631063206 270642002006CC062700200631063206270642
با Trace برنامه متوجه شدم OK میگیرم یعنی هیچ خطایی ندارم . اما پیامی در یافت نمی کنم .
لطفاً سریعتر راهنمایی فرمائید .
آخرین ویرایش به وسیله Mah : شنبه 28 دی 1387 در 21:09 عصر
دوست عزیز PDU شما درسته فقط مشکل اینجاست که شما باید بین ارسال دو پارت کمی صبر کنید یعنی فورا پارت دوم رو پشت سر پارت اول نفرستید
Farshad Nooranian
سلام .
درست گفتید . ممنون
اما الان این خطا را می بینم .
A device attached to the system is not functioning.
یعنی چی ؟؟؟
من کد دوستمون رو امتحان کردم. برای من خطایی نمیده ولی هر پارت به صورت اس ام اس جدا ارسال میشه
چه کار باید کرد که هر دو پیام در قالب یک اس ام اس ارسال بشن ؟
چون اینطوری درست نیست!
یک سوال داشتم که چون مربوط به PDU هست اینجا میپرسم.
دو فرمت alphabet و UCS2 فرمت های PDU هستن؟ چه فرقی دارن؟
یک سوال دیگه، در کدی دیدم که شماره سرویس رو با مقدار "+9891100500" مقداردهی کرده بود. آیا این همون شماره مرکز پیام هست؟؟!!! چرا با این مقدار مقداردهی میشه؟
مگرنه اینکه با ما میخوایم از گوشی متصل اس ام اس ارسال کنیم؟
فرقی نمی کنه شما با مودم کار کنید یا موبایل اگر شما در PDU همانطور که قبلا گفته شده باید 00 استفاده کنید که دیگر احتیاج به دادن شماره مرکز سرویس نباشد در غیر اینصورت باشد شماره را وارد نمایید
Farshad Nooranian
سلام
کسی کد ارسال این pdu ها رو به پورت com توی C# داره?
ممنون میشم
شما باید در تاپیک نمونه برنامه های ارسال اس ام اس نمونه هایی را پیدا کنید
Farshad Nooranian
ببخشید noorsoft عزیز، این اشتباه استفرقی نمی کنه شما با مودم کار کنید یا موبایل اگر شما در PDU همانطور که قبلا گفته شده باید 00 استفاده کنید که دیگر احتیاج به دادن شماره مرکز سرویس نباشد در غیر اینصورت باشد شماره را وارد نمایید
من این را تست کردم نه توی گوشی جواب داد و نه روی AT Command
دوست عزیز شما می توانید به جای وارد کردن شماره مرکز از 00 استفاده کنید و هیچ مشکلی هم پیش نمیاد
Farshad Nooranian
سلام.
من در بخش دیکد pdu های دریافتی پیام های چند تایی مشکل دارم.
طبق الگوریتمی که گفته شد،
برای ارسال رشته 12345678باید این رو بفرستیم :
31D98C56B3DD70
که در اون 08 طول رشته هست.
اما مشکل من جایی هست که این رشته در یک پیام چند بخشی میاد , یعنی کلا در دیکد پیام چند بخشی مشکل دارم، ببینید برای یک مثال ساده 153 کاراکتر اول پیام رو هر چیز دلخواهی میزنیم و 8 کاراکتر بعدی رو میزنیم 12345678 که جمعا میشه 161 کاراکتر و در 2 پارت ارسال میشه،
حالا، وقتی این پیام الان توی Inbox من هست با زدن AT+CMGL=1 اونرو باز می کنم :
06918919015080600C918919224170980000906011021002810F050003C8020262B219AD66BBE100
طول رشته برابر 15 هست که باید 7 تا به خاطر Header ازش کم کنیم که میشه 8.
اما مشکل اینحاست که
62B219AD66BBE100
با اینی که طبق الگوریتم حساب کردیم جور در نمیاد
31D98C56B3DD70
یعنی کلا دیکدر من همه پیام های یک بخشی انگلیسی رو درست دیکد میکنه ولی وقتی که به پیام های جند بخشی که هدر اون با 050003 شروع میشه میرسه همه چیزش قاطی میشه.
آقا یکی جامع و کامل ارسال پیام چند قسمتی رو توضیح بده
ممنون
ارسال پیامهای چند پارتی خیلی کامل گفته شده شما کجاش مشکل دارین
Farshad Nooranian
به جون خودم کلا نفهمیدم
چون قبلا صفحه ها رو ذخیره کردم نگاه می کنم می بینم مطالب پراکندست و یکجا جمع نیست
من یه پیام تک پارت رو می فرستم حالا دو پارت شد چه مراحلی انجام بدم
ممنون
راست گفتی خیلی کلی گفتم
من یه رو تین دارم که PDU رو میسازه یعنی شماره رو میدم یه رشته برام تولید می کنه که اون رشته رو با دستور AT مربوطه ارسال می کنم
حالا چطور این رشته تولید شده رو دو قسمت کنم و بفرستم
[quote=.::Mehran::.;531379]سلام دوستان ... امشب كه داشتم با گوشي ور ميرفتم چشمم ميدونيد به چي خورد .. يك سري پيام در قسمت پيش نويسهام ذخيره شده بود كه شماره ي دريات كننده براش مشخص نشده بود
code](07-91-89-39-05-00-41-00)-(B1)-(00)-(((00-81)))-(00)-(08)-(FF)-(02-0633)[/code][code]07 +98935001400 مركز پيام
عبارت B1 در پیغام بالا به چه معنی هست . تا اون جا که در مطالب گفته شده بود این بایت نشان دهنده حالت delivery هست که یا 31 هست یا 11
مسلما شماره موبایل در تکه دوم تکرار نمی شه
تکه های دوم به تعد فقط از طریق ایندکس به قسمت اول ارتباط پیدا می کنند
Farshad Nooranian
سلام میخواستم بدونم چه جوری میتونم sms های خوانده شده را از GSM Modem پاک کنم
ایا راه مستقیم برا این کار وجود داره یا حتما باید محل ذخیره اون رو بدونم
شماره ایندکس را باید بدانید
AT+CMGD=INDEX
Farshad Nooranian
سلام
چطوری به صورت اتوماتیک دستگاه gsm modem متصل به کامپیوتر را پیدا کنم
(بفهمم به کدوم پورت وصله)
با سلام خدمت دوستان
دوتا سوال
1- آیا در ارسال پیام های چند قسمتی لازم برای هر قسمت دستور AT+CMGF=0 اجرا بشه؟
2- آیا برای ارسال هر قسمت ایجاد یک تاخیر لازم هست یا خیر؟
با تشکر
1نه . شما یکبار مد ارسال را تعیین میکنید وبع از اون هرچند تا پیام که بفرستید در همین مد اترسال میشه تا موقعی که مد را عوض کنید.دو تا سوال
2- برای ارسال هر دستور به دستگاه باید صبر کنید تا دستور قبلی کاملا اجرا بشه و دستگاه پایان یافتن اون رو به شما گزارش بده (یا با error یا با ok ) برای ارسال پیام دو قسمتی هم در واقع داری دوتا پیام میفرستی (دوتا دستوره) پس باید تا اتمام دستور قبلی صبر کنی(تاخیر کلمه خوبی نیست بهتره منتظر پاسخ باشی)
ولی من برای هر دوتا قسمت از Hyper پیغام OK رو می گیرم ولی به گوشی چیزی نمی رسه
سلام خسته نباشید میگم به همه دوستانی در این تاپیک کار کرده اند
یه سوال پبش پا افتاده داشتم راجع به تبدیل اسکی به هگز بطور مثال من اسکی"م" رو "E3" بدست میارم و با این نمیشه PDU درستی داشت از توضیحات موجود در تاپیک هم بطور کلی چیزی متوجه نشدم میتونید کمکم کنید (DELPHI)
البته آدرس یونیکد فارسی را هم ضمیمه می کنم
http://www.unicode.org/Public/UNIDATA/ArabicShaping.txt
این کد های دوبایتی هگز چه ارتباطی با با تبدیل اسکی به هگز کارکتر ها دارن "E3" کجا "0645" کجا
آخرین ویرایش به وسیله majid1088 : شنبه 30 آبان 1388 در 19:56 عصر
جواب رو پیدا کرد با سورس دلفی pdu to unicode
function ReturnByte(s:string; i:integer):byte;
begin
Result := 0;
if(((s[i] < #$30) or (s[i] > #$39))and
((s[i] < #$41) or (s[i] > #$46)))or
(((s[i+1] < #$30) or (s[i+1] > #$39))and
((s[i+1] < #$41) or (s[i+1] > #$46)))then exit;
if s[i] >= #$41
then Result := Byte(s[i]) - $41+$A
else Result := Byte(s[i]) - $30;
if s[i+1] >= #$41
then Result := (Result shl 4) + Byte(s[i+1]) - $41+$A
else Result := (Result shl 4) + Byte(s[i+1]) - $30;
end;
function OctetsToUnicode(aStr:string; Index:integer):WideString;
var i,len : integer;
wCh: word;
begin
Result := '';
len := Length(aStr);
i := Index;
while i <= len do begin
wCh := ReturnByte(aStr,i);
wCh := (wCh shl 8) + ReturnByte(aStr,i+2);
Result := Result + WideChar(wCh);
inc(i,4);
end;
end;
بازم به خاطر تاپیک محشرتون متشکرم
مگه میشه دستوری به گوشه نرسه و اون پیام ok بدهولی من برای هر دوتا قسمت از Hyper پیغام OK رو می گیرم ولی به گوشی چیزی نمی رسه
در hyperterminal درمنوی file-> propertise-> setting-> ascii setup گزینه echo typed char را تیک بزنید تا دستورات ارسالی رو ببینید(یا درستور ATE1) رو به دستگاه بفرستید.
سلام
کسی میدونه چطوری با دستورات at میشه شماره سیم کارتی که رو گوشی هست رو بدست آورد(شماره تلفن رو میگم)
خداحافظ
سلام.
مطالبتون واقعاً عالي بود. من براي فرستادن اس ام اس يک پارتي مشکل ندارم ولي چند پارتي ها فقط پارت اولش مياد. اينم کدهاش
پارت اول
0051000B819081137991F00008FF8B060804B9850401064506 45064506450645064506450645064506450645064506450645 06450645064506450645064506450645064506450645064506 45064506450645064506450645064506450645064506450645 06450645064506450645064506450645064506450645064506 45064506450645064506450645064506450645064506450645 06450645
پارت دوم
0051000B819081137991F00008FF8B060804B9850402064506 45064506450645064506450645064506450645064506450645 06450645064506450645064506450645064506450645064506 45064506450645064506450645064506450645064506450645 06450645064506450645064506450645064506450645064506 45064506450645064506450645064506450645064506450645 06450645
پارت سوم
0051000B819081137991F00008FF8B060804B9850403064506 45064506450645064506450645064506450645064506450645 06450645064506450645064506450645064506450645064506 45064506450645064506450645064506450645064506450645 06450645064506450645064506450645064506450645064506 45064506450645064506450645064506450645064506450645 06450645
پارت چهارم
0051000B819081137991F00008FF0B060804B9850404064506 45
البته اگه ممکنه لطفاً پاسخ سريع ميخوام
ضمناً اي همون مثال 200 تا م هست
آخرین ویرایش به وسیله noorsoft : یک شنبه 08 آذر 1388 در 07:28 صبح
سلامالبته اگه ممکنه لطفاً پاسخ سريع ميخوام
من متن رو بررسی کردم . ظاهرا مشکلی نداره
اگه پاسخی که ازطرف دستگاه میاد رو بفرستید شاید بشه کمک کرد(مثلا شماره خطا)
با این حال هر کدوم از پارت ها رو که میفرستید تا زمان کامل شدن اجرای اون باید صبر کنید و بعد پارت بعدی رو بفرستید
. تست کنید که عدد ارسالیN در هنگام AT+CMGS=N برای همه قسمت ها درست ست شده باشه
دیگه چیزی به خاطرم نیست
سلام
اينم متن کامل دستورات AT براي ارسال حرف ب
AT+CMGS=153
> 0051000B819081136991F00008FF8B060804F6FD0201062806 2806280628062806280628062806
28062806280628062806280628062806280628062806280628 062806280628062806280628062806
28062806280628062806280628062806280628062806280628 062806280628062806280628062806
28062806280628062806280628062806280628062806280628 06280628062806280628
+CMGS: 0
OK
AT
OK
AT+CMGS=69
> 0051000B819081136991F00008FF37060804F6FD0202062806 2806280628062806280628062806
28062806280628062806280628062806280628062806280628 062806280628
+CMGS: 0
OK
AT
OK
سلام
هيچ کس نميتونه کمک يا راهنمايي کنه؟
اگه زودتر کمک نرسه دردسر جدّي ميشه!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!