000
03.08.2004, 16:06 Uhr
mbruening
|
Hallo Liebe Leute habe hier ein dickes Problem.
Ich muss einen Handscanner über den Comport anschliessen und die Daten zum Scanner bzw vom Scanner über TCP/IP an einen Linuxrechner schicken. Das Prog vom Scanner läuft nur mit MFC so nun muss ich also "nur" noch dieTCP/IP Kiste in den Griff kriegen. Habe da aber mein Hauptproblem ich kriege die Verbindung einfach nicht an den Start.
Ich schreibe mal den Code hier rein hoffe das mir noch zu helfen ist.
testscanDlg.h
C++: |
// testscanDlg.h : Header-Datei // //{{AFX_INCLUDES() #include "resource.h" #include "plserver.h" //}}AFX_INCLUDES
#if !defined(AFX_TESTSCANDLG_H__1EA03D2D_7693_444B_BDEC_DC336C66D3EC__INCLUDED_) #define AFX_TESTSCANDLG_H__1EA03D2D_7693_444B_BDEC_DC336C66D3EC__INCLUDED_
#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000
class CPlserver;
class CTestscanDlg : public CDialog { // Konstruktion public: CTestscanDlg(CWnd* pParent = NULL); // Standard-Konstruktor
// Dialogfelddaten //{{AFX_DATA(CTestscanDlg) enum { IDD = IDD_TESTSCAN_DIALOG }; CListBox m_tcp; CPLServer m_pl; //}}AFX_DATA
// Vom Klassenassistenten generierte Überladungen virtueller Funktionen //{{AFX_VIRTUAL(CTestscanDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV-Unterstützung //}}AFX_VIRTUAL
// Implementierung protected: HICON m_hIcon;
// Generierte Message-Map-Funktionen //{{AFX_MSG(CTestscanDlg) virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnDataArrivedPlserverctrl3(long id, short frameid); afx_msg void OnSelchangeTcp(); DECLARE_EVENTSINK_MAP() //}}AFX_MSG DECLARE_MESSAGE_MAP() };
//{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ fügt unmittelbar vor der vorhergehenden Zeile zusätzliche Deklarationen ein.
#endif // !defined(AFX_TESTSCANDLG_H__1EA03D2D_7693_444B_BDEC_DC336C66D3EC__INCLUDED_)
|
testscanDlg.cpp
C++: |
// testscanDlg.cpp : Implementierungsdatei //
#include "stdafx.h" #include "testscan.h" #include "testscanDlg.h" #include "plserver.h"
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif
class CAboutDlg : public CDialog { public: CAboutDlg();
// Dialogfelddaten //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA
// Vom Klassenassistenten generierte Überladungen virtueller Funktionen //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV-Unterstützung //}}AFX_VIRTUAL
// Implementierung protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() };
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT }
void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP }
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // Keine Nachrichten-Handler //}}AFX_MSG_MAP END_MESSAGE_MAP()
///////////////////////////////////////////////////////////////////////////// // CTestscanDlg Dialogfeld
CTestscanDlg::CTestscanDlg(CWnd* pParent /*=NULL*/) : CDialog(CTestscanDlg::IDD, pParent) { //{{AFX_DATA_INIT(CTestscanDlg) // HINWEIS: Der Klassenassistent fügt hier Member-Initialisierung ein //}}AFX_DATA_INIT // Beachten Sie, dass LoadIcon unter Win32 keinen nachfolgenden DestroyIcon-Aufruf benötigt m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); }
void CTestscanDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CTestscanDlg) DDX_Control(pDX, IDC_TCP, m_tcp); DDX_Control(pDX, IDC_PLSERVERCTRL3, m_pl); //}}AFX_DATA_MAP }
BEGIN_MESSAGE_MAP(CTestscanDlg, CDialog) //{{AFX_MSG_MAP(CTestscanDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_LBN_SELCHANGE(IDC_TCP, OnSelchangeTcp) //}}AFX_MSG_MAP END_MESSAGE_MAP()
///////////////////////////////////////////////////////////////////////////// // CTestscanDlg Nachrichten-Handler
BOOL CTestscanDlg::OnInitDialog() { CDialog::OnInitDialog();
// Hinzufügen des Menübefehls "Info..." zum Systemmenü.
// IDM_ABOUTBOX muss sich im Bereich der Systembefehle befinden. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } }
// Symbol für dieses Dialogfeld festlegen. Wird automatisch erledigt // wenn das Hauptfenster der Anwendung kein Dialogfeld ist SetIcon(m_hIcon, TRUE); // Großes Symbol verwenden SetIcon(m_hIcon, FALSE); // Kleines Symbol verwenden // ZU ERLEDIGEN: Hier zusätzliche Initialisierung einfügen return TRUE; // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten }
void CTestscanDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } }
// Wollen Sie Ihrem Dialogfeld eine Schaltfläche "Minimieren" hinzufügen, benötigen Sie // den nachstehenden Code, um das Symbol zu zeichnen. Für MFC-Anwendungen, die das // Dokument/Ansicht-Modell verwenden, wird dies automatisch für Sie erledigt.
void CTestscanDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // Gerätekontext für Zeichnen
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Symbol in Client-Rechteck zentrieren int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2;
// Symbol zeichnen dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } }
// Die Systemaufrufe fragen den Cursorform ab, die angezeigt werden soll, während der Benutzer // das zum Symbol verkleinerte Fenster mit der Maus zieht. HCURSOR CTestscanDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; }
BEGIN_EVENTSINK_MAP(CTestscanDlg, CDialog) //{{AFX_EVENTSINK_MAP(CTestscanDlg) ON_EVENT(CTestscanDlg, IDC_PLSERVERCTRL3, 1 /* DataArrived */, OnDataArrivedPlserverctrl3, VTS_I4 VTS_I2) //}}AFX_EVENTSINK_MAP END_EVENTSINK_MAP()
void CTestscanDlg::OnDataArrivedPlserverctrl3(long id, short frameid) { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen }
void CTestscanDlg::OnSelchangeTcp() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen }
|
habe gedacht das hier mehr reinpasst. wohl getäuscht echt peinlich so was versuche es auf anderem weg (nur wichtige teile zu Posten) Dieser Post wurde am 03.08.2004 um 16:34 Uhr von mbruening editiert. |