Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2010, 21:50   #11
Assemblerru
Форумчанин
 
Регистрация: 28.01.2010
Сообщений: 224
По умолчанию

есть прога но под СОМ порт полностью рабочая: и описана как класс с двумя открытыми методами посмотри может и попробуеш...
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include <windows.h>
//---------------------------------------------------------------------------
//объявим структуру для конфигурации СОМ порта
DCB dcb;
/*
ZeroMemory (&dcb, sizeof (DCB));// не знает что ето такое
//дескриптор порта
*/
HANDLE hPortDat = NULL;
//объявим структуру для асинхронной работы порта
OVERLAPPED over;
//------------------------------------------
//для выделения сигнала
DWORD dwSignal;
//переменная для чтения
char Data;
//==================================
//---------------------------------------------------------------------------
class MuClDataOutPort
{
private:
//пишим функцию инициализации порта
bool InnitPort (char* NamePort)
{
if ( NamePort == "COM1")
{
//открываем порт СОМ 1
hPortDat = CreateFile ("COM1", GENERIC_READ|GENERIC_WRITE,
0,NULL, OPEN_EXISTING,
FILE_FLAG_OVERLAPPED, NULL);
if (hPortDat == INVALID_HANDLE_VALUE)//если порт не удалось открыть
{
CloseHandle (hPortDat);
return false;//выходим из функции с ошибкой
}
//настраиваем параметры порта
dcb.BaudRate = CBR_19200;//скорость передачи
dcb.ByteSize = 8;//размер передачи
dcb.StopBits = ONESTOPBIT;//один стоповый бит
dcb.Parity = NULL;
//проверяем на правильность настройки

if ( !SetCommState ( hPortDat, &dcb)) //тоже не работает....
{
CloseHandle (hPortDat);
return false;//выходим из функции с ошибкой
}

//если все выполнилось то возвращаем положительный результат
return true;
}
else
{
//настройка ЛПТ
return false;
}
}
//----------------------------------------------------
//функция чтения одного байта данных
BYTE ReadByteCOM (char* NamePort)
{
if (InnitPort (NamePort))
{
BYTE read = 0;
DWORD dwByteRead = 0;
do
{//читаем байт из порта
if (!ReadFile (hPortDat, &read, sizeof (BYTE), &dwByteRead, NULL))
{return 0xFF;}
} while (!dwByteRead);
return read;//возвращаем данные
}
else
{
return 0xFF;
}
}
//------------------------------------------------------
//функция чтения одного байта данных
bool WriteByteCOM (char* NamePort, char bufer)
{
if (InnitPort (NamePort))
{
DWORD dwByteWrite = 0;
if (!WriteFile(hPortDat, &bufer, sizeof(char), &dwByteWrite, NULL))
{return false;}
return true;//возвращаем сведение о выполнении
}
else
{
return false;
}
}
//=================================== ==========
//функция чтения массива данных
//=================================== ==========
//=================================== ==========
//=================================== ==========
public:
//общая функция для работы с портом
void GeneralCOMRead (char* Name)
{
//проверяем сигнал в линии
if (dwSignal & EV_DSR)//данные готовы для чтения
{
//читаем байт из порта
Data = ReadByteCOM (Name);
//сохраняем байт куда-либо
}
}
//---------------------------------------------------------
void GeneralCOMWrite (char* Name, char InData)
{
//проверяем сигнал в линии
if (dwSignal & EV_CTS)//данные готовы для записи
{
//пердаем байт из вне и записываем его в порт
WriteByteCOM (Name, InData);
}
}
//---------------------------------------------------------
void CloseCOM ()
{
if (over.hEvent)
{
CloseHandle (over.hEvent);//закрываем объект событие
}
if (hPortDat)
{
CloseHandle (hPortDat);
hPortDat = NULL;
}
}
};
#pragma package(smart_init)
всему свое время как зиме и весне
и каждому солнцу свой неба кусок
Assemblerru вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод данных в порты LPT и COM Захар Компьютерное железо 6 05.04.2010 12:29
Ввод-Вывод Joker_35815 Помощь студентам 2 30.03.2010 19:22
Ввод-вывод Sparky Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 04.10.2009 13:15
Ввод-вывод в С++ StudentPolitech Помощь студентам 0 04.06.2009 20:07
Ввод и вывод Mihael-Vlz Паскаль, Turbo Pascal, PascalABC.NET 3 19.01.2009 18:00