Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемка с com-портом... хоть и банально, но тем не менее... 
:(
    Опции темы
serge_mok
Дата 6.12.2006, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



вобщем написал диалоговое приложенье на VC++6, для работы с com-портом, заработало и проблем никаких. Теперь делаю  диалоговое приложенье с вкладками, а не работает.
Суть:
раньше инициализировал порт в конструкторе класса "диалоговое окно":CDialog, потом по таймеру отправлял посылку  в порт, и всё было нормально. Теперь пытаюсь сделать то же, только в конструкторе CPropertySheet, также пробовал в конструкторе страницы CPropertyPage, и ещё по всякому...ни в какую: таймер работает каждую секунду, проверял. порт открывается(параллельно запущенное аналогичное , но работоспособное приложение этот же порт открыть не может), а вот по ф.WriteFile(..) ничего не отправляется...
Мож кто подскажет, в каком месте правильно будет иниц.порт или ссылку толковую.
спасибо
PM MAIL   Вверх
witex
Дата 6.12.2006, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Покажь исходик что ли?
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. 
PM MAIL   Вверх
serge_mok
Дата 7.12.2006, 05:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



#include "stdafx.h"
#include "SheetApp.h"
#include "SheetAppDlg.h"
#include "Sheet.h"

/////////////////////////////////////////////////////////////////////////////
// CSheetAppApp

BEGIN_MESSAGE_MAP(CSheetAppApp, CWinApp)
    //{{AFX_MSG_MAP(CSheetAppApp)
        // NOTE - the ClassWizard will add and remove mapping macros here.
        //    DO NOT EDIT what you see in these blocks of generated code!
    //}}AFX_MSG
    //ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSheetAppApp construction

CSheetAppApp::CSheetAppApp()
{
    // TODO: add construction code here,
    // Place all significant initialization in InitInstance
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CSheetAppApp object

CSheetAppApp theApp;

/////////////////////////////////////////////////////////////////////////////
// CSheetAppApp initialization

BOOL CSheetAppApp::InitInstance()
{
    AfxEnableControlContainer();

    // Standard initialization
    // If you are not using these features and wish to reduce the size
    //  of your final executable, you should remove from the following
    //  the specific initialization routines you do not need.

#ifdef _AFXDLL
    Enable3dControls();            // Call this when using MFC in a shared DLL
#else
    Enable3dControlsStatic();    // Call this when linking to MFC statically
#endif
    
    CSheet dlg("Диалоговое окно с вкладками");

    m_pMainWnd = &dlg;
    int nResponse = dlg.DoModal();

    if (nResponse == IDOK)
    {
        // TODO: Place code here to handle when the dialog is
        //  dismissed with OK
    }
    else if (nResponse == IDCANCEL)
    {
        // TODO: Place code here to handle when the dialog is
        //  dismissed with Cancel
    }

    // Since the dialog has been closed, return FALSE so that we exit the
    //  application, rather than start the application's message pump.
    return FALSE;
}

Sheet.cpp

#include "stdafx.h"
#include "SheetApp.h"
#include "Sheet.h"
#include <string.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSheet

IMPLEMENT_DYNAMIC(CSheet, CPropertySheet)

CSheet::CSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
    :CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
{
    AddPage(&m_page1);
    AddPage(&m_page2);
    AddPage(&m_page3);

    buf        = new char[65];
    buf_in    = new char[70];
    bufGraf    = new char[70];
    strcpy( buf, "D HELLO #1A11F#");
    bufStatus="Останов";
        
    dcb=(DCB*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(DCB));
    dcb->DCBlength=sizeof(DCB);
    BuildCommDCB("baud=2400 parity=N data=8 stop=1",dcb);
    dcb->fNull=false;
    dcb->fAbortOnError=true;
    dcb->fRtsControl=RTS_CONTROL_TOGGLE;
    dcb->fOutxDsrFlow=true;
    
    ct.ReadIntervalTimeout=10;
    ct.ReadTotalTimeoutMultiplier=ct.ReadTotalTimeoutConstant=100;
    ct.WriteTotalTimeoutMultiplier=ct.WriteTotalTimeoutConstant=200;
        
    port=CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,
                    FILE_FLAG_OVERLAPPED,NULL);
    if(port==INVALID_HANDLE_VALUE) {
                       //MessageBox("Не возможно открыть последовательный порт","Error",MB_OK);
                       ExitProcess(1);
    }    
    
    SetCommState(port,dcb);
    SetCommTimeouts(port,&ct);
//    memset(&ovr,0,sizeof(ovr));
//    ovr.hEvent=CreateEvent(NULL,FALSE,FALSE,NULL);
    
    HeapFree(GetProcessHeap(),0,dcb);
    PurgeComm(port,PURGE_TXCLEAR|PURGE_RXCLEAR);
    SetupComm(port,32,70);
            
}

CSheet::~CSheet()
{
    delete [] buf;
    delete [] buf_in;
    delete [] bufStatus;
    delete [] bufGraf;

    PurgeComm(port,PURGE_TXCLEAR|PURGE_RXCLEAR);
    CloseHandle(port);
}


BEGIN_MESSAGE_MAP(CSheet, CPropertySheet)
    //{{AFX_MSG_MAP(CSheet)
    ON_WM_TIMER()
    ON_WM_DESTROY()
    ON_WM_PAINT()
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSheet message handlers

BOOL CSheet::OnInitDialog() 
{
    BOOL bResult = CPropertySheet::OnInitDialog();
    
    // TODO: Add your specialized code here
    if( !SetTimer(1,2000,NULL) ) {
        MessageBox("Не удалось создать таймер","Error",MB_OK);
        ExitProcess(1);
    }
    m_page1.UpDatePage();

    return bResult;
}

void CSheet::OnTimer(UINT nIDEvent) 
{
    // TODO: Add your message handler code here and/or call default
    
    m_page1.UpDatePage();

    WriteFile(port,buf,strlen(buf),&bc,&ovr);

    CPropertySheet::OnTimer(nIDEvent);
}

void CSheet::OnDestroy() 
{
    CPropertySheet::OnDestroy();
    
    // TODO: Add your message handler code here
    KillTimer(1);
}

m_page1...m_page3 вкладки в CSheet

PM MAIL   Вверх
serge_mok
Дата 12.12.2006, 06:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всё, снята тема...надо было просто глаза разуть smile...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




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


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

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