همان طور که در پست های قبل توضیح داده شده بود با دستور ATD می توان از طریق مودم با یک شماره تماس گرفت. اکثر مودم ها در صورتی که تماس برقرار نشود (مثلا" به دلیل اشغال بودن شماره)، پیغام BUSY را می گردانند. ما می توانیم با دریافت این پیغام بدین گونه عمل شماره گیری مجدد (Redialing) را انجام دهیم:
کد زیر باید در رویداد SerialPort_DataReceived قرار گیرد
کد:If SerialPort.ReadExisting.Contain("BUSY") Then SerialPort.WriteLine("ATDL" + Chr(13))
فرمان ATDL آخرین شماره را دوباره شماره گیری می کند.
برای قطع ارتباط تلفنی یا شماره گیری کافیست فقط Chr(13) که معادل کلید Enter است را به مودم ارسال کنیم:
کد:SerialPort.WriteLine(Chr(13))
اگر به هنگام شماره گیری (Dialing) کلید Enter را ارسال کنیم، مودم پیام NO CARRIER بر می گرداند.
اگر کسی با مودم ما تماس بگیرید، مودم مقدار RING را می فرستد. در این هنگام برای پاسخ دادن باید از دستور ATA استفاده کرد. کد زیر در رویداد DataReceived سریال پورت قرار می گیرد و به محض دریافت RING، تماس را برقرار می کند:
کد:If SerialPort.ReadExisting.Contain("RING") Then SerialPort.WriteLine("ATA" + Chr(13))
توجه داشته باشید فقط مودم هایی که از دستور های سری شارپ (#) پشتیبانی می کنند می توانند Caller ID را هنگام Ringing نمایش دهند.
سوال یا اشکالی بود در خدمتم
آرمینبرای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید






پاسخ با نقل قول
Bookmarks