powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Help NEEDED! вопрос знатокам MSVC .
6 сообщений из 6, страница 1 из 1
Help NEEDED! вопрос знатокам MSVC .
    #33272335
Anton M.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, пожалуйста как мне передать данные в данной ситуации?
Пол дня бьюсь и как о стену.....

Есть класс, объявленный в header, пусть будет 1.h:

class CComTestDlg : public CDialog
{
// Construction
public:
CComTestDlg(CWnd* pParent = NULL); // standard constructor


// Dialog Data
//{{AFX_DATA(CComTestDlg)
enum { IDD = IDD_COMTEST_DIALOG };
// CButton m_OK;
CEdit m_TransmitText; //transmit data
CEdit m_ReceiveText;
CButton m_Connect; //connect to port
CButton m_Listen; //recieve data
CSpinButtonCtrl m_ComSpin;
CEdit m_Com;

CEdit m_Prn;
CEdit m_Snr;
CEdit m_utc_time;
CEdit m_lattitude;
CEdit m_longitude;

//}}AFX_DATA


// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CComTestDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:
// Generated message map functions
//{{AFX_CComTestDlg
virtual BOOL OnInitDialog();
virtual void OnCancel();
virtual void OnOK();
afx_msg void OnConnect();
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnListen();
afx_msg void OnRefresh();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};


Есть 1.срр:


// здесь связываем ID полей ввода на форме с переменными

void CComTestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CComTestDlg)
// DDX_Control(pDX, IDOK, m_OK);
DDX_Control(pDX, IDC_TRANSMITTEXT, m_TransmitText);
DDX_Control(pDX, IDC_RECEIVETEXT, m_ReceiveText);
DDX_Control(pDX, IDC_CONNECT, m_Connect);
DDX_Control(pDX, IDC_COM_SPIN, m_ComSpin);
DDX_Control(pDX, IDC_COM, m_Com);

DDX_Control(pDX, IDC_PARCED_PRN, m_Prn);
DDX_Control(pDX, IDC_PARCED_SNR, m_Snr);
DDX_Control(pDX, IDC_PARCED_UTC_TIME, m_utc_time);
DDX_Control(pDX, IDC_LATTITUDE, m_lattitude);
DDX_Control(pDX, IDC_LONGITUDE, m_longitude);
// DDX_Control(pDX, IDC_LISTEN, m_Listen);
//}}AFX_DATA_MAP
}

// Есть метод
// Вот он то мне и нужен!!!


void CComTestDlg::OnOK()
{
if (IsCOMStarted ())
{
CString s;

m_TransmitText.GetWindowText (s);
s += "\r\n";
Transmit ((LPBYTE) (LPCTSTR) s, s.GetLength (),m_hWnd);
m_ReceiveText.SetWindowText (s);

}
int i;
CString convert;

for(i=0;i<=11; i++)
{
// Отображаем PRN и SNR, если PRN =='FF'
if (NMEA_SAT .PRN =='FF')
{

convert=(LPSTR)(NMEA_SAT.PRN);
m_Prn.SetWindowText(convert);

convert=(LPSTR)(NMEA_SAT.SNR);
m_Snr.SetWindowText(convert);

}
}

// Время

convert=(LPSTR)UTC_HOUR;
convert +=":";
convert +=(LPSTR)UTC_MINUTE;
convert +=":";
convert +=(LPSTR)UTC_SECOND;

m_utc_time.SetWindowText(convert);

// Широта
convert=(LPSTR)Lattitude_Deg;
convert +=":";
convert +=(LPSTR)Lattitude_Min;
convert +=":";
convert +=(LPSTR)Lattitude_Sec;
m_lattitude.SetWindowText(convert);

// Долгота
convert=(LPSTR)Longitude_Deg;
convert +=":";
convert +=(LPSTR)Longitude_Min;
convert +=":";
convert +=(LPSTR)Longitude_Sec;
m_longitude.SetWindowText(convert);

}

// Есть стдкол

DWORD __stdcall ThrProc (LPVOID param)
{
DWORD d;
COMSTAT stat;


while (!needCloseWindow)
{
// Try to get a lock on the transmit mutex
if (WaitForSingleObject (hTransmitMutex, 3000) == WAIT_OBJECT_0)
{
// Success. Let's see if we have something to transmit
if (dataToTransmit && (dataToTransmitSize > 0))
{
WriteFile (hComm, dataToTransmit, dataToTransmitSize, &d, NULL);
dataToTransmitSize -= d;
}

// Release the mutex
ReleaseMutex (hTransmitMutex);
}

// Receive
ClearCommError (hComm, &d, &stat);

if (stat.cbInQue > 0) {
Recv();
NMEA_GPS_RECIEVE_DATA(Recv());
//CComTestDlg::OnOK();
}

}


ВОПРОС: КАК МНЕ ВЫЗВАТЬ CComTestDlg::OnOK() в DWORD __stdcall ThrProc (LPVOID param) ????

Объясните плиз, а то как в бетонную стену ломлюсь!
Есть подозрение, что нужно передавать указатель OnOk, только как это сделать не представляю...
...
Рейтинг: 0 / 0
Help NEEDED! вопрос знатокам MSVC .
    #33272431
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton M.Подскажите, пожалуйста как мне передать данные в данной ситуации?
Пол дня бьюсь и как о стену.....

Есть класс, объявленный в header, пусть будет 1.h:

class CComTestDlg : public CDialog
{
// Construction
public:
CComTestDlg(CWnd* pParent = NULL); // standard constructor


// Dialog Data
//{{AFX_DATA(CComTestDlg)
enum { IDD = IDD_COMTEST_DIALOG };
// CButton m_OK;
CEdit m_TransmitText; //transmit data
CEdit m_ReceiveText;
CButton m_Connect; //connect to port
CButton m_Listen; //recieve data
CSpinButtonCtrl m_ComSpin;
CEdit m_Com;

CEdit m_Prn;
CEdit m_Snr;
CEdit m_utc_time;
CEdit m_lattitude;
CEdit m_longitude;

//}}AFX_DATA


// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CComTestDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:
// Generated message map functions
//{{AFX_CComTestDlg
virtual BOOL OnInitDialog();
virtual void OnCancel();
virtual void OnOK();
afx_msg void OnConnect();
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnListen();
afx_msg void OnRefresh();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};


Есть 1.срр:


// здесь связываем ID полей ввода на форме с переменными

void CComTestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CComTestDlg)
// DDX_Control(pDX, IDOK, m_OK);
DDX_Control(pDX, IDC_TRANSMITTEXT, m_TransmitText);
DDX_Control(pDX, IDC_RECEIVETEXT, m_ReceiveText);
DDX_Control(pDX, IDC_CONNECT, m_Connect);
DDX_Control(pDX, IDC_COM_SPIN, m_ComSpin);
DDX_Control(pDX, IDC_COM, m_Com);

DDX_Control(pDX, IDC_PARCED_PRN, m_Prn);
DDX_Control(pDX, IDC_PARCED_SNR, m_Snr);
DDX_Control(pDX, IDC_PARCED_UTC_TIME, m_utc_time);
DDX_Control(pDX, IDC_LATTITUDE, m_lattitude);
DDX_Control(pDX, IDC_LONGITUDE, m_longitude);
// DDX_Control(pDX, IDC_LISTEN, m_Listen);
//}}AFX_DATA_MAP
}

// Есть метод
// Вот он то мне и нужен!!!


void CComTestDlg::OnOK()
{
if (IsCOMStarted ())
{
CString s;

m_TransmitText.GetWindowText (s);
s += "\r\n";
Transmit ((LPBYTE) (LPCTSTR) s, s.GetLength (),m_hWnd);
m_ReceiveText.SetWindowText (s);

}
int i;
CString convert;

for(i=0;i<=11; i++)
{
// Отображаем PRN и SNR, если PRN =='FF'
if (NMEA_SAT .PRN =='FF')
{

convert=(LPSTR)(NMEA_SAT.PRN);
m_Prn.SetWindowText(convert);

convert=(LPSTR)(NMEA_SAT.SNR);
m_Snr.SetWindowText(convert);

}
}

// Время

convert=(LPSTR)UTC_HOUR;
convert +=":";
convert +=(LPSTR)UTC_MINUTE;
convert +=":";
convert +=(LPSTR)UTC_SECOND;

m_utc_time.SetWindowText(convert);

// Широта
convert=(LPSTR)Lattitude_Deg;
convert +=":";
convert +=(LPSTR)Lattitude_Min;
convert +=":";
convert +=(LPSTR)Lattitude_Sec;
m_lattitude.SetWindowText(convert);

// Долгота
convert=(LPSTR)Longitude_Deg;
convert +=":";
convert +=(LPSTR)Longitude_Min;
convert +=":";
convert +=(LPSTR)Longitude_Sec;
m_longitude.SetWindowText(convert);

}

// Есть стдкол

DWORD __stdcall ThrProc (LPVOID param)
{
DWORD d;
COMSTAT stat;


while (!needCloseWindow)
{
// Try to get a lock on the transmit mutex
if (WaitForSingleObject (hTransmitMutex, 3000) == WAIT_OBJECT_0)
{
// Success. Let's see if we have something to transmit
if (dataToTransmit && (dataToTransmitSize > 0))
{
WriteFile (hComm, dataToTransmit, dataToTransmitSize, &d, NULL);
dataToTransmitSize -= d;
}

// Release the mutex
ReleaseMutex (hTransmitMutex);
}

// Receive
ClearCommError (hComm, &d, &stat);

if (stat.cbInQue > 0) {
Recv();
NMEA_GPS_RECIEVE_DATA(Recv());
//CComTestDlg::OnOK();
}

}


ВОПРОС: КАК МНЕ ВЫЗВАТЬ CComTestDlg::OnOK() в DWORD __stdcall ThrProc (LPVOID param) ????

Объясните плиз, а то как в бетонную стену ломлюсь!
Есть подозрение, что нужно передавать указатель OnOk, только как это сделать не представляю...

Я, конечно, не "волшебник, а только учусь" (С, не моё)...
Но что-то я не вижу в функции ThrProc объявления экземпляра класса CComTestDlg или его наследника... А без этого функцию-член класса не вызовешь...
...
Рейтинг: 0 / 0
Help NEEDED! вопрос знатокам MSVC .
    #33272448
Mr.Buba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всегда считал свинством постить исходик и спрашивать "ну че тут не так то" !?

Если человек не может правильно сформулировать вопрос, без поста исходников, то он просто лентяй, и сидет ему еще год над эти кодом. Все ИМХО.
...
Рейтинг: 0 / 0
Help NEEDED! вопрос знатокам MSVC .
    #33272496
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.BubaВсегда считал свинством постить исходик и спрашивать "ну че тут не так то" !?

Если человек не может правильно сформулировать вопрос, без поста исходников, то он просто лентяй, и сидет ему еще год над эти кодом. Все ИМХО.
Код: plaintext
1.
-Вот за это я и не люблю кошек...
-Ты просто не умеешь их готовить...
(с) не мое...
...
Рейтинг: 0 / 0
Help NEEDED! вопрос знатокам MSVC .
    #33272545
Anton M.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.BubaВсегда считал свинством постить исходик и спрашивать "ну че тут не так то" !?

Если человек не может правильно сформулировать вопрос, без поста исходников, то он просто лентяй, и сидет ему еще год над эти кодом. Все ИМХО.

Кто то глумится, а кто то помогает.
Излагаю мысли как могу, комменты к сырцам и вопрос озвучил.
...
Рейтинг: 0 / 0
Help NEEDED! вопрос знатокам MSVC .
    #33272781
Anton M.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав C.

Я, конечно, не "волшебник, а только учусь" (С, не моё)...
Но что-то я не вижу в функции ThrProc объявления экземпляра класса CComTestDlg или его наследника... А без этого функцию-член класса не вызовешь...

Спасибо! Так и сделал.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Help NEEDED! вопрос знатокам MSVC .
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]