فكر كنم اين يك استثناء باشه ... چون من وقتي داشتم يك سورس رو مطالعه ميكردم اين حالت توش ذكر شده بود ... !!! درست ميگم يا نه ؟؟
Printable View
فكر كنم اين يك استثناء باشه ... چون من وقتي داشتم يك سورس رو مطالعه ميكردم اين حالت توش ذكر شده بود ... !!! درست ميگم يا نه ؟؟
اگر استثناء نبود بهش تاکیدی نداشتم.نقل قول:
فكر كنم اين يك استثناء باشه
-----------------------------------------------------------------------
حق با شماست منهای 4 شده ! گنگ هست ولی اشتباه نیست!نقل قول:
نقل قول:
از اونجایی که فرمت ما UTF هست پس در هر پارت حداکثر باید 70 کاراکتر جا بگیره یعنی :
همانطور که گفتم ما 8 بایت سر بار اضافه داریم پس باید بشه.
200 / 66 = 3.03
در واقع اینجا 70منهای 4 شده 66 درسته؟
پ.و : البته ناگفته نمونه که چون من تو بطن مسئله بودم موقع ویرایش یکی 2 تا پاورقی جا انداختم که اینجا میگم اونجا هم ویرایش میکنم.
------------
همانطور که تا الان باید متوجه شده باشید ما بدون احتساب شماره مرکز،شماره گیرنده و بقیه علائم برای متن و محتوای 1 پارت پیام حداکثر 140 بایت جا داریم که شمارش اون دقیقا از بعد از بایت شمارشگر محتوی شروع میشه.
یعنی اگر بر مبنای 8 بیت حساب کنیم 140 کاراکتر داریم و چون در مد DefaultAlphabet برای هر کاراکتر 7 بیت داریم پس کلا میتونیم 160 کاراکتر ارسال داشته باشیم و همچنین به دلیل اینکه در مد UCS2 برای هر کاراکتر 16 بیت داریم یعنی هر کاراکتر 2 بایت پس کلا میتونیم 70 کاراکتر رو ارسال کنیم.
حالا توی مد UCS2 وقتی پیام از 1 پارت بیشتر میشه ما مجبور 7 بایت هدر شامل :(3 بایت کد ثابت، 2 بایت شماره تصادفی ،1 بایت تعداد کل پیامها ،1 بایت شماره پیام فعلی) رو در محتوی پیام بگنجونیم
پس در نتیجه 140 بایت منهای 7 بایت برابر میشه با 133 بایت.
یعنی ما میتونیم 133 بایت از محتوی متن پیام شماره 1 رو اینجا بزاریم اما تو مد UCS2 یه ولی داریم:
توی حالت UCS2 همانطور که گفتم هر کاراکتر 2 بایت داره پس با احتساب 133 بایت فضای خالی که موجود داریم میتونیم 66 کاراکتر و 1 بایت بفرستیم و چون این بایت باقیمانده نیاز به بایت مکمل داره تا تفهیم باشه و اون بایت مکمل بلاجبار توی پارت بعدی قرار گرفته این بایت هم از اینجا حذف میکنیم و به پارت بعدی اضافه میکنیم یعنی ما توی هر پارت پیام UCS2 به صورت مولتی پارت 132 بایت رو جا میدیم که میشه 66 کاراکتر و بیشتر از این امکان نداره.
---------------------------------------------------------------------------------
نقل قول:
نقل قول:
12. تعداد بایتهای پیام اول = 8B ("چون اینجا به جفت 4 تایی بایتها نیاز داریم پس در کل 70 کاراکتر و 140 بایت داریم و 140 منهی 8 بایت سربار اضافی برابر میشه با 138 که با خود یک بایت شمارش گر میشه 139 که در مبنای 16 برابر میشه با 8B که باید جایگزین بشه ")
140 منهای 8 بایت سربار میشه 132
کاملا حق با شماست اینی که من اونجا نوشتم الان که دارم میخونمش یه جمله نا مفهومی هست که به طرز وحشتناکی قوانین ریاضی رو زیر پا گذاشته.:قهقهه:نقل قول:
نقل قول:
17.محتوی پیام شامل = [66 بار تکرار (0645) که معادل کد اسکی حرف "م" هست و با یه ضرب ساده در 2 بایت میشه همون 138 بایتی که نیاز داشتیم]
66 ضربدر 4 بایت میشه 132
علتش هم اینه که من اون موقع که داشتم تایپ میکردم همزمان تو فکرم داشتم این مسئله ای رو که اینجا گفتم پیش خودم تجزیه تحلیل میکردم که بیانش کنم! بیانش که نکردم هیچ بلکه همه رو با هم قاتی کردم شد مزخرف!:اشتباه:
مرسی از تذکرت
-----------------------------------------------------------
اینم حق با شماست چون من کد پارت اول رو برای جلوگیری از اشتباه با ماشین حساب تشکیل دادم و بقیه رو با نرم افزار این شد که حواسم به این عدد نبود.نقل قول:
در کدهایی هم که مثال زدین عدد تصادفی پارت اول با سه پارت دیگه فرق میکنه
------------------------------------
بازهم ممنون از توجه همه دوستان
موفق باشید
شماره فرستنده پیام
0C : نمایش دهنده تعداد ارقام شماره فرستنده . توجه : این تعداد شامل علامت شماره نمیشود و منحصرا مربوط به تعداد شماره هست که برابر است با 12 رقمی که با رنگ قرمز علامت گزاری شده.
0791893905004102240C918939564208
8400008060504112928110C2B0DC1D6E
97DD657B7AEE7ACBCF
91: نمایش دهنده علامت شماره (91 بین المللی + و 81 معمولی)
893956420884 : شماره فرستنده به صورت جفت معکوس
پس با تفاسیر فوق داریم:
89-39-56-42-08-84
که میشه:
98-93-65-24-80-48
و با احتساب کد 91 که همون علامت هست شماره فرستنده میشه:
+989365248048
دقت به این نکته اهمیت داره که اگر تعداد ارقام فرد باشه مثل قبل آخرین رقم با F0 جمع شده که باید اینجا در نظر گرفته بشه.
پ.و : این شماره منه ولی توی GSM Modem به سر میبره و جهت مورد خاصی استفاده میشه و در شرایط فعلی هیچ شخصی بهش پاسخگو نیست ، دوستان ارتباط رو از همین تاپیک ادامه بدن.ممنون
با تقدیم احترام
موفق باشید
پروتکل ، نوع محتوی پیام ، تاریخ
0791893905004102240C918939564208
8400008060504112928110C2B0DC1D6E
97DD657B7AEE7ACBCF
00 : با یه جهش 1 بایتی از خیر این بایت میگذریم که شامل یه سری اطلاعات جزئی راجع به پروتکل پیام هست.
00 : این بایت نمایش دهنده نوع کد گزاری محتوی پیام هست و همانطور که تو بخش ارسال گفتم برای Default Alphabet داریم 00 و برای UCS2 داریم 08 از روی این بایت متوجه میشیم که محتوی پیام رو چطور باید از حالت کد خارج کنیم.
80605041129281 : تاریخ و زمان که همانند شماره مرکز و شماره فرستنده به صورت جفت معکوس هست.
80 : معکوس 08 که نماینده سال 2008 هست.
60 : معکوس 06 که نماینده شماره ماه هست.
50 : معکوس 05 که نماینده شماره روز هست.
41 : معکوس 14 که نماینده ساعت طی شده از روز هست بر مبنی 24 ساعت یعنی 2 ظهر.
12 : معکوس 21 که نماینده دقیقه هست.
92 : معکوس 29 که نماینده ثانیه هست.
81 : معکوس 18 که نماینده موقعیت زمانی و جغرافیایی بر اساس GTM هست و قانون محاسبه اون یه تقسیم بر 4 میخواد که برای این مثال میشه GTM +4.5 .
موفق باشید
raravaice من به يه چيز عجيب غريب خوردم ... با توجه به حرفي كه پايين زدي من اومد كد اسكي م رو گرفتم ... ولي مثل اينكه در زبانهاي مختلف برنامه نويسي با هم فرق دارن ( عجيبه كد اسكي كه يك چيز واحد هست ) مثلا در دلفي وقتي با تابع ord كد اسكيش رو گرفتم جوابش شد 227 و وقتي توي VB اين كار رو كردم جوابش شد 223 و وقتي توي دات نت اين كار رو كردم جوابش شد 227 خوب حالا من 227 رو تبديل به HEX كردم ولي جوابش شد E3 و 645 رو بدست نياوردم ... جريان اين چيه به نظرت ؟؟؟
نقل قول:
مثلا معادل اسکی در پایه HEX برای حرف م عدد 645 هست ولی چون برای هر کاراکتر در این مد 4 تا صفر رزرو شده حتما باید صفر سمت چپ گذاشته بشه یعنی برای حرف م داریم 0645
raravaice جون مشكل اون اسكي كه با بقيه فرق ميكرد در VB حل شد ... قاطي كرده بود و يه بار بازو بستش كردم درست شد ... الان توي Delphi , C++ , C#, VB , VB.Net امتحان كردم ... همشون كد اسكي م رو برابر با 227 بر ميگردونن ...
شايد تا به حال با مطالعه ي موضوعات ارائه شده توسط دوستان تونسته باشين ساخت SMS رو درك كنيد .. از طرفي من هم به نوشته ها دقت ميكردم و قسمتهاي گنگ رو مطرح ميكردم تا دوستان رسيدگي كنن و يك منبع كامل براي فارسي زبانها باشه ...
خوب يك چيز جالب بهتون بگم ... طي اين رفرنس به فكرتون نيوفتاده كه اگه ما خواستيم پياممنون رو دو زبانه بسازيم ... ( مخلوطي از كاراكترهاي فارسي و انگليسي ) بايد چيكار كنيم و چه نوعي رو انتخاب كنيم ...
حتما با خودتون فكر كردين كه ايا چيزي به جز DefaultAlphabet و UCS2 هم وجود داره كه اين نياز ما رو برطرف كنه ... !!!؟؟ :لبخند:
خوب ذكر اين نكته واجب هست كه در صروتي كه شما خواستين ( مخلوطي از كاراكترهاي فارسي و انگليسي ) رو در SMS ساخته شده ي خودتون داشته باشين بايد UCS2 رو انتخاب كنيد ...
نكته ي مهمي بود و چون تا حالا بهش اشاره نشده بود لازم دونستم ذكر كنم :لبخندساده:
يا حق ...
نقل قول:
raravaice جون مشكل اون اسكي كه با بقيه فرق ميكرد در VB حل شد ... قاطي كرده بود و يه بار بازو بستش كردم درست شد ... الان توي Delphi , C++ , C#, VB , VB.Net امتحان كردم ... همشون كد اسكي م رو برابر با 227 بر ميگردونن ...
نقل قول:
حتما با خودتون فكر كردين كه ايا چيزي به جز DefaultAlphabet و UCS2 هم وجود داره كه اين نياز ما رو برطرف كنه ... !!!؟؟ :لبخند:
از اونجایی که آدم بی نهایت شیطونی به نظر میای و معما رو ظاهرا خیلی دوست داری ، و من هم یکی از مشتاقان مطرح کردن معما هستم دوست دارم این نکته رو برات مبهم بزارم تا دیگه از این سئوالات نکنی.:لبخند:نقل قول:
من به يه چيز عجيب غريب خوردم
--------------------
! پسر خوب وقتی داره دم از حرف "م" که یه کاراکتر Unicode هست زده میشه شما باز داری مثل یه کاراکتر ASC باهاش برخورد میکنی و انتظار داری درست جواب بده؟!آخه این انصاف نسبت به این کاراکتر؟:قهقهه:
Unicode دو تا بایت داره یعنی وقتی شما مقدار اسکی اونو میگیری نتیجه فقط بایت اول هست و بایت دوم ندید گرفته میشه. شما احیانا از دستور W اونا استفاده کن که نتیجه درست بشه!
مثلا برای vb.net داریم AscW که جواب میده 1605 و معادل Hex میشه 645.
:چشمک:
شبت بخیر
موفق باشی
دوستان من آدمایی پایه تر از شما دو تا ندیدم که این موقع شب بشینین و کارای تحقیقاتی بکنین
حالا که بحث به اینجا رسید صلاح میدونین طریقه ارسال پیام تصویری OTA را هم اینجا داشته باشیم
شما دو تا مثل داداشاي من هستين ...
تا كي ما ايراني ها بايد محتاج منابع زبان اصلي باشيم ... چرا نبايد دانسته هاي خودمون رو در اختيار هم بزاريم تا محتاج غربي هايي باشيم كه ما رو وحشي خطاب ميكنن ... چرا خودمون نتونيم .. چرا غرور بچه گانمون رو كنار نزاريم ... دوران پنهان سازي گذشته ... مگه ما چقدر عمر داريم ... دانسته هامون رو كه نميخواييم ببريم اون دنيا .. پس بهتر هست با عزم و اراده همديگه رو ياري كنيم تا هميشه بهترين باشيم ... من تا بتونم كمكتون ميكنم ...
واي خدا ... عجب نكته اي بود ... هر چند ساعت 5 صبح مخم نميكشيد و چشما همه چي رو PDU ميبينه ... به مغزم حق ميدم كه قاطي كنه .....نقل قول:
پسر خوب وقتی داره دم از حرف "م" که یه کاراکتر Unicode هست زده میشه شما باز داری مثل یه کاراکتر ASC باهاش برخورد میکنی و انتظار داری درست جواب بده؟!آخه این انصاف نسبت به این کاراکتر؟:قهقهه:
Unicode دو تا بایت داره یعنی وقتی شما مقدار اسکی اونو میگیری نتیجه فقط بایت اول هست و بایت دوم ندید گرفته میشه. شما احیانا از دستور W اونا استفاده کن که نتیجه درست بشه!
مثلا برای vb.net داریم AscW که جواب میده 1605 و معادل Hex میشه 645.
ممنون ... خدا پشتو پنهاهتون باشه ... يا حق ...
به این برنامه یک نگاهی بکنید البته این را هم بگم من اون را خیلی وقت پیشا نوشتم.
http://www.noorsoft.com/products/smspic.zip
1.اگر ارسال و دریافتش رو با هم بگی که خیلی عالیتر و کاملتره.نقل قول:
طریقه ارسال پیام تصویری OTA را هم اینجا داشته باشیم
2.اون جریان متن به جای شماره که بهش اشاره کردی حتما بحثش رو بیار وسط ! برام جالبه ، چون حقیقت اینکه من چند ساله پیش که دورو بر موبایل میچرخیدم و کار الکترونیک میکردم تا جایی پیش رفتم که خود دیتای سیم کارت رو کپی کردم رو IC وازش به عنوان یه سیم جدید استفاده کردم ولی این کاری که میگی رو هیچ وقت نتونستم از سمت کلاینت انجام بدم.
3.مسئله EMS و MMS هم سر فرصت حتما باید یکی از بحث های ادامه دهنده باشه.
پ.و : تعلل من توی دادن پست اینه که صدای سوتی های قبلی در بیاد و زیاد ازشون دور نشم.قبلا از همگی به خاطر این مکث های کوتاه مدت پوزش میخوام
شب شما هم به خیر باشه
ارسال فایل OTA
فکر کنم مثل روند قبل روی یک مثال توضیح بدم بهتره
01 06 2C 1F 2A 61 70 70 6C 69 63 61 74 69 6F 6E
2F 78 2D 77 61 70 2D 70 72 6F 76 2E 62 72 6F 77
73 65 72 2D 73 65 74 74 69 6E 67 73 00 81 EA 01
01 6A 00 45 C6 06 01 87 12 49 01 87 13 11 03 31
32 33 2E 31 32 33 2E 31 32 33 2E 31 32 33 00 01
87 14 61 01 87 1C 11 03 6D 6D 73 63 2E 6E 6F 6B
69 61 6E 6F 6B 69 61 6E 6F 6B 2E 63 6F 6D 00 01
87 22 70 01 01 86 7C 11 03 68 74 74 70 3A 2F 2F
6E 6F 6B 69 61 6E 2E 6F 6B 69 61 6E 6F 6B 69 61
6E 6F 6B 69 61 2E 63 6F 6D 3A 38 30 30 32 2F 00
01 C6 08 01 87 15 11 03 4D 4D 53 20 4E 4F 4B 49
41 20 47 50 52 53 00 01 01 01
01 = Push ID
06 = PDU Type (push)
2C = Headers length (content type + headers)
1F 2A Value length
61 70 70 6C 69 63 61 74 69 6F 6E 2F 78 2D 77 61 70 2D 70 72 6F 76 2E 62 72 6F 77 73 65 7
2D 73 65 74 74 69 6E 67 73 = MIME-Type= application/x-wap-prov.browser-settings
00 = end inline string
81 EA = Char set (UTF-8 short int.)
01 01 = Version WBXML 1.1
6A = Char set (UTF-8)
00 = String table length
45 = CHARACTERISTIC-LIST with content
C6 = CHARACTERISTIC with content and attributes
06 = TYPE=ADDRESS
01 = END PARMeter
87 = PARM with attributes
12 = NAME=BEARER
49 = VALUE=GPRS
01 = END PARMeter
87 = PARM with attributes
13 = PROXY
11 = VALUE
03 = Inline string
31 32 33 2E 31 32 33 2E 31 32 33 2E 31 32 33 = 123.123.123.123
00 = end inline string
01 = END PARMeter
87 = PARM with attributes
14 = PORT
61 = token for port number 9201
01 = END PARMeter
87 = PARM with attributes
1C = GPRS_ACCESSPOINTNAME
11 = VALUE
6D 6D 73 63 2E 6E 6F 6B 69 61 6E 6F 6B 69 61 6E 6F 6B 2E 63 6F 6D = mmsc.nokianokianok.com
00 = end inline string
01 = END PARMeter
87 = PARM with attributes
22 = NAME=PPP_AUTHTYPE
70 = VALUE=PAP
01 = END PARMeter
01 = END PARMeter
86 = CHARACTERISTIC-LIST with attributes
C7 = TYPE=MMSURL
11 = VALUE
68 74 74 70 3A 2F 2F 6E 6F 6B 69 61 6E 2E 6F 6B 69 61 6E 6F 6B 69 61
6E 6F 6B 69 61 2E 63 6F 6D 3A 38 30 30 32 2F = http://nokian.okianokianokia.com:8002/
00 = end inline string
01 = END PARMeter
C6 = CHARACTERISTIC with content and attributes
08 = TYPE=NAME
01 = END PARMeter
87 = PARM with attributes
15 = NAME=NAME
11 = VALUE
03 = Inline string
4D 4D 53 20 4E 4F 4B 49 41 20 47 50 52 53 = MMS NOKIA GPRS
00 = end inline string
01 = END PARMeter
01 = END PARMeter
01 = END PARMeter
برای تفسیر PDU
00 51 00 0C 91 53 48 74 38 00 00 00 F5 AA 8C
00 = NO SMSC ADDRESS PRESENT
51 = MESSAGE HEADER FLAGS (0x51)
Message type: SMS Submit
Reject duplicates: No
Validity: Relative
Reply path: No
UDH present: Yes
Req. status report: no
00 = Message reference: 0 (0x00)
0C = Length of TPDU
91 53 48 74 38 00 00 = Recipient number (+358447830000)
00 = Protocol identifier
F5 = Message class, data coding cheme (8-bit)
AA = Validity period
8C = Length of data
برای UDH
0B 05 04 C3 4F 00 00 00 03 C2 02 01
0B = Length of the UDH
05 = Port addressing (16 bit)
04 = Information element length (bytes)
C3 4F = Destination port (49999d)
00 00 = Source port (0d)
00 = Concatenation 8-bit reference
03 = Information element length (bytes)
C2 = SMS reference number
01 = Sequence number
02 = Number of messages in the concatenation
این هم طریقه ارسال
at+cmgf=0
OK
at+cmgs=154
>0051000C9153487438552200F5AA8C0B0504C34F00000003C 2020101062C1F2A6170706C696
36174696F6E2F782D7761702D70726F762E62726F777365722 D73657474696E67730081EA0101
6A0045C6060187124901871311033132332E3132332E313233 2E313233000187146101871C11
036D6D73632E6E6F6B69616E6F6B69616E6F6B2E636F6D0001 8722700101867C1103687474703
A2F2F
+CMGS: 42
OK
at+cmgs=84
>0051000C9153487438000000F5AA460B0504C34F00000003C 202026E6F6B69616E2E6
F6B69616E6F6B69616E6F6B69612E636F6D3A383030322F000 1C60801871511034D4D5
3204E4F4B4941204750525300010101
+CMGS: 43
OK
داداش noorsoft اون ماجراي نمايش دادن يك متن به جاي شماره تلفن رو توي اولويت قرار بده كه مشتاق شدم بدونم موضوع از چه قراره ...
البته یادم رفت بپرسم آیا با فورمت این فایل آشنایی دارین یا نه
این تصاویر 72*28 هستند و هر بیت نشاندهنده یک پیکسله
5 بیت اول مشخصات فایل و طول و عرض تصویر
و بقیه نقش بیت یا همون اصل تصویره که از آخر به اول در فایل ذخیره شده
نمونه کد را براتون میزارم امیدوارم گویا باشه
یک Picturebox روی فرمتون بزارین و یک File
این هم زیر برنامش
Autoredraw=true
scalemode=3 'pixel
Private Sub OpenOta()
Dim a As String
Dim i As Integer
Dim h As Integer, w As Integer
Dim j As Integer
Dim X As Integer, Y As Integer
Open File1.Path & "\" & File1.FileName For Binary As #1
a = Input$(256, 1)
On Error GoTo err
w = Asc(Mid(a, 2, 1))
h = Asc(Mid(a, 3, 1))
X = w
Y = h
Picture1.ForeColor = vbBlack
Picture1.Picture = LoadPicture()
Picture1.Cls
For i = 256 To 5 Step -1
j = Asc(Mid(a, i, 1))
If j And 1 Then Picture1.PSet (X, Y)
X = X - 1
If j And 2 Then Picture1.PSet (X, Y)
X = X - 1
If j And 4 Then Picture1.PSet (X, Y)
X = X - 1
If j And 8 Then Picture1.PSet (X, Y)
X = X - 1
If j And 16 Then Picture1.PSet (X, Y)
X = X - 1
If j And 32 Then Picture1.PSet (X, Y)
X = X - 1
If j And 64 Then Picture1.PSet (X, Y)
X = X - 1
If j And 128 Then Picture1.PSet (X, Y)
X = X - 1
If X = 0 Then
X = w
Y = Y - 1
End If
Next
err:
Close
End Sub
راستش هنوز نمی دونم گفتن اینجور مطالب درسته یا نه
همونطور که میدونید بعضی از آدمها جنبه ندارین (دور از جان شما) و شروع به سوء استفاده کردن میکنن و ممکن برای خودشون و دیگران ایجاد مزاحمت کنن
چون با این روش شما میتونین مثلا به عنوان پلیس و ... به افراد پیام بفرستید
حالا نمی دونم چکار کنم توضیح بدم یا نه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ :متفکر:
ولی این را بگم که این کار فقط SMS-Submit-PDU قابل انجامه چون آدرس اصلی (OA) توسط SMSC داده میشه
اين روش رو بگو چون مفيد واقع ميشه ... مثلا ما به جاي شماره تلفن ميتونيم اسم شركتمون رو بندازيم ... اينجوري خيلي با كلاس تر هستش ....
در ضمن اين روش توسط گوشي هم امكان پذيره و اگه كسي بخواد سوء استفاده كنه از راه گوشي هم ميتونه اين كار رو كنه ... روشش هم با گوشي خيلي سادست .... فقط اگه ساختنش رو توضيح بديد خيلي خوب ميشه ...
رمز گشایی محتوی پیام
اول از همه دوستان این نکته رو یاد آور میشم که در مد Default Alphabet برای هر کاراکتر هفت بیت داریم همانطور که توی قسمت ارسال توصیف شده.
0791893905004102240C918939564208
8400008060504112928110C2B0DC1D6E
97DD657B7AEE7ACBCF
10 : این عدد که در مبنای Hex هست و در مبنی Dec معادلی برابر 16 داره میگه از بعد از من تعداد 16 بایت وجود داره که تشکلیل دهنده 16 کاراکتر ما هستند.
C2B0DC1D6E97DD657B7AEE7ACBCF : محتوی پیام اینجاست که ما باید به زبان قابل تشخیص خودمون تبدیلش کنیم.
نکته : با یه نگاه کوچیک و شمارش تعداد بایتهای محتوای پیام به عدد 14 میرسیم در حالی که بایت شمارشگر به ما عدد 16 رو داده! در نظر داشته باشید که عدد شمارش گر در اصل داره میگه شما از این کد باید 16 بایت رو خارج کنید.
رمز گشایی محتوی پیام . مرحله به مرحله.
1. اصل پیام
C2B0DC1D6E97DD657B7AEE7ACBCF
2.جدا سازی بایت به بایت برای آسودگی کار در محاسبات دستی و این کار در برنامه شما نیازی نیست که صورت بگیره.
C2-B0-DC-1D-6E-97-DD-65-7B-7A-EE-7A-CB-CF
3.اگر یادتون باشه ما توی مرحله ارسال چند بار محتوی رو برعکس کردیم که حالا اینجا باید همه اونا رو جبران کنیم.پس داریم :
C2-B0-DC-1D-6E-97-DD-65-7B-7A-EE-7A-CB-CF
که بعد از بر عکس شدن میشه :
CF-CB-7A-EE-7A-7B-65-DD-97-6E-1D-DC-B0-C2
دقت کنید که فقط محل بایت ها عوض میشه و در عدد هیچکدام از بایتها تغییری صورت نگرفته
4.نتیجه مر حله 3 باید به معدل باینری هر بایت تبدیل بشه یعنی داریم :
CF-CB-7A-EE-7A-7B-65-DD-97-6E-1D-DC-B0-C2
که میشه :
11001111-11001011-01111010-11101110-01111010-01111011-01100101-11011101-10010111-01101110-00011101-11011100-10110000-11000010
پ.و : به علت کمبود رنگ فقط 2 بایت اول رو نشانه گزاری کردم که حق مطلب ادا بشه.
5.حالا در وضعیت فعلی ما 14 بایت داریم که ضربدر 8 میشه 112 بیت و تعداد بایتی که شمارشگر به ما اعلام کرده 16 بوده و همچنین در این مد هر 7 بیت 1 کاراکتر هست پس کل بت هامون رو باید به 16 قسمت 7 بیتی قسمت کنیم.
پس میشه :
1100111-1110010-1101111-0101110-1110011-1101001-1110110-1100101-1101110-1100101-1101101-1100001-1101110-1110010-1100001-1000010
6.نتیجه ای که توی این مرحله به دست آمد حالا باید دوباره برعکس بشه یعنی نتیجه بالا بشه :
1000010-1100001-1110010-1101110-1100001-1101101-1100101-1101110-1100101-1110110-1101001-1110011-0101110-1101111-1110010-1100111
7.حالا اینارو 7 بایت 7 بایت همینطوری که هستند به معادل Asc اونا تبدیل کنید تا کلمه زیر رو داشته باشین.
Barnamenevis.org
خیلی راحت بود مگه نه؟!;)
فقط یه نکته که همونطور که قبلا گفتم برای @ هفت بیت 0 داریم "000000" که باید اینو خودتون با یه شرط تشخیص بدین.
موفق باشید
دوستان بزارین اول بحث اصلی تموم بشه من قول میدم این کار را انجام بدم
آقا مهران عجله نکن این بحث را بصورت کامل برات توضیح میدم و یه نکته دیگه این کار با گوشی موبایل هم قابل انجامه و اینکه این امکان برای اولین بار توسط شرکت نوکیا ایجاد شده من هم از روی کنجکاوی روش کار کردم
شما باید با یک پروتکل این کار را انجام بدین که من تماما را توضیح میدم
انشا الله اگه عمری باقی باشه پس کمک کنید بحث اصلی را جمع کنیم و بعد من در خدمت هستم
من چیزهای دیگه ای هم براتون دارم
1- ارسال و دریافت Vcart Business یا همون شماره های تلفن
2- ارسال و دریافت Ring Tone
3- لوگوهای اپراتور
4- ارسال یاداشتهای روزانه
شرمنده دیگه چیزی بلد نیستم
ضمن تشکر از تمامی دوستانی که در این تاپیک زحمت می کشن .
2 تا سوال داشتم ...
سوال اول اینکه کلاً چند نوع روش برای ارسال sms داریم ؟!! و سوال دوم : GSM چیه ؟!
این در مورد سوال اول تصویر ضمیمه انواع پروتکلها را نشون میده
https://barnamenevis.org/attach...8&d=1212774831
این هم سوال دوم
GSM
The Global System for Mobile Communications, GSM (original acronym: Groupe Spécial Mobile) is the most popular standard for mobile phones in the world. GSM service is used by over 2 billion people across more than 212 countries and territories.[1][2] The ubiquity of the GSM standard makes international roaming very common between mobile phone operators, enabling subscribers to use their phones in many parts of the world. GSM differs significantly from its predecessors in that both signaling and speech channels are Digital call quality, which means that it is considered a second generation (2G) mobile phone system. This fact has also meant that data communication was built into the system from the 3rd Generation Partnership Project (3GPP).
این دیکشنری مربوط به Gsm بد نیست داشته باشید
قوی ترین نرم افزاری که در رابطه به PDU طراحی شده
راستی در مورد Flash sms هم هیچ توضیحی ندادیم
در واقع فلش اس ام اس پیامی که بصورت اتوماتیک نمایش داده میشه و بعد از خواندن پاک می شه یعنی در واقع اصلا ذخیره نمی شه
برای ارسال این گونه پیامها کافی برای DSC خود کلاس 1 را انتخاب نمایید
البته قبلا توضیح شو دادم
سلام به دوستان عزيز و گرامي
چندروز پيش خيلي دنبال مطلب ارسال اس ام اس از طريق كامپيوتر گشتم ولي مطلب به درد بخوري دستم نيومد. تا اينكه امشب اتفاقي يه سرچ كردم و با كمال تعجب اين پست را ديدم. آخر پست كه رسيدم ديدم چقدر داغه!:متعجب:
انصافا دست مريزاد، خسته نباشيد،خدا قوتتون بده خيلي عالي بود. خيلي.
جدا كه زكات علمتون را خوب دادين
موفق باشيد
ياعلي :تشویق:
سلام دوستان ... امشب كه داشتم با گوشي ور ميرفتم چشمم ميدونيد به چي خورد .. يك سري پيام در قسمت پيش نويسهام ذخيره شده بود كه شماره ي دريات كننده براش مشخص نشده بود :خجالت: خوب اين پيامها به دليل اين به وجود مياد كه يه چيزي مينويسي بعد بدون اينكه به مرحله ي بعد بريم back ميزنيم و از ويرايشگر پيام خارج ميشيم .. اين كار باعث ميشه تا اين پيامها به وجود بيان .... خوب حالا وقتي ما با AT يك پيام رو دريافت كرديم اگه با اين حالت رو به رو شديم چيكار بايد بكينيم !!! :لبخند:
خوي من يك نمونش رو براتون اينجا توضيح ميدم ...
(07-91-89-39-05-00-41-00)-(B1)-(00)-(((00-81)))-(00)-(08)-(FF)-(02-0633)07 +98935001400 مركز پيامدراينجا فقط اون دو بايت ابي رنگ براي ما اهميت داره يعني 81-00 خوب بدين معناست كه طول شماره ي مقصد 0 است .. يعني شماره ي مقص وارد نشده ...
00 00 شماره ي مقصد
و اما 81 يعني چي !!؟؟ خوب اين دو بايت به صورت پيش فرض وقتي شماره وارد نشه اينجا ميشن .. يادتونه كه اگه شماره به صورت بين المللي نبود 81 رو وارد ميكريد به معناي همون دو صفر !!!؟؟ اينجا هم 81 نقش خاصي نداره :لبخند:
مثالي از شماره اي كه بين المللي نيست :
00989350001400
موفق باشيد ... يا حق ...
این دقیقا چیزی که من قبلا چند بار گفتم یک PDU میتونه قسمتهایی را در خود نداشته باشه و این امر یه کم به پیچیدگی اندکدینگ اضافه میکنه
اگه شما نرم افزار PDUSPY را دانلود کرده باشین می بینبن حتی شما میتونین یک پیام بدون شماره مرکز- شمار گیرنده - مدت عمر پیام و ... تولید کنید و روی سیم کارت و یا حافظه گوشی ذخیره کنید
در ضمن داش مهران اینقدر به این گوشی ور نرو خرابش میکنی ا :لبخند:
موفق باشید
من داشتم یک مروری به مطالب گذشته میکردم دیدم چند تا مطلب دیگه از قلم افتاده و او اینکه UDH برای DefualtAlphabet که همون مد 7 بیته
یعنی اگه قرار باشه یک پیام چند پارتی در مد 7 بیت ارسال کنیم قضیه چی میشه
همونطور که در پستهای قبل فهمیدیم ما باید در UDH (User Data Header) مشخص کنیم در حال ارسال یک پیام بلند چند پارتی هستیم
اگه یادتون باشه در اونجا یک عدد ثابت 060804 را وارد می کردیم این در واقع همون هدر دیتای ما میشه
06 در اونجا مشخص میکرد UDH ما طولش 6 بایته
08 نشاندهنده این بود که ما در مد 16 بیتی اطلاعات را کد کردیم
04 مشخص میکنه که چهاربایت دیگه دنباله داره
حال در مورد پیامهای بلند در 7 بیت قضیه به این صورت تغییر میکنه
به جای 060804 از 050003 استفاده میکنیم بدین معنی که
05 نشون میده طول هدر ما 5 بایته
00 اطلاعات بصورت 7 بیت کد شدند DefualtAlphabet
03 مشخص میکنه سه بایت دیگه دنباله داره
تا اینجا یک چیز مشخص شد و او اینه که طول هدر در 7 بیت یکی کمتر از 16 بیته
تا اینجا ما در هر دو حالت 3 بایت را داشتیم در 16 بیت 04 08 06 و در 7 بیت 03 00 05
در 16 بیت ما دو بایت را برای رفرنس پیام در نظر میگرفتیم که بصورت اتفاقی انتخاب میشد و برای تمام قسمتها یکسان بود ولی در 7 بیت ما از یک بایت استفاده میکنیم یعنی ما یک رفرنس یک بایتی داریم و این همون یک بایت اختلاف هدر هاست و بقیه قضایا مثل قبل تکرار میشه یعنی
05003 هدر
0500031D0301
1D رفرنس پیام که بصورت تصادفی ایجاد مشه
03 تعداد پارتها که قراره ارسال بشه
01 شماره اندکس پیام
اگه جایی را از قلم انداختم خواهش میکنم دوستان محبت کنند کاملش کنن
موفق و موید باشید
سلام .
آقای noorsoft کاش یه توضیح جامع و فارسی (:گریه:) در مورد GSM میدادی !
راستی بهتر نیست کم کم بریم سراغ کار با پورت ها در VB و ارسال sms از طریق USB و گوشی ؟!!
هنوز این مسئله واسه من گنگه که حالا که sms رو Code کردیم و آماده ارسال شده ؛ چه طوری اونو بفرستیم ؟! :متفکر:
اگه آموزش پورت ها رو هم شروع کنید خیلی خوب میشه .
مرسی از همگی ! :بوس:
موافقم .
پس قبل از ایجاد کردن تاپیک جدید ، بهتره sms هایی که در اونها Command وجود داره رو مورد بررسی قرار بدیم . مثل همون اس ام اسی که خیلی وقت پیشا ، مد شده بود و وقتی به آخر سند میرسیدی ویبره گوشی فعال میشد . و یا sms هایی که از طرف Irancell دریافت میشه و با باز کردن اون مثلاً GPRS فعال میشه !
اونها در واقع اس ام اس های 8 بیتی باینری هستند سعی میکنم در حد توان براتون مطلب های مفید بزارم
یک رفرنس از شرکت HP پیدا کردم ولی مشکلی که هست اینه که این گونه دستورات فقط روی گوشی موبایل کار میکنه و دیگه اینکه همه گوشی ها هم اون را ساپورت نمی کنن در حال پیدا کردن رفرنسهای بهتر هستم . منتظر باشید
لیست گوشی هایی که این گونه فرمانها را قبول میکنن
LG: KT610
Nokia: 3250, E50, E51, E60, E61, E61i, E62, E65, E70, E90 Communicator
N71, N73, N75, N76, N77, N78, N80, N81, N81 8GB, N82, N90, N91, N92
N93, N93i, N95, N95 8GB, N96
Samsung: SGH-G810
برای اینکه بتونین یک پیام بفرستید که روی صفحه نمایش چشمک بزنه باید این کار را انجام بدین
اولا فقط در مد 16 بیت این کار انجام میشه و به این صورت که 0001 را قبل از قسمتی که میخواین چشمک زن بشه وارد کنید
:لبخند:
تو مثال زیر طریقه ارسال Vcart یا همون شماره تلفن را آموزش میدم
یک Vcart شامل این چیزهاست
که میشه
BEGIN:VCARD
VERSION:2.1
N:FARSHAD;NOORANIAN
TEL;PREF:09354372775
END:VCARD
** مشخص کننده Sms Submit و شماره فرستنده و گیرنده و ... مثل همون پیامهای قبلی
**06050423F40000424547494E3A56434152440D0A
56455253494F4E3A322E310D0A4E3A464152534841
443B4E4F4F52414E49414E0D0A54454C3B50524546
3A30393335343337323737350D0A454E443A564341
52440D0A
060504 یوزر دیتا (همیشه ثابته)
23F4 مشخص کننده پورت مقصد
0000 مشخص کننده پورت اصلی
BEGIN:VCARD<CR><LF> 424547494E3A56434152440D0A
VERSION:2.1<CR><LF> 56455253494F4E3A322E310D0A
N:FARSHAD;NOORANIAN 4E3A464152534841443B4E4F4F52414E49414E
TEL;PREF:09354372775 54454C3B505245463A3039333534333732373735
END:VCARD 454E443A56434152440D0A
همونطور که مشاهده میکنین این پیام بصورت 8 بیت کد میشه و خیلی راحته
موفق باشید
آموزش پورت ها در VB (در تاپیک جدید) رو هم اگه امکان داره زودتر شروع کنید .
Thanks
سلام
ديدم نوشته بودي «كاربراني كه از دستورات AT استفاده مي كنند....»، مگه غير از اين هم راهي هست براي كار با موبايل؟ ميشه راهنمايي ام كنيد؟
من يه برنامه نوشته ام كه مي تونم مسيج هاي يك پارتي را بفرستم يا ذخيره كنم. ولي وقتي اولين قسمت يك مسيج دو پارتي را ميخوام بفرستم Error ميده. هيچ كدي هم نمي ده.
با At هم كار كردم.
ممنون
آيا در حالت Text (غير از PDU) ميشه مسيج هاي فارسي و يا طولاني(چند پارتي) فرستاد؟
سلام noorsoft و raravaice جان ...
اس ام اس هاي چند پارتي دريافت شده يكمي برام مبهم هست ... من يك اس ام اس 6 پارتي از دوستم دريافت كردم ... و بعد به يك نكته ي عجيب برخورد كردم ... همه ي پارتها با هم در يك خانه از حافظه نبود مثلا با دستور AT+CMGF=37 فقط ميشه قسمت اولش رو خودند و براي خودن بقيه ي قسمتهاش بايد تا 6 واحد به 37 اظافه كنيم ... تا بتونيم همه ي پارتاش رو بدست بياريم و نوشته هاش رو به هم بچسبوني ....
من در اين حالت گيج شدم ... !! خوب ما از كجا بدونيم كه اين اس ام اسي رو كه با AT+CMGF=37 خونديم 6 پارتي هست و ما بايد 6 پارت بعدش رو هم بخونيم ... !! ؟ من هر شش پارت رو از حافظه استخراج كردم و ميزارم اينجا تا روشون يكم توضيح بدين ....
در ضمن يك چيز ديگه هم هست .... ايا فرماني وجود داره كه تعداد پيامهاي موجود در حافظه رو برگردونه ؟؟؟
در ضمن ( داخل اين پارتهايي كه ميزارم خودم شماره ي فرستنده رو يه چيز الكي جايگزين اصلي كردم خلاصه بعضي از افراد يكمي شيطون هستن ديگه !!! البته بلانصبت شما ها )
0791893905004102600C918953951213560008804021216163 818C0500039F06010020002000200020002000200632064A00 200630064A0020064606270645064700200020002000200020 00200020062706440647064A00210628064700200645063106 2F062706460020062F0631062E06270646064700200627062A 002E0020002006280647002006220646002006320646002006 300644064A064406270646002006410631
0791893905004102600C918953951213560008804021216104 818C0500039F0602063206270646064700200627062A002000 2E00200628064700200622064606270646064306470020062F 063100200628068606470020062F06270631064A0020062A06 430646062F002E0020064A0644062706460020063906480636 002006430631062F06460020067E0648063406430646062F00 2E00200020062806470020062206460627
0791893905004102600C918953951213560008804021216144 818C0500039F06030646064306470020062806270630064806 42002006480634064806420020062A064506270645002E0628 0647002006450627062F0631063206460020062E0648062F00 20062806AF0648064A0646062F003A06450627064506270646 002E0628064700200020002000200622064606270646064306 4700200020062F06270645064600200631
0791893905004102600C918953951213560008804021216184 818C0500039F06040641064800200645064A06430646064606 2F002E0020063206280639062F0020063106410648064A0634 00200627062A06480645064A064306460646062F002E002006 28064700200622064600200642063106450647002006330628 0632064A0020067E06320627064600200642062F0631002000 2E06280647002006220646002006450627
0791893905004102600C918953951213560008804021216115 818C0500039F0605062F063106270646002006280647002006 38062706470631067E062F0631002E0020062706440647064A 00200021062806470020062206470020062F06440020063206 46002006300644064A0644002E002000200628064700200622 06460020062706340643002006860634064506270646002006 390628062F0644002006330628064A0644
0791893905004102640C918953951213560008804021216155 81780500039F06060021064306470020064506270020063106 270020062806310627064A0646002006390647062F00200643 0646002006270633062A064806270631002100200627063206 27064A0646002006320646002006300644064A0644064A0020 0645064306460020062806310643064606270631002E
1.چرا از CMGR یا CMGL استفاده نکردی! CMGR برای خواندن پیام توسط شماره اون توی حافظه سیم کارت و CMGL=4 برای خواندن تمام پیام ها در مد PDU استفاده میشه و CMGL=ALL در مد TEXT .نقل قول:
من در اين حالت گيج شدم ... !! خوب ما از كجا بدونيم كه اين اس ام اسي رو كه با AT+CMGF=37 خونديم 6 پارتي هست و ما بايد 6 پارت بعدش رو هم بخونيم ... !! ؟
2.ببین هر خانه حافظه برای نگه داری حافظه حدود 150 بایت فضای خالی داره ("حدود گفتم چون عدد دقیقش یادم نیست") پس هر پیام میتونه در 1 خونه بشینه و اون کدی که در موقع ارسال فرستادی در اصل تفکیک کننده پارتها است و این درحالیه که هر پیامی که توی حافظه قرار میگیره یه Message Refrence از BTS میگیره که اون شماره رو میتونی توی این کد پیدا کنی و تشخیص بدی کدوم پیام ادامه کدومه.
بحث مفصل خواندن و Decode پیام چند قسمتی رو تا پایان هفته بازش میکنم.
موفق باشید
ببخشيد اشتباه چاپي بود ... من از AT+CMGR=37 استفاده كرده بودم ...
فقط الان تنها مشكم اينه كه چه جوري بايد بفهمم يك پيام ادامه ي پيام ديگه هست ... مثل اون نمونه اي كه بالا گذاشتم ....
و يك چيز ديگه هم اين كه نميدونم با چه كدي بايد تعداد كل اس ام اسهاي موجود در حافظه رو بخونم ... ؟
خیلی عجله نکن بزار سره فرصت مسئله رو برات بازش میکنم ولی به قسمتهای رنگی زیر دقت کن.
0791893905004102600C918953951213560008804021216163 818C0500039F06010020002000200020002000200632064A00200630064A002006 46062706450647002000200020002000200020002006270644 0647064A002106280647002006450631062F06270646002006 2F0631062E06270646064700200627062A002E002000200628 0647002006220646002006320646002006300644064A064406 270646002006410631
0791893905004102600C918953951213560008804021216104 818C0500039F0602063206270646064700200627062A0020002E002006280647002 00622064606270646064306470020062F06310020062806860 6470020062F06270631064A0020062A06430646062F002E002 0064A0644062706460020063906480636002006430631062F0 6460020067E0648063406430646062F002E002000200628064 70020062206460627
0791893905004102600C918953951213560008804021216144 818C0500039F060306460643064700200628062706300648064200200648063406 4806420020062A064506270645002E06280647002006450627 062F0631063206460020062E0648062F0020062806AF064806 4A0646062F003A06450627064506270646002E062806470020 00200020002006220646062706460643064700200020062F06 270645064600200631
0791893905004102600C918953951213560008804021216184 818C0500039F06040641064800200645064A064306460646062F002E0020063206 280639062F0020063106410648064A063400200627062A0648 0645064A064306460646062F002E0020062806470020062206 46002006420631064506470020063306280632064A0020067E 06320627064600200642062F06310020002E06280647002006 220646002006450627
0791893905004102600C918953951213560008804021216115 818C0500039F0605062F0631062706460020062806470020063806270647063106 7E062F0631002E0020062706440647064A0020002106280647 0020062206470020062F064400200632064600200630064406 4A0644002E0020002006280647002006220646002006270634 0643002006860634064506270646002006390628062F064400 2006330628064A0644
0791893905004102640C918953951213560008804021216155 81780500039F060600210643064700200645062700200631062700200628063106 27064A0646002006390647062F002006430646002006270633 062A06480627063100210020062706320627064A0646002006 320646002006300644064A0644064A00200645064306460020 062806310643064606270631002E
این کد نشان دهنده تعداد کل پارتها و شماره ترتیب پیام هست که اگر در هر پیامی وجود داشته باشه یعنی چندتا پارت داره.
البته همونطور که گفتم یک یا 2 بایت هم این ما بین متصل کننده این پیامهاست که الان دقیقا نمیدونم کدوم هست.
موفق باشید
مهران جا این را یک نگاهی بکن
https://barnamenevis.org/showpo...3&postcount=83
شما در UDH مخفف یوزر دیتا هدر متوجه این موضوع میشین
با تشکر از دوستان عزیز که این موضوع را به طور کامل مطرح کردند و کامل توضیح دادند من بار اول است که با این موضوع کار می کنم و با خواندن مطالب دوست عزیزمان raravaice ارسال SMS را به صورت چند پارت فارسی را با زبان دلفی انجام دادم و الان در مرحله دریافت SMS به مشکل بر خوردم البته دلیل مشکل هم به ضعف برنامه نویسی بر می گردد و نتونستم حلش کنم اگه ممکنه کمکم کنید موقع Decode کردن نمی تونم با دلفی کد مثلاً 0641 Hex را به کاراکتر آن که حرف "ف" هست برگردونم . اگه ممکنه کمکم کنید ممنون از لطف شما. و توضیحات ارائه شده کامل که در هیچ سایتی نتونسته بودم پیدا کنم .