PDA

View Full Version : سوال: تلفن زنگ میخوره شمارشو توی TEXTBOX ببینم



vahid_lived
شنبه 28 آذر 1388, 11:56 صبح
سلام به همه دوستان
من به کد یا قطعه برنامه ای احتیاج دارم که وقتی نرم افزاری که من یا #C نوشتم باز است و مودم من به خط تلفن وصل است بتونم شماره ای که به این خط زنگ زده را توی textbox یا lable ببینم تا بتونم روی اون پردازش های دلخواهمو انجام بدم یا اینکه بتونم اطلاعات اون شماره تلفن را از بانک اطلاعاتیم استخراج کنم.
ممنون میشم راهنماییم کنید

csharpprogramer88
شنبه 28 آذر 1388, 12:24 عصر
سلام دوست گرامي
من متاسفانه نمي تونم به شما كمك كنم ولي من هم توكاربا مودم مشكل دارم و فقط مي خوام شماره بگيرم يه تاپيك هم ايجاد كردم ولي دريغ از اينكه يكي پيدا بشه كه جواب بده اگر مي تونيد كد شماره گيري با مودم را در سي شارپ برام بفرستيد
با تشكر

M_Ali_Safdari
شنبه 28 آذر 1388, 13:06 عصر
من C#‎‎‎‎‎‎‎بلد نیسم ولی با VB این کار رو انجام دادم.اصول کار تفاوتی نداره.

مودم شما باید Caller ID منطبق با استاندارد ایران داشته باشه.برای این که متوجه شید این امکان رو داره یا نه از برنامه های آماده که معمولآ تو CD درایور مودم هست استفاده کنید تا مطمئن شوید که Caller Id مودم با استاندارد ایران منطبقه و کار می کنه.

بعد پورت COM مودم رو باز کنید(اینکار در VB با MSCOMM انجام می شود)
حالا باید به مودم Command ارسال کنید . این فرمان ها طبق استاندارد AT&T هستند و به همین خاطر AT Command نام دارند.لیست مهمترین ها رو در این لینک (http://michaelgellis.tripod.com/modem.html) ببینید.هر شرکتی یک سری فرمانهای اختصاصی هم داره .لیست کامل فرمانهای موتورولا را رو هم از اینجا (http://www.google.com/url?sa=t&source=web&ct=res&cd=2&ved=0CAoQFjAB&url=http%3A%2F%2Fwww.phys.unsw.edu.au%2F%7Emcba%2F iridium%2FMotorola_AT_Command_Set.pdf&rct=j&q=at%2Bcops+command&ei=3aAsS_HiA8vE4Qasr82XCQ&usg=AFQjCNEyDDmUt4oBvJym2frhGbPLxBFJpQ)بگیری .
بعد از ارسال دستور فعال کردن ، هر کس زنگ بزنه اطلاعات CID اون رو مودم از طریق پورت سریال برات می فرسته.

می تونید این فرمانها رو تو Hyper Terminal ویندوز تست کنید تا اول خوب مسلط شین بعد برنامه بنویسید.ضمن اینکه ممکنه فرمانهای مودم شما کمی تفاوت داشته باشه پس بهتره اول خوب رو فرمانها تسلط پیدا کنید.

برای دوستی هم که شماره گیری نیاز دارند فرمان :ATDT بعد جلوی اون شماره تلفن، به صورت Tone گرفته می شه اگه می خواید Pulse شماره گیری کنه از ATDP استفاده کنید.


موفق باشید

csharpprogramer88
شنبه 28 آذر 1388, 14:06 عصر
برای دوستی هم که شماره گیری نیاز دارند فرمان :ATDT بعد جلوی اون شماره تلفن، به صورت Tone گرفته می شه اگه می خواید Pulse شماره گیری کنه از ATDP استفاده کنید.

موفق باشید

سلام دوست عزيز
براي اينكه خللي در كار اين تاپيك ايجاد نشه خواهش مي كنم به پاپيك من سر بزنيد
http://barnamenevis.org/forum/showthread.php?t=195565
با تشكر

vahid_lived
یک شنبه 29 آذر 1388, 11:18 صبح
سلام .از دوستانی که راهنمایی کردند ممنون.
دوستان لطف کنند بیشتر راهنمایی کنند یا نمونه کد#c بدند خیلی ممنون میشم.تاحالا با این موضوع کار نکردم و واقعا" نیاز دارم

M_Ali_Safdari
یک شنبه 29 آذر 1388, 19:08 عصر
سلام .از دوستانی که راهنمایی کردند ممنون.
دوستان لطف کنند بیشتر راهنمایی کنند یا نمونه کدC#‎ بدند خیلی ممنون میشم.تاحالا با این موضوع کار نکردم و واقعا" نیاز دارم

لینک بالا رو ببینید. ایشان در اون تاپیک نمونه کد گذاشتند

S_VB.max
پنج شنبه 08 بهمن 1388, 11:52 صبح
مودم شما باید Caller ID منطبق با استاندارد ایران داشته باشه.برای این که متوجه شید این امکان رو داره یا نه از برنامه های آماده که معمولآ تو CD درایور مودم هست استفاده کنید تا مطمئن شوید که Caller Id مودم با استاندارد ایران منطبقه و کار می کنه.

سلام ميشه در اين مورد بيشتر توضيح بدين
من چجوري مي تونم متوجه بشم كه Caller Id مودم با استاندارد ایران منطبقه يا نه؟

mehrsa_fr
پنج شنبه 08 بهمن 1388, 16:11 عصر
ببخشید ولی منم نفهمیدم چجوری شماره تویه textbox بندازم بعد از port.write یه port.readline بزارم textbox مساوی مقدار این بزارم ممنون میشم توضیح بدید

rezatati
جمعه 09 بهمن 1388, 11:40 صبح
با سلام خدمت دوستان

ابتدا باید مودمتون را برای دادن شماره تماس گیرنده با دستور زیر فعال کنید


Port.Write("AT+VCID=1" + Convert.ToChar(13) + Convert.ToChar(10));البته به جای رشته AT+VCID=1 باید تست کنید که کدوم یک از رشته های زیر با مودم شما سازگار هستش مثلا من موقعی که اولیش رو می فرستادم مودم پیغام ERROR رو به من برمی گردوند یعنی تو لیست باکس هم ERROR می نوشت


AT#CID=1
AT+VCID=1
ATC#‎C1
AT*ID1
AT%CCID=1
ATC#‎LS=8#CID=1 بعدش هم تو یک تایمر مثل برنامه زیر از مودمتون اطلاعات رو می خونین و موقعی که زنگ می خوره شماره تلفن رو از پورت می تونین بخونین


private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
string str = Port.ReadExisting();
if (str.Length > 0)
{
listBox1.Items.Add(str);
}
timer1.Start();
}سورس برنامه رو هم آپلود میکنم که راحت باشین فقط برنامه رو اجرا کردین دکمه ها رو نزنین اگه تو لیست باکس نوشت OK پس شماره تلفن رو میتونین از مودم بگیرین وگرنه کد بالا رو تغییر بدهین تا پیغام OK رو بده بعد یک زنگ بزنین و حالشو ببرین

M_Ali_Safdari
جمعه 09 بهمن 1388, 13:46 عصر
من چجوری می تونم متوجه بشم که Caller Id مودم با استاندارد ایران منطبقه یا نه؟

استانداردهای کالر آی دی شامل انواع FSK و DTMF
متآسفانه مخابرات از یک استاندار خاص استفاده نکرده (حداقل تا چند سال پیش که من کار می کردم)
برای همین بطور قطع نمی شه گفت که یک مودم با استاندار خاص رو می شه همه جا به کار برد.من حتی به موردی بر خوردم که تو یک منطقه کار می کرد و منطقه دیگه کار نمی کرد.
ولی ظاهرآ مودم های جدید اکثر استاندارد ها رو پشتیبانی می کنند اما بهتر است اول با یک برنامه آماده و مطمئن مودم را تست کنید تا مطمئن شوید مشکلی وجود ندارد

csharpprogramer88
جمعه 09 بهمن 1388, 17:10 عصر
[QUOTE=rezatati;898689]با سلام خدمت دوستان

ابتدا باید مودمتون را برای دادن شماره تماس گیرنده با دستور زیر فعال کنید


Port.Write("AT+VCID=1" + Convert.ToChar(13) + Convert.ToChar(10));البته به جای رشته AT+VCID=1 باید تست کنید که کدوم یک از رشته های زیر با مودم شما سازگار هستش مثلا من موقعی که اولیش رو می فرستادم مودم پیغام ERROR رو به من برمی گردوند یعنی تو لیست باکس هم ERROR می نوشت


AT#CID=1
AT+VCID=1
ATC#‎‎C1
AT*ID1
AT%CCID=1
ATC#‎‎LS=8#CID=1

