Cecken ob Com belegt ist.



  • Hi
    Mal ne frage
    und zwar
    gibt es einen Befhel in der WinApi der testet wieviele Comports angeschlossen sind.
    und als 2. noch einen der testen ob an dem Comport was angeschlossen ist?



  • mA1k schrieb:

    gibt es einen Befhel in der WinApi der testet wieviele Comports angeschlossen sind.

    Du könntest die Werte in HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM absuchen.

    und als 2. noch einen der testen ob an dem Comport was angeschlossen ist?

    Definiere "angeschlossen". Du kannst jedenfalls nicht feststellen, ob ein Kabel im Anschluss steckt.



  • naja
    da soll ne telefon angeschlossen sein.
    und ich will prüfen an welchem comport es is



  • MFK schrieb:

    Du kannst jedenfalls nicht feststellen, ob ein Kabel im Anschluss steckt.

    würde es nicht gehen mit createfile den port öffnen und wenn was dran hängt gibt er ne fehlermeldung (nur ins blaue geraten 😃 )



  • so dachte ich auch erst
    habs aber so nich hinbekommen.



  • miller_m schrieb:

    würde es nicht gehen mit createfile den port öffnen und wenn was dran hängt gibt er ne fehlermeldung (nur ins blaue geraten 😃 )

    Wenn CreateFile auf einem COM-Port fehlschlägt, liegt das fast immer daran, dass dieser COM-Port bereits von einem anderen Programm geöffnet wurde. Darüber, ob ein Gerät an diesem Port hängt, sagt das nichts aus.

    @mA1k:
    Hast du eine Protokollspezifikation für dieses Telefon?



  • nein
    aber ich werds so sowieso nich regeln können.
    weil zb nen modem liefert auch ein at signal zurück und da würde er denn denken das sei das telefon.



  • MFK schrieb:

    Wenn CreateFile auf einem COM-Port fehlschlägt, liegt das fast immer daran, dass dieser COM-Port bereits von einem anderen Programm geöffnet wurde. Darüber, ob ein Gerät an diesem Port hängt, sagt das nichts aus.

    war ne idee wert 😃



  • mA1k schrieb:

    nein
    weil zb nen modem liefert auch ein at signal zurück und da würde er denn denken das sei das telefon.

    Versuch mal, ob du als Antwort auf ATI3 oder ATI4 etwas Eindeutiges bekommst.



  • Hallo

    Du könntest die Werte in HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM absuchen.

    Das ist nur (direkt) unter Win9X so
    unter WinXP zB stimmt das nicht ganz so (etwas)

    MfG
    Klaus



  • scheinbar musst du quasi einfach ein commando senden und wenn was zurückkommt, ist das telefon angeschlossen, wenn nicht dann halt nich



  • Ich mach das erstmal ganz anders.
    und zwar
    eine ini datei wo ich standartwerte eintrage
    und denn noch benutzerdeffinierte werte
    zb so
    [Default Settings]
    COM-Device=COM1
    DialPrefix=0-01081

    [uwe]
    COM-Device=COM2

    [frank]
    COM-Device=COM6

    Denn hole ich mir mittels GetUserName den Angemeldeten Benutzer.
    Überprüfe ob der jenige in der ini ist.
    wenn ja nimm seine einstellung.
    wenn nein nimm Default Setting.

    nur hab ka wie ich die datei durchsuchen soll.
    dachte dabei an GetPrivateProfileString

    hat einer nen Tip?





  • hm
    so richtig hilft mir das aber nich 😃



  • mA1k schrieb:

    hm
    so richtig hilft mir das aber nich 😃

    warum 😕



  • Du kannst doch bei GetPrivateProfileString über lpDefault den Wert bestimmen, den du bekommen willst, wenn der Eintrag nicht existiert. Du könntest also z.B. erst die Default-Einstellungen einlesen, und dann die des Users, wobei du bei lpDefault einfach den zuvor ausgelesenen Default-Wert angibst 🙂



  • hoe? 😃
    also ich hab da schon stundenlang versucht aber irgendwie wirds nix
    is schon komisch
    und irgendwie werd ich langsam voll verwirrt 😃



  • zeig dochmal was du schon gemacht hast, nur dann können wir dir helfen.



  • oh
    ich hatte viele versuche 🙂
    ich poste also nur 2 🙂

    char device[50];
    	char UserName[50];
    	char writedevice[50];
    	unsigned long lengthOfUserName = 50;
    
    	(GetUserName(UserName, &lengthOfUserName));
    
    	BOOL searchName = GetPrivateProfileString
    	(UserName, 
    	"COM-Device", 
    	"COM1", 
    	device,
    	sizeof(device), 
    	szPathToHajoDial);
    
    	if (searchName=1)
    	{
    		GetPrivateProfileString
    		(UserName, 
    		"COM-Device", 
    		"COM1", 
    		device,
    		sizeof(device), 
    		szPathToHajoDial);
    
    		cout << "Username: " << UserName << endl;
    	}
    
    		GetPrivateProfileString
    		("Default Settings",		
    		"COM-Device",		
    		"COM1",				
    		device,				
    		sizeof(device),					
    		szPathToHajoDial);
    
    		cout << "Default Settings" << endl;
    	}
    
    char device[50];
    	char UserName[50];
    	char writedevice[50];
    	unsigned long lengthOfUserName = 50;
    	unsigned long test = 
    
    	(GetUserName(UserName, &lengthOfUserName));
    	if (GetPrivateProfileString(UserName, "COM-Device", "COM1", device, sizeof(device), szPathToHajoDial))
    	{	
    		cout << "Username:" << UserName << endl;
    	}
    
    	else
    	{
    		GetPrivateProfileString
    		(
    		"Default Settings",		
    		"COM-Device",		
    		"COM1",				
    		device,				
    		sizeof(device),					
    		szPathToHajoDial
    		);
    		cout << "Default Settings" << endl;
    	}
    


  • KlausB schrieb:

    Du könntest die Werte in HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM absuchen.

    Das ist nur (direkt) unter Win9X so
    unter WinXP zB stimmt das nicht ganz so (etwas)

    Hallo KlausB,

    kannst du das näher ausführen? Meine Erfahrung damit unter Windows 2000 und XP sind gut.


Anmelden zum Antworten