Nächstes Thema anzeigen
Vorheriges Thema anzeigen

Vorheriges Thema anzeigenDieses Thema verschickenZeige Benutzer, die dieses Thema gesehen habenDieses Thema als Datei sichernPrintable versionEinloggen, um private Nachrichten zu lesenNächstes Thema anzeigen
Du musst dich anmelden um Beiträge zu schreiben!Du musst dich anmelden um Beiträge zu schreiben!
Autor Nachricht
fuchs
Developer
Developer


Alter: 52
Anmeldung: 04.04.2004
Beiträge: 1319
Wohnort: Friesland


BeitragVerfasst: Di 21 Jun, 2005 22:51  Titel:  mscomm objekt und bluetooth
Nach untenNach oben

Hi,

einige von euch haben ja schon erfahrung mit der ansteuerung eines handys via bluetooth mit virtuellem comport.

folgendes problem tritt auf, wenn entweder das handy nicht eingeschaltet ist, oder der bluetooth dongle nicht gesteckt ist.

wenn ich den comport öffne und daten raussende, dann reagiert meine anwendung nicht mehr. Sad

aus diesem zustand kommt man dann nur raus, wenn man entweder das programm über den taskmanager beendet oder die bluetoothverbindung von hand herstellt.

falls ich in der anwendung den port nur öffne, aber keine daten raussende, dann gibt es keine probleme. erst beim ersten senden auf den comport.

ich denke, es müßte irgendwie möglich sein, die comport verbindung abzufragen, bevor man daten raussendet.
wie habt ihr das gelöst?

danke,
fuchs





Zuletzt bearbeitet von fuchs am Do 23 Jun, 2005 01:11, insgesamt einmal bearbeitet
    
Joshua
Frischfleisch
Frischfleisch



Anmeldung: 20.06.2004
Beiträge: 8



BeitragVerfasst: Mi 22 Jun, 2005 10:09  Titel:  (Kein Titel)
Nach untenNach oben

Hallo Fuchs,

ich könnte hier eine Lösung in klassischem c++ mit einem schuss MFC für die Win32 API anbieten.

Die Methode checkt einfach ob ein logischer Comport "ansprechbar" ist oder nicht. Ob das jetzt ein virtueller BT/USB/IRDA Com-Port ist oder ein physikalischer ist egal.


BOOL Comport::CheckCOMPort( int portnumber)
{

HANDLE hPort;
CString sPortName;

// get phys. port name from configuration
sPortName.Format ("\\\\.\\COM%d",portnumber);

// a valid portname ?
if (sPortName.Find ("COM") >= 0)
{

// open port to check, if it is available
if((hPort = CreateFile( sPortName,
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
0)) != INVALID_HANDLE_VALUE)
{
CloseHandle(hPort);
return TRUE;
}
else return FALSE;

}
return FALSE;

}


Leider ist die Formatierung etwas durcheinandergeraten aber ich denke du kommst damit zurecht.

Da mich generell dein Ansatz ein cell phone in Cpos einzubinden sehr interessiert hier vielleicht noch eine kleine Anregung um das Feature für möglichst viele Telefone zur Verfügung zu stellen:
Ein dicker Brocken ist sicherlich das Auslesen des Telefonbuches
Bei Siemens Geräten funktioniert es zwar prinzipiell aber ich bekomme mit der aktuellen Cpos beta nur 3 Nummern von der SIM-Karte. Das interne Adressbuch wo ich die meisten nummern abgespeichert habe geht gar nicht Shock

Lösung: du machst in die Phone.ini ein mini telefonbuch nach dem prinzip

+4912345532 Peter Lustig
+4323423423 Willi Mustermann
...

das optional zu dem auf der Sim karte des phones verwendet werden kann, denn ne nummer zu wählen sollte bei 99% aller Telefone funktionieren, das auslesen der verschiedenen Adress / Sim-telefonbüchern ist von phone zu phone verschieden und du müsstest viele Herstellerspezifische Haken und Ösen einbauen Wink außerdem könnte man dann auch längere namen verwenden als das auf der Sim karte möglich ist

Ansonsten kann ich nur sagen weiter so .... Cpos ist ne tolle Software



    
fuchs
Developer
Developer


Alter: 52
Anmeldung: 04.04.2004
Beiträge: 1319
Wohnort: Friesland


BeitragVerfasst: Do 23 Jun, 2005 01:10  Titel:  (Kein Titel)
Nach untenNach oben

Hi joshua,

danke für die tipps, das problem ist, dass der comport ja ganz normal reagiert, als ob er vorhanden wäre.

erst beim schreiben gibt es das problem.

die abspeicherung des telefonbuchs wollte ich in der art machen, wie du es beschreibst.
das interne adressbuch/ sim adressbuch zu lesen ist eigentlich nicht schwer.
bei den siemens handys gibt es anscheinend ein timing problem.
die abfrage muß mit einer verzögerung erfolgen.

der dicke brocken ist im moment die verbindungserkennung .
ich wüßte gern, wie andere es gelöst haben, oder bin ich der einzige mit diesem problem?

gruß,
fuchs



    
Joshua
Frischfleisch
Frischfleisch



Anmeldung: 20.06.2004
Beiträge: 8



BeitragVerfasst: Do 23 Jun, 2005 15:37  Titel:  (Kein Titel)
Nach untenNach oben

Hi Fuchs
ich habe gerade nochmals den Debugger bemüht. Du hast recht, der Com-Port kann auch erfolgreich geöffnet werden,
wenn das über BT verbundene Phone aus ist, jedenfalls liefert bei mir die Funktion zum Com Port öffnen
einen gültigen File Handle. Embarassed

m_hCom = CreateFile ("\\\\.\\COM7", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_FLAG_WRITE_THROUGH, 0);

Wenn ich dann aber was auf den Port schreiben will, dann liefert mir das WriteFile im parameter bytesSent 0 zurück
und ich weiss daß das schreiben nicht geht, also irgendwas mit der Virtuellen COM Verbindung nicht stimmt.

if (!WriteFile (m_hCom, (const char*)DataOut, count,&bytesSent, NULL))
{
// error
return FALSE;
}
if (bytesSent != count)
{
// error
return FALSE;
}

Ich vermute daß bei dir die Timeouts für das schreiben zu hoch sind, denn der COM Treiber versucht bei mir so lange was
zu schreiben bis der vorher konfigurierte Timeout für den Com Port zuschlägt. Nun kenne ich mich mit dem mscomm
objekt leider nicht aus aber ich denke wenn du den timeout fürs schreiben konfigurierst kommt der PC in endlicher
Zeit wieder zurück. Auf die schnelle hab ich da im MSDN was mit object.CommandTimeout [=number] gefunden. Default ist
wohl 30 sekunden. Ich konnte aber nicht rausfinden ob das auch auf das MSCOmm Obj anwendbar ist Question

Vielleicht versuchst du nach dem erfolgreichen Öffnen des Ports einfach mal ein freundliches "AT" an das Telefon zu schicken und schaust ob ein "OK" zurückkommt. Den Timeout für das MSComm Obj. würde ich mal auf 2 sek setzten, das sollte dicke reichen.

Ich drücke auf alle Fälle mal die Daumen daß es mit dem Timeout besser wird.


Gruß Joshua



    
Beiträge der letzten Zeit anzeigen:      
Du musst dich anmelden um Beiträge zu schreiben!Du musst dich anmelden um Beiträge zu schreiben!
Vorheriges Thema anzeigenDieses Thema verschickenZeige Benutzer, die dieses Thema gesehen habenDieses Thema als Datei sichernPrintable versionEinloggen, um private Nachrichten zu lesenNächstes Thema anzeigen

Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen
 

CarTFT
Forenspecials



Forensicherheit - Alle Zeiten sind GMT + 1 Stunde -
Powered by phpBB2 Plus, phpBB Styles, based on phpBB © 2001/6 phpBB Group :: FI Theme ::

[ Zeit: 0.5853s ][ Queries: 48 (0.2321s) ][ GZIP Ein - Debug Ein ]
carTFT.com