Cecken ob Com belegt ist.



  • 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.



  • Und was wird ausgegeben?!



  • dies wäre doch ein weg

    // irgendwas.ini
    [dafault]
    COM1
    0-01081
    
    [uwe]
    COM2
    
    [frank]
    COM6
    
    int main(int argc, char *argv[])
    {
        char szUsername[256];
        char buffer[512];
        int nSize = sizeof(szUsername);
    
        GetUserName(UserName, &nSize);
    
        if(GetPrivateProfileSection(szUsername, buffer, sizeof(buffer), "c:\\irgendwas.ini"))
        {
             // name nicht gefunden dann default werte laden
             GetPrivateProfileSection("default", buffer, sizeof(buffer), "c:\\irgendwas.ini")
        }
    
        char *pBuffer = buffer;
        char szPort[128];
        char szDialPrefix[128];
    
        strncpy(szPort, pBuffer, strlen(pBuffer));
    
        pBuffer += strlen(pBuffer) + 1;
    
        strncpy(szPort, pBuffer, strlen(pBuffer));
    
        std::cout << "Port: " << szPort << " Dial: " << szDialPrefix << std::endl;
    
        system("pause");
        return 0;
    }
    

    ist ungetest und mit sicherheit nicht der pefekte code aber es müsste gehen :D[glossar]



  • if(GetPrivateProfileSection(szUsername, buffer, sizeof(buffer), "c:\\irgendwas.ini"))
    {
    // name nicht gefunden dann default werte laden
    GetPrivateProfileSection("default", buffer, sizeof(buffer), "c:\\irgendwas.ini")
    }

    hm du prüfst ob der username gefunden wird und so.
    wenn ja führe default aus.
    oda irre ich mich da?



  • natürlich wenn er nicht gefunden versuche ich die default settings zu laden.



  • ich habs nun so gehandhabt 🙂
    und es geht

    (GetUserName(UserName, &lengthOfUserName));	
    
    	if (GetPrivateProfileSection(UserName, device, sizeof(device), szPathToHajoDial))
    	{	
    		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;
    	}
    

    aber nun will ich das mit der automatischen suche trotzdem machen.


Anmelden zum Antworten