windows.h einbinden?



  • Hallo ich würde gerne aus einer from Anwendung ein Seriellen Com Port ansprechen , das Programm ist schon fertig und Funktion unter WIN32 Console anwendung.
    Wie kann ich dieses Programm einbinden und aufrufen?

    //#ifndef CPORT_H
    //#define CPORT_H "cport.h"
    
    //#include <windows.h>
    //#include "CamConection.h"
    //#pragma managed(push, off)
    #pragma once
    #include <windows.h>
    //#pragma managed(pop)
    
    //using namespace System;
    //using namespace CaptureTest;
    
    //using System::Windows::Forms::RichTextBox;
    
    	class CSerial
    	{
    	private:
    		HANDLE hComm;
    		//typedef void* HANDLE ;
    		//HANDLE hComm;
    	private:
    		DCB dcb_alt;
    		//typedef void DCB;   
    		//DCB dcb_alt;
    	private:
    		COMMTIMEOUTS timeouts_alt;
    		//typedef void* COMMTIMEOUTS;//COMMTIMEOUTS timeouts_alt;
    		//COMMTIMEOUTS timeouts_alt;
    	public:
    		CSerial();
    		~CSerial();
    	public:
    		int Open (int nComPortNr, int nBaud, int nBits, int nParity, int nStopp);
    		int Close (void);
    		int ModeSet (int nBaud, int nBits, int nParity, int nStopp);
    		int SetTimeout (int iTotalReadTimeout);
    		int IsOpen (void);
    
    		int ReadData (char *buffer, int iMaxCount);
    		int SendData (const char *buffer, int iBytesToWrite);
    		int WriteCommByte (unsigned char ucByte);
    	};
    
    //#endif
    

    wenn ich die windows.h einbinde gibt es nur fehler und wenn ich sie nicht einbinde in die h datei sondern in die cpp geht es aber er kennt die globalen variabeln nicht?



  • Such mal in diesem Forum (C++/CLI) da gab es mehrere Tips zu windows.h und deren Probleme.

    Ansonsten schaut die Klasse nach reinem Comport aus. Es könnte durchaus sinn machen, diese durch System.IO.Ports.SerialPort zu ersetzen bzw. diese zu Wrappen.

    Je nachdem was Du machst bzw. wo Du diese Klasse benötigst sparst Du Dir Laufzeit und Ärger.



  • ich finde leider nichts zu windows.h was mir hilft und ich würde die klasse gerne so verwenden weil ich weiss das sie funktioniert , kann mir jemand sagen was ich noch probieren könnte?

    compiler sagt immer:
    Error 1 error C2872: 'IDataObject' : ambiguous symbol C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\objidl.h 7408

    Error 2 error C3699: '*' : cannot use this indirection on type 'IDataObject' C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\objidl.h 7408

    Error 3 error C2371: 'IDataObject' : redefinition; different basic types C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\objidl.h 7422

    Error 4 error C2872: 'IDataObject' : ambiguous symbol C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\objidl.h 7583

    und so weiter



  • Hm, finde es auch nicht mehr 😕
    Jochen wird sicherlich was dazu sagen können.

    Aber wenn Du die Klasse in einer Managed Anwendung verwenden willst, ist bequemlichkeit kein Argument. Du musst viel zwischen managed und unmanaged wandeln, wenn Du die Daten mit System::String ^ verwenden willst. Die Probleme holen Dich dann ggf. irgendwann wieder ein.

    (Ich nehme jetzt an, das Du eine Windowsforms Anwendung erstellst.)





  • Hallo Jochen,

    auch wenn es nur indirekt etwas mit C++/CLI zu tun hat, kannst Du in der FAQ einen Link anbringen, der den von Dir geschriebenen Artikel verlinkt ?

    thx



  • Wohin soll ich denn das tun? Einen eigenen Thread? Wie soll der heissen?

    "Win32-Apps anstelle von C++/CLI erstellen" !?



  • Naja, mir kam es so vor, als wäre es immer in dem Zusammenhang windows.h in C++/CLI Projekten gefragt.

    Ein eigener Thread mit dem Titel "windows.h in C++/CLI Projekten mit VS Express" wäre vermutlich nicht ganz passend, könnte aber vllt. das ein oder andere mal helfen 🤡



  • Kannst Du hier so ein Thread machen? Dann verschiebe ich ihn in die FAQ...


Anmelden zum Antworten