AT-Befehl mit Nokias Carbide.C++ (Symbian)?

Guten Tag!

Ich habe mir für Testzwecke das Nokia 6600 besorgt. Als Software nutze ich die Entwicklungsumgebung Carbide.C++ von Nokia, sowie die S60 2nd SDK, welche für das Nokia 6600 benötigt wird. ActivePerl 5.6.1 und JRE 1.3.1 wurden auch installiert. Danach habe ich zur Einführung und zum Test, ob auch alles funktioniert eine einfache HalloWelt-Vorlage der SDK kompiliert und die SIS auf dem Handy installiert. Das funktioniert auch alles ganz gut nur ist der Grund, weshalb ich hier schreibe ein anderer.
Ich habe eine Anleitung bei Nokia gefunden, welche beschreibt, wie man auf AT-Befehle zugreifen kann unter:

http://wiki.forum.nokia.com/index.php/How_to_send_AT…

Dazu ist zu sagen, dass dieser Quellcode laut Nokia auf dem Handy, welches ich habe auch erfolgreich getestet wurde!!
Leider habe ich eben noch nicht wirklich Ahnung, wie man soetwas schreibt und bräuchte mal eueren Rat um den Vorliegenden Quellcode zu einer SIS zu kompilieren. Letztendlich will ich nichts daran ändern außer den AT-Befehl. Ich weiss nicht ob ich es als Consolen-Anwendung oder sonstwas erstellen müsste. Es wäre also sehr toll, wenn mit jemand eine kurze Anleitung geben könnte, damit ich den Quellcode so wie er vorliegt zum laufen bekomme…

Über eine Antwort würde ich mich sehr freuen!
Vielen Dank!
Toni

P.S. Die benötigten Programmlinks gebe ich auch nochmals heraus:

% Quelle: http://www.forum.nokia.com/info/sw.nokia.com/id/4a71…
–> SDKs (S60 2nd V2 (107MB))

%Quelle: http://www.forum.nokia.com/Tools_Docs_and_Code/Tools…
–> Carbide V1.2 höhere Version unterstützt kein S60 2nd!

%Quelle: http://java.sun.com/products/archive/j2se/1.3.1_20/i…
–> JRE 1.3.1

%Quelle: http://en.kioskea.net/telecharger/telecharger-3105-a…
–> ActivePearl 5.6.1

Kennt sich denn damit wirklich niemand aus? Und wenn es nur ein klitzekleiner Tipp wäre, würde ich mich schon freuen wie ein Schneekönig!

Schönen Sonntag noch euch allen!
Gruß
Toni

Hallo!

Ich habe mir nun das Programm MakeSIS separat von http://phonesymbian.com/2006/07/12/makesis-v10/ geladen und die fehlende Datei COMDLG32.OCX ins Verzeichnis C:\Windows\system kopiert. Danach funktioniert das erstellen der SIS mit dem Programm nach Wahl des Programmverzeichnises automatisch.
Übrigens erstellt Carbide zwei .pkg-files (Konsole_EKA1.pkg, Konsole_EKA2.pkg)
Der Quellcode besitzt laut Carbide keine Fehler mehr. Allerdings funktioniert die erstellte SIS wie vorher beschrieben noch immer nicht. Es lässt sich kein ausführbares Programm auf dem Handy finden…
Die Bibliothek 32.lib habe ich in der .mmp hinzugefügt.
Was meint Nokia eigentlich mit

Capabilities needed:
Capability NetworkControl CommDD

auf der bereits genannten Nokia Seite, auf der der Code zu haben ist?
Muss ich da auch noch irgendwo etwas einstellen oder hinzufügen bei Carbide?
Ich weiss leider nicht wo ich diese einfüge!

Der Emulator gibt mir den Fehlercode -1 aus, was nach dem link http://wiki.forum.nokia.com/index.php/Error_codes „Item not found“ bedeutet. Leider weiss ich damit aber absolut nichts anzufangen…
Ich habe mal den teil des eingefügten Quellcodes hier aufgeführt:

#include 


// Constants

\_LIT(KTextConsoleTitle, "Console");
\_LIT(KTextFailed, " failed, leave code = %d");
\_LIT(KTextPressAnyKey, " [press any key]\n");


// Global Variables

LOCAL\_D CConsoleBase\* console; // write all messages to this


// Local Functions

LOCAL\_C void MainL()
 {
 //
 // add your program code here, example code below
 //
 console-\>Write(\_L("Hello, world!\n"));

 \_LIT(KCsyName,"DATAPORT");
 \_LIT(KDataPort,"DATAPORT::1");
 RCommServ commServer;
 RComm comm;

 User::LeaveIfError(StartC32());

 // Connect the server
 User::LeaveIfError(commServer.Connect());

 // Load the CSY module
 User::LeaveIfError(commServer.LoadCommModule(KCsyName));

 // Open the port
 User::LeaveIfError(comm.Open(commServer, KDataPort, ECommShared));

 // Write any AT command
 \_LIT8(KWriteCommand, "AT+CGSN\r\n");
 TRequestStatus writeStatus;
 comm.Write(writeStatus, KWriteCommand());
 User::WaitForRequest(writeStatus);

 // Put some delay before reading the response
 const TInt KTimeDelay = 1000000;
 User::After(KTimeDelay);

 // Here I am reading the port twice since the first read will be an echo 
 // i.e the same command will be received in response

 // Second read will give the actual response, in this case, the IMEI number of 
 // the device
 // Putting in a while loop hangs the application since there is nothing to read
 // on the third read, and so the port keeps on waiting for a response

 TBuf8 des; // Response will be received in this buffer. 
 // 1024 is the default buffer size of the receive buffer
 TInt count = 0;
 TRequestStatus readStatus;
 while( count buffer;
 buffer.Copy(des);
 console-&gt:stuck\_out\_tongue\_winking\_eye:rintf(buffer);
 count++;
 User::After(500000);
 }

 // Close the port and the server
 comm.Close();
 commServer.Close();
 }

Es gibt keine Fehler und es dürfte also wirklich nur noch eine Kleinigkeit zum lauffähigen Code sein, doch sehe ich wohl inzwischen den Wald vor lauter Bäumen nicht

Bitte helft mir!!! :frowning:

OK ^^ Also die Capabillities habe ich jetzt auch hinbekommen.
Man muss diese über das .mmp file unter „option“ -> „Runtime“ hinzufügen. Leider bekomme ich das Programm immernoch nicht zum laufen, obwohl alle von mir gedachten Probleme behoben sein dürften… :frowning: