MCP2155 <> Symbian

Gast #866021
Lesenswert?
• ▲
▼
Hallo Experten!

Hat jemand schon Erfahrungen mit Infrarot Handy-Mikrocontroller?

Ich muss von einem Symbian-Handy aus mit einem Mikrocontroller 
kommunizieren und habe ein Paar Probleme:
Mit dem beigefügten Code ist es möglich, Daten auf dem Handy zu 
empfangen, aber gesendete Daten vom Handy kommen nicht an.
Ich verwende ein Nokia-N95 und einen MCP2155 mit Max232 an die serielle 
Schnittstelle des PC angeschlossen. Für den PC gibt es ein 
Beispielprogramm mit dem auch Daten vom MCP gesendet werden können...

Gibt es bessere Alternativen als den MCP2155?

Jede Hilfe ist sehr willkommen!

[code]
LOCAL_C void doExampleL()
    {

    console->Printf (_L("Simple IrDA Test\n"));

    _LIT(SocketsProtocolName, "IrTinyTP" );
    _LIT8(classname,"IrDA:IrCOMM");//IRServer");
    _LIT8(attribute,"IrDA:TinyTP:LsapSel");
    _LIT8(none,"");

    TRequestStatus stat;
    RSocketServ ss;
    TProtocolDesc pInfo;
    TProtocolName protoName(SocketsProtocolName);
    TInt ret;
    ret=ss.Connect ();
    ret=ss.FindProtocol (protoName, pInfo);
    if ( ret!=KErrNone)
        {
        ss.Close();
        }
    //start discovery
    RHostResolver hr1;
    ret=hr1.Open (ss, pInfo.iAddrFamily, pInfo.iProtocol);
    if ( ret!=KErrNone)
        {
        ss.Close();
        }
    console->Printf (_L("HostResolver started\n"));
    console->Printf (_L("Now searching for device...\n"));

    TNameEntry log;
    THostName name;
    //finds all IrLAP stations
    TUint tryNum = 1;

    ret=hr1.GetByName (name, log);
    if ( ret!=KErrNone)
        {
        while (ret!=KErrNone)
            {
            tryNum++;
            ret=hr1.GetByName (name, log);
            }
        }
    console->Printf (_L("Discovered something after %d 
tries\n"),tryNum);
    console->Printf (_L("Device: "));
    console->Printf (log().iName); /// IS Generic IrDA
    console->Printf (_L("\n"));

    TIrdaSockAddr addr(log().iAddr); // Takes a TSockAddr and casts it 
to a TIrdaSockAddr.

    RSocket sender;
    sender.Open (ss, pInfo.iAddrFamily, pInfo.iSockType, 
pInfo.iProtocol);
    console->Printf (_L("Opened sender\n"));

    TIrdaSockAddr iAddress(log().iAddr);
    //open database for IAS Query

    RNetDatabase aNetdb;
    ret = aNetdb.Open(ss, pInfo.iAddrFamily, pInfo.iProtocol);
    if (ret!=KErrNone)
        {
        ss.Close();
        hr1.Close();
        sender.Close();
        }
    console->Printf (_L("Opened database\n"));

    TUint remDevAddr = iAddress.GetRemoteDevAddr();

    TInt port = IASQuery(aNetdb,classname,attribute,remDevAddr);
    iAddress.SetPort(port);
    console->Printf (_L("Queried database, using port: %d\n"),port);

    aNetdb.Close();

    sender.Bind(iAddress);
    sender.Connect(iAddress,stat);
    User::WaitForRequest(stat);
    if(stat.Int()!=KErrNone)
        {
        ss.Close();
        hr1.Close();
        sender.Close();
        }
    console->Printf (_L("Sender connected\n"));

    sender.Write(none,stat);
    User::WaitForRequest(stat);
    if(stat.Int()!=KErrNone)
        {
        ss.Close();
        hr1.Close();
        sender.Close();
        }

    TBuf8<10> b1;
    TBuf<10> b2;
    b1.FillZ();
    b2.FillZ();
    console->Printf (_L("Read until ESC (27):"));
    do
        {
        sender.Read (b1, stat); // Reading from accepted socket.
        User::WaitForRequest (stat);
        b2.Copy(b1);
        console->Printf (b2);
        }while(b2[1]!=27);

    console->Printf (_L("\nPress any key...\n"));
    console->Getch();
    console->Printf (_L("Staring to send...\n"));

    TBuf8<10> b3;
    TBuf8<1> b4;
    b3.FillZ();
    b4.FillZ();
    b3.Format (_L8("Finally :]"));

    sender.Write (b3, stat);
    User::WaitForRequest (stat);

    for(int i=0; i<10; i++)
        {
        sender.Write (b4, stat);
        User::WaitForRequest (stat);
        User::After(1000);
        console->Printf (_L("%d Stat:%d\n"),i,stat.Int());
        }

    console->Printf (_L("Finished\n"));
    hr1.Close();
    sender.Close();
    ss.Close();
    }
[\code]

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.