![]() |
|
|
![]()
|
|
| KKNull |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 30.1.2006 Репутация: нет Всего: нет |
Здравтвуйте уважаемые программисты.
Можно попросить у вас помощи. Мне дано задание которое заключается в следующем: "Необходимо соединить два модема телефонных кабелем и написать программу-терминал для работы с аналоговым модемом (взаимодействие с модемом реализовать, напрямую, через COM порт). В программе реализовать передачу файла с одного компьютера на другой (в Windows), для контрольной суммы кадра использовать CRC 32, так же должно быть реализована функция чата. В программе предусмотреть возможность выбора COM порта. Модемы считать Hayes-совместимые. Пример программы реализующие данные функци – HyperTerminal" То есть по сути реализовать свой HyperTerminal. Эту программу необходимо реализовать в Visual Studio 6.0.(VC++6.0) Даже не знаю с чего начать. Опыта работы с VC++ у меня нет. Я просмотрел некоторые примеры работы с com портом- Если есть готовые программы с исходниками, прошу дать сцылку. |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 4 Всего: 44 |
поищи книгу
Фролов А., Фролов Г. Программирование модемов (Библиотека системного программиста. Том 4) |
|||
|
||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
chaosKKNull Вдруг найдете ссылку, поделитесь адресочком?
-------------------- я не гольфист - я хоккеист |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
А что конкретно по настройкам не понятно? Может быть, я чем-то смогу помочь? Кое-какой опыт работы с портами есть. -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 4 Всего: 44 |
вот госопда пользуйтесь!!!
Библиотека системного программиста Добавлено @ 13:58 да кстати KKNull глянь еще 16 том |
|||
|
||||
| KKNull |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 30.1.2006 Репутация: нет Всего: нет |
Эти книги я уже смотрел.
только функция открытия порта OpenComm в VC++ неработает компилятор говорит что эта ф-ция не определена. может какую библиотеку подключить нада? P.S. to Dreamer_0x01 опыта работы с портами у меня, к сожалению,нет Это сообщение отредактировал(а) KKNull - 30.1.2006, 16:36 |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Что тебе нужно? Открыть порт, настроить скорость и послать туда что-то, а потом дождаться получения?
-------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| KKNull |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 30.1.2006 Репутация: нет Всего: нет |
Я тут набросал такой код, который посылает команды модему и принимает их:
#include "stdafx.h" #include "afxwin.h" #include "windows.h" #include "stdio.h" #include "string.h" #include "conio.h" void main() { HANDLE hCOM = CreateFile( "COM2", GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); DCB dcb;//Инициализация порта GetCommState(hCOM, &dcb);//Получаем настройки порта //Меняем часть настроек на свои dcb.BaudRate = 2400; //Скорости в бодах dcb.ByteSize = 8; //Байты информации dcb.Parity = NOPARITY; //Четность dcb.StopBits = ONESTOPBIT; //Кол-во стоп. битов SetCommState(hCOM, &dcb); //Устанавливаем новые настройки COMMTIMEOUTS CommTimeouts; GetCommTimeouts(hCOM,&CommTimeouts); CommTimeouts.ReadIntervalTimeout = 50; CommTimeouts.ReadTotalTimeoutMultiplier = 1; CommTimeouts.ReadTotalTimeoutConstant = 50; CommTimeouts.WriteTotalTimeoutMultiplier = 1; CommTimeouts.WriteTotalTimeoutConstant = 50; SetCommTimeouts(hCOM,&CommTimeouts); FlushFileBuffers(hCOM); //Очистка буфера if( hCOM!=INVALID_HANDLE_VALUE ) { printf( "Ok Open COM1\n" ); // char buffer[25]; // memset( buffer, 0, sizeof( buffer ) ); // strcpy( buffer, "ATE1" ); char rec[400]; char answer[512]; DWORD iBytesRead; OVERLAPPED ov; char buff[10]; while(1) { printf("To exit press - 1\n"); scanf("%s", &buff); if( buff[0] == (int)'1') break; int g = strlen(buff); buff[g++] = (char)13; buff[g] = '\0'; WriteFile( hCOM, (LPVOID)buff, strlen(buff)+1, &iBytesRead, NULL ); Sleep(100); ReadFile( hCOM, (LPVOID) rec, 512, &iBytesRead, NULL ); for( int i=0; i<(int)iBytesRead; i++) // Веделение ответа модема { if( (int)rec[i+1]==10 ) { int k = i; for( int j=0; j<((int)iBytesRead-k-2); j++ ) { answer[j] = rec[i+2]; i++; } answer[j] = '\0'; } // if( (int)rec[i+1]==10 ) } // for( int i=0; i<(int)iBytesRead; i++) printf(answer); } // wlile CloseHandle(hCOM); } // if( hCOM!=INVALID_HANDLE_VALUE ) else printf( "Error Open\n" ); } Меня интересует, что делать дальше? Как организовать передачу данных,(файл с CRC32) между компьютерами. |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Я не помню команды модемов,нужно смотреть, как с помощбю них передаются данные друг для друга, но это все должно быть в справочнике по командам модема. А дальше просто - открываешь файл, из него вытаскиваешь порцию символов, вызываешь нужную тебе команду мдема, которая эту последовательность символов отошлет...Ну и то же самое при приеме - опрашиваешь модем командой, выясняющей, есть лиданные для приема, если есть, генерируешь команду приема, выкачиваешь эти символы и сохраняешь в файл.
-------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |