androgen2003 |
Отправлено: 19.06.2004, 10:53 |
|
Не зарегистрирован
|
Товарищи, помогите подыскать литературку или пару уроков по программирванию и управлению модемами в буилдере 5.0! |
|
Георгий |
Отправлено: 19.06.2004, 14:11 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
работаем как с обычным com портом и шлём обычные AT команды
работа с компортом — на этом форуме куча примеров
AT команды — к производителям модемов или на специализарованные сайты — usrroborics.ru usrsupport.ru
а ещё можно через TAPI, но это уже не ко мне — с TAPI не знаком |
|
androgen2003 |
Отправлено: 20.06.2004, 20:09 |
|
Не зарегистрирован
|
Товарищ Георгий!
Оно то дело понятно, но я только начал этот вопрос жевать. Мне бы пару уроков да исходничков, вот было бы дивно. |
|
Георгий |
Отправлено: 23.06.2004, 20:51 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
если не возражаешь, то в выходные набросаю примеры. |
|
Георгий |
Отправлено: 28.06.2004, 12:36 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
описание всякой хрени, в том числе и AT команд лежит ftp://ftp.usrsupport.ru/sportster/techref.zip
примеры работы с голосовыми функциями ftp://ftp.usrsupport.ru/sportster/vi_progr.rar
CODE |
открытие и настройка порта:
COMMCONFIG cc;
DCB cdb;
HANDLE hCom;
DWORD size=sizeof(COMMCONFIG);
hCom=CreateFile(com.c_str(),GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
cc.dwSize=size;
cc.wVersion=1;
cc.dwProviderSubType=PST_RS232;
cc.dwProviderOffset=0;
cc.dwProviderSize=0;
if (hCom==INVALID_HANDLE_VALUE)
ShowLastError();
if (!GetCommConfig(hCom,&cc,&size))
ShowLastError();
if (!CommConfigDialog(this->Edit1->Text.c_str(),this->Handle,&cc))
ShowLastError();
if (!SetCommConfig(hCom,&cc,size))
ShowLastError();
ctmo.ReadIntervalTimeout=0;
ctmo.ReadTotalTimeoutMultiplier=0;
ctmo.ReadTotalTimeoutConstant=5000;
ctmo.WriteTotalTimeoutMultiplier=0;
ctmo.WriteTotalTimeoutConstant=2000;
<чтение и запись в модем выполняются точно так же как и в обычный файл — через WriteFile ReadFile>
CloseHandle(hCom);
самая важная функция — диагностика ошибок (содрана из хелпа)
void ShowLastError(void)
{
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
);
// Display the string.
MessageBox( NULL,(char*) lpMsgBuf, "GetLastError", MB_OK|MB_ICONINFORMATION );
// Free the buffer.
LocalFree( lpMsgBuf );
};
|
например если записать в порт текстовую строку "ATI7" заканчивающуюся кодом 13
то в ответ будет получена строка содержащая кучу всякой информации о модеме
а если "ATDP100" то позвоним в службу времени
сочетание простуды и новой РПГ — лучший способ потратить время
Отредактировано Георгий — 28/06/2004, 13:39 |
|
|