PDA

View Full Version : برنامه نویسی برای مودم



tah_206207
پنج شنبه 09 اردیبهشت 1389, 01:58 صبح
سلام دوستان من دانشجوی ترم ۴ نرم افزار هستم چند روز پیش از مخابرات بهم زنگ زدن و ازم خواستن با زبان c++ واسه مودم برنامه بنویسم منم چون اطلاعاتی در اینن زمینه نداشتم گفتم بلد نیستم حالا می خوام در این مورد هم اطلاعاتی رو بدست بیارم لطفا کمکم کنید من چطوری میتونم با c++ واسه مودم برنامه بنویسم آیا اسمبلی هم مورد نیاز هست؟ لطفا کامل توضیح بدین
با تشکر

tdkhakpur
پنج شنبه 09 اردیبهشت 1389, 21:24 عصر
من چطوری میتونم با C++‎ واسه مودم برنامه بنویسم آیا اسمبلی هم مورد نیاز هست؟
سی به اندازه کافی از نظر ارسال و دریافت داده به باسها و یا درگاهها قدرت دارد و میتوانید اسمبلی را در این مورد کنار بگزارید.
ولی در مورد اینکه می خواهید با مودم کار کنید میتوانید از کامپیوننتهای آماده ای مانند cport برای ارتباط با پورتها که نقطه ارتباط با مودم نیز هست کار کنید و یا اینکه خودتان برنامه ارتباط با پورت را بنوسید.
کد زیر میتوانید ارتباط سطح پایین را برای مودم به شما نشان دهد (البته سورس را مطالعه کنید.)


#include <bios.h>
#include <string.h>
#include <conio.h>
#include <stdio.h>
#define COM1 0
#define COM2 1
#define DATA_READY 0x100
#define TRUE 1
#define FALSE 0
#define SETTINGS ( 0x80 | 0x02 | 0x00 | 0x00)
char Error[5][10] = { " ",
"NO CARRIER",
"ERROR",
"OK",
" "
};
char Answer[5][30] = {
" ",
"na nist !!! ",
"ey bisavad!? in chie?",
"kheili khobe. khosham umad",
"kheili khobe. khosham umad"
};
int Stat[4] = { 0x10, 0x20, 0x40, 0x80 };
char StatTxt[4][5] = { "RTS ", "MIO ", "RNG ", "RDR " };
int COM = COM2, x,y;
int i, k, Err, l, found = 0, SndPntr = 0,GetPntr = 0, Pnt = 0;
char *str, in, out, GetBuf[2000], SndBuf[2000];
int status, oldst, DONE = FALSE;
void ShowStatus ( void )
{
x = wherex();
y = wherey();
gotoxy ( 1,1 );
printf ( " ");
gotoxy ( 1,1 );
for ( i = 0; i <= 3 ; i ++ )
if ( status & Stat[i] )
printf ( StatTxt[i] );
gotoxy ( x, y);
}
int IsIn ( char * St1, char *St2, char Len)
{
int i,j;
char Err = 0;
for ( i = 0; i < Len && St2[i] != St1[0]; i ++ );
for ( j = i; j < Len && St2[j] != 0; j ++ )
Err += St1[j] = St2[j + i];
return Err;
}

void test ( void )
{
x = wherex();
y = wherey();
Err = 0;
for ( l = 1; l < 4 && Err == 0; l ++ )
if ( IsIn ( Error[l], str, 20 ))
Err = l;
gotoxy ( 50, 1 );
printf ( "%s", Answer[Err] );
str = NULL;
Pnt = 0;
gotoxy ( x, y );
}
void Send ( void )
{
for ( i = 0; i < SndPntr; i ++ )
bioscom ( 1, SndBuf[i], COM );
SndPntr = 0;
}
void main(void)
{
textcolor ( YELLOW );
textbackground ( BLUE );
clrscr ();
gotoxy ( 1, 2);
bioscom ( 0, SETTINGS, COM );
bioscom ( 2, 0, COM );
memset ( SndBuf, 0, 2000 );
// memcpy ( SndBuf, "ATDP22", 6 );
// SndBuf [6] = 13;
// SndPntr = 7;
while (!DONE)
{
status = bioscom( 3, 0, COM );
if ( status != oldst )
{
ShowStatus();
oldst = status;
}
if (status & DATA_READY)
if ( ( out = (char)bioscom ( 2, 0, COM ) & 0x7F ) != 0)
{
putch(out);
if ( out != in )
{
str[Pnt++] = (char)out;
GetBuf[GetPntr ++] = (char)out;
str[Pnt+1] = 0;
if ( (char)out == '\n' )
test ();
}
}
if ( SndPntr > 0 )
Send ();
if ( kbhit() )
{
if ((in = getch()) == '\x1B')
DONE = TRUE;
bioscom ( 1, in, COM );
}
}
}

amir_civil
پنج شنبه 09 اردیبهشت 1389, 21:59 عصر
با سلام
لطف میکنید در مورد این اعداد توضیح دهید




#define SETTINGS ( 0x80 | 0x02 | 0x00 | 0x00)

tah_206207
پنج شنبه 09 اردیبهشت 1389, 22:23 عصر
سلام دوست عزیز ممنون از جواب خوبتون من از کجا میتونم مقالات کاملی در این مورد پیدا کنم؟ آیا میشه واسه مودم درایور هم نوشت البته من منظور مخابرات رو دقیق نفهمیدم که می خوان واسه چیه مودم برنامه بنویسن اگه شما راهنماییم کنید ممنون میشم

tah_206207
پنج شنبه 09 اردیبهشت 1389, 22:33 عصر
من از این کامپوننت cport در لینوکس چطوری استفاده کنم با کدوم ide ازش استفاده کنم البته اونا ازم خواستن که برنامه واسه مودم در ویندوز بنویسم ولی چون رو سیستم خودم لینوکس هست اینو پرسیدم با تشکر

tdkhakpur
جمعه 10 اردیبهشت 1389, 00:35 صبح
لطف میکنید در مورد این اعداد توضیح دهید
خب این اعداد برای آغازش مودم یا به نوعی ریست مودم به کار برده میشود.

من از کجا میتونم مقالات کاملی در این مورد پیدا کنم؟ آیا میشه واسه مودم درایور هم نوشت البته من منظور مخابرات رو دقیق نفهمیدم که می خوان واسه چیه مودم برنامه بنویسن
بهتره به زبان فارسی داخل google سرچ کنید اگر پیدا نکردید با انگلیسی و اگر پیدا نشد میتوانید کتاب به اسم "مودم Modem" مربوط به حسن زکی پور را تهیه کنید.
ولی احتمالا داخل بازار کتابهای داغتری هم در این مورد وجود داشته باشد.


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