دوست من چيزي كه شما گفتيد را انجام دادم ولي پيغام the port is closed مي ده بايد چيكار كنم در ضمن من از كار با portها چيزي نمي دونم وفقط مي تونم با كمك دوستاني چون شما با مودم شماره گيري كنم

M_Ali_Safdari
جمعه 09 بهمن 1388, 17:48 عصر
قبل از استفاده از پورت باید اون رو باز کنید و در انتهای برنامه هم ببندید


Port.Open();

mehrsa_fr
جمعه 09 بهمن 1388, 22:26 عصر
ماله من اول OK میده موقعی که زنگ میخوره مینویسه RING جریان چیه

M_Ali_Safdari
جمعه 09 بهمن 1388, 22:36 عصر
ماله من اول OK میده موقعی که زنگ میخوره مینویسه RING جریان چیه

یکی از دلایل می تواند پشتیبانی نکردن مودم از استاندارد CID شبکه شما باشد.
ولی بهتر است برنامه مودم را اجرا کنید ( اگر در اختیار ندارید از سایت سازنده دانلود کنید ) اگر آن برنامه هم نتوانست اطلاعات CID را به شما بدهد بطور قطع می توان این نتیجه را گرفت

چون ممکن است مودم شما به دستورات بیشتری برای تنظیم شدن نیاز داشته باشد، حتمآ Manual های سازنده را مطالعه کنید

rezatati
جمعه 09 بهمن 1388, 22:51 عصر
رو مودم من که درست کار می کنه مودم من D-Link هستش که Voice رو هم ساپورت نمی کنه و یک مودم ساده هستش به قول دوستمون شاید از مخابرات منطقه هستش

mehrsa_fr
شنبه 10 بهمن 1388, 12:55 عصر
من تویه سایت سازنده رفتم اینو نوشته بود
Does my Zoltrix modem support Caller ID?
To determine if your modem supports Caller ID, try sending the following commands from the terminal mode of a communications program.
AT#CID=1
or
AT+VCID=1
Some modems may respond OK to the command even if the modem does not support Caller ID.
You must have paid for Caller ID service on the phone line to determine if the feature is working.
Then have someone call the phone number the modem is using.
As long as the phone line you are using has Caller ID service you should see something similar to the following:
RING
DATE = 0826
TIME = 1551
NMBR=5106575737
RING
If the calling modem has caller ID blocked, you will receive Date and Time info, but the Phone number will be missing.
You will see something similar to the following:
DATE = 0826
TIME = 1551
NMBR=P
RING

برای من فقط خطه اولو می خونه

M_Ali_Safdari
شنبه 10 بهمن 1388, 13:29 عصر
اگر مودم شما زولتریکس است . من با هیچ مدل آن نتوانستم اطلاعات CID را دریافت کنم ،نه اصلی ها و نه تقلبی ها
در ضمن مراکز مخابراتی ایران تاریخ و ساعت را ارسال نمی کنند یعنی من جایی ندیدم .فقط یک رشته حاوی شماره تماس گیرنده دریافت می شود و RING که نشان دهنده زنگ خوردن خط است.

rezatati
شنبه 10 بهمن 1388, 16:04 عصر
در ضمن مراکز مخابراتی ایران تاریخ و ساعت را ارسال نمی کنند یعنی من جایی ندیدم .فقط یک رشته حاوی شماره تماس گیرنده دریافت می شود و RING که نشان دهنده زنگ خوردن خط است.بابا هرچی که شد چرا به گردن مخابرات بیچاره میندازین میتونین تو تصویر زیر ملاحظه کنین که تو سیستم من چه اتفاقی افتاده بدون هیچ مشکلی هم شماره (که سانسور شده) هم تاریخ و هم ساعت رو میده البته من بچه شهرستان میانه تو استان آذربایجان شرقی هستم تو شهر ما که همه چی درست کار میکنه

M_Ali_Safdari
شنبه 10 بهمن 1388, 23:19 عصر
بابا هرچی که شد چرا به گردن مخابرات بیچاره میندازین میتونین تو تصویر زیر ملاحظه کنین که تو سیستم من چه اتفاقی افتاده بدون هیچ مشکلی هم شماره (که سانسور شده) هم تاریخ و هم ساعت رو میده البته من بچه شهرستان میانه تو استان آذربایجان شرقی هستم تو شهر ما که همه چی درست کار میکنه
بارک الله به شما صد آفرین به مودم شما و هزاران تبریک برای مخابرات منطقه شما.
دوست عزیز اولآ اینجا سعی می شه صحبت کاربردی باشه و کسی قصد توهین به ساحت مقدس مخابرات را ندارد.اگر چنین جسارتی صورت گرفته هم از شما و هم از مخابرات والا مقام عذر خواهم.

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

برای سایر دوستان : در مناطقی که ساعت و تاریخ همراه CID ارسال می شود معمولآ گوشی تلفن کالر آی دی دار شما اگر از تنظیم خودکار پشتیبانی کند ،با این ساعت و تاریخ زمان خود را تنظیم می کند.پس اگر زمان گوشی تنظیم نبود و در اولین تماس بطور خودکار تنظیم شد ؛ در منطقه شما تاریخ و ساعت ارسال می شود

rezatati
یک شنبه 11 بهمن 1388, 00:46 صبح
عزیز من نگفتم که به مخابرات توهین کردین یا نه منظورم این بود که شاید مشکل از جای دیگه ای باشه نه ازمخابرات ما که نگفتیم که شما دروغ میگین شاید اره تو منطقه شما این طوری باشه

soheil_1367
چهارشنبه 11 فروردین 1389, 14:27 عصر
با سلام خدمت دوستان

ابتدا باید مودمتون را برای دادن شماره تماس گیرنده با دستور زیر فعال کنید


Port.Write("AT+VCID=1" + Convert.ToChar(13) + Convert.ToChar(10));البته به جای رشته AT+VCID=1 باید تست کنید که کدوم یک از رشته های زیر با مودم شما سازگار هستش مثلا من موقعی که اولیش رو می فرستادم مودم پیغام ERROR رو به من برمی گردوند یعنی تو لیست باکس هم ERROR می نوشت


AT#CID=1
AT+VCID=1
ATC#‎‎‎C1
AT*ID1
AT%CCID=1
ATC#‎‎‎LS=8#CID=1 بعدش هم تو یک تایمر مثل برنامه زیر از مودمتون اطلاعات رو می خونین و موقعی که زنگ می خوره شماره تلفن رو از پورت می تونین بخونین


private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
string str = Port.ReadExisting();
if (str.Length > 0)
{
listBox1.Items.Add(str);
}
timer1.Start();
}سورس برنامه رو هم آپلود میکنم که راحت باشین فقط برنامه رو اجرا کردین دکمه ها رو نزنین اگه تو لیست باکس نوشت OK پس شماره تلفن رو میتونین از مودم بگیرین وگرنه کد بالا رو تغییر بدهین تا پیغام OK رو بده بعد یک زنگ بزنین و حالشو ببرین

سلام دوست عزیز اگه ممکنه بگید چطوری میتونم شماره رو تو یه lable نشون بدم یعنی فقط شماره بدون تاریخ و ساعت

chimeh
شنبه 09 مهر 1390, 15:18 عصر
سلام تمام موارد خودت رو وارد كن و بعد اجرا كن. شك نكن كه جواب مي گيري

public static bool SendMail(string target, string subject, string body)
{
try
{
string host = urhostname;
string username = urusername;
string password = urpassword;
string source = ursource;

SmtpClient mailClient = new SmtpClient(host);
MailMessage message = new MailMessage(source, target, subject, body);
mailClient.Credentials = new NetworkCredential(username, password);
message.ReplyTo = new MailAddress(source);
message.SubjectEncoding = Encoding.UTF8;
message.BodyEncoding = Encoding.UTF8;
message.IsBodyHtml = true;
mailClient.Send(message);
return true;
}
catch (Exception ex)
{
(new Logger()).LogException(ex);
return false;
}
}

chimeh
شنبه 09 مهر 1390, 15:20 عصر
چها آبجكت اول را مقدار دهي كن و بعد تست كن

public static bool SendMail(string target, string subject, string body)
{
try
{
string host = urhostname;
string username = urusername;
string password = urpassword;
string source = ursource;

SmtpClient mailClient = new SmtpClient(host);
MailMessage message = new MailMessage(source, target, subject, body);
mailClient.Credentials = new NetworkCredential(username, password);
message.ReplyTo = new MailAddress(source);
message.SubjectEncoding = Encoding.UTF8;
message.BodyEncoding = Encoding.UTF8;
message.IsBodyHtml = true;
mailClient.Send(message);
return true;
}
catch (Exception ex)
{
(new Logger()).LogException(ex);
return false;
}
}

noroozifar
شنبه 09 مهر 1390, 18:51 عصر
از من این پیغام میده چه باید کرد
شماره گیری هم نمیتونم بکنم ...
http://up3.iranblog.com/images/xknwla7c1ndum6tjgfeu.png