Поиск:

Ответ в темуСоздание новой темы Создание опроса
> соединение компов через модемы, чат и передача файлов с к. суммой(CRC32) 
:(
    Опции темы
KKNull
Дата 30.1.2006, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 30.1.2006

Репутация: нет
Всего: нет



Здравтвуйте уважаемые программисты.
Можно попросить у вас помощи. smile
Мне дано задание которое заключается в следующем:

"Необходимо соединить два модема телефонных кабелем и написать программу-терминал для работы с аналоговым модемом (взаимодействие с модемом реализовать, напрямую, через COM порт). В программе реализовать передачу файла с одного компьютера на другой (в Windows), для контрольной суммы кадра использовать CRC 32, так же должно быть реализована функция чата. В программе предусмотреть возможность выбора COM порта. Модемы считать Hayes-совместимые. Пример программы реализующие данные функци – HyperTerminal"
То есть по сути реализовать свой HyperTerminal.
Эту программу необходимо реализовать в Visual Studio 6.0.(VC++6.0)
Даже не знаю с чего начать. Опыта работы с VC++ у меня нет.
Я просмотрел некоторые примеры работы с com портом- smile ужас- столько настроек, ничего не понять.
Если есть готовые программы с исходниками, прошу дать сцылку. smile б а также любые примеры работы с модемами(Windows VC++) будут очень полезны.
PM MAIL   Вверх
chaos
Дата 30.1.2006, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 4
Всего: 44



поищи книгу
Фролов А., Фролов Г. Программирование модемов (Библиотека системного программиста. Том 4)
PM WWW   Вверх
takedo
Дата 30.1.2006, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 1.6.2005

Репутация: нет
Всего: 3



chaosKKNull Вдруг найдете ссылку, поделитесь адресочком?


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
Dreamer_0x01
Дата 30.1.2006, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 12



Цитата(KKNull @ 30.1.2006, 07:53 Найти цитируемый пост)

Я просмотрел некоторые примеры работы с com портом-  ужас- столько настроек, ничего не понять.


А что конкретно по настройкам не понятно? Может быть, я чем-то смогу помочь?
Кое-какой опыт работы с портами есть.


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
chaos
Дата 30.1.2006, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 4
Всего: 44



вот госопда пользуйтесь!!! smile
Библиотека системного программиста
Добавлено @ 13:58
да кстати KKNull глянь еще 16 том
PM WWW   Вверх
KKNull
Дата 30.1.2006, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 30.1.2006

Репутация: нет
Всего: нет



Эти книги я уже смотрел.
только функция открытия порта OpenComm в VC++ неработает
компилятор говорит что эта ф-ция не определена.
может какую библиотеку подключить нада?
P.S.
to Dreamer_0x01 опыта работы с портами у меня, к сожалению,нет

Это сообщение отредактировал(а) KKNull - 30.1.2006, 16:36
PM MAIL   Вверх
Dreamer_0x01
Дата 30.1.2006, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 12



Что тебе нужно? Открыть порт, настроить скорость и послать туда что-то, а потом дождаться получения?


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
KKNull
Дата 31.1.2006, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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) между компьютерами.
PM MAIL   Вверх
Dreamer_0x01
Дата 31.1.2006, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 12



Я не помню команды модемов,нужно смотреть, как с помощбю них передаются данные друг для друга, но это все должно быть в справочнике по командам модема. А дальше просто - открываешь файл, из него вытаскиваешь порцию символов, вызываешь нужную тебе команду мдема, которая эту последовательность символов отошлет...Ну и то же самое при приеме - опрашиваешь модем командой, выясняющей, есть лиданные для приема, если есть, генерируешь команду приема, выкачиваешь эти символы и сохраняешь в файл.



--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.