|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.05.2010, 21:50 | #11 |
Форумчанин
Регистрация: 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)
всему свое время как зиме и весне
и каждому солнцу свой неба кусок |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вывод данных в порты 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 |