S60串口通信方法(USB,蓝牙)

2rd:

蓝牙通信:

_LIT (KLddName, "EUSBC"); //ECOMM

// Logical device driver names
_LIT (KLBTddName, "ECOMM");

// Comm Port Name
_LIT (KPortName, "ACM::0"); //IRCOMM

// Comms modules
_LIT (KIrComm, "ECACM");//IRCOMM


if(m_bConnected)
                return 1;
    TInt err;
        m_iRecerving = -1;
        /*
        // Load the physical device driver.
    err = User::LoadPhysicalDevice(KPddName);
    if (err != KErrNone && err != KErrAlreadyExists)
        {
        User::Leave(err);
        }

    // Load the logical device driver.
    err = User::LoadLogicalDevice(KLBTddName);
    if (err != KErrNone && err != KErrAlreadyExists)
        {
        User::Leave(err);
        }

    // Start the comms server process
    err = StartC32();
    if (err != KErrNone && err != KErrAlreadyExists)
        {
        User::Leave(err);
        }
                */
        //
        iServer.Connect();
        err=iServer.LoadCommModule(KTxtBTCOMM);
        TBuf<16> commname;
        //commname.Copy(KTxtBTCommName);
        //commname.AppendNum(0);
        if((err!= KErrNone) && (err!= KErrAlreadyExists))
                {
                User::Panic(_L("Load"), err);
                }
    iAppUi->ComPort(commname);
        iAppUi->SetTextL(commname);
        //commname.Copy(_L("BTCOMM::1"));
        User::LeaveIfError(iComm.Open(iServer,commname,ECommExclusive));
        //Configuring Port is done by using the code

            TCommConfig cBuf;
                TCommConfigV01 &c=cBuf();
               
          // Get the current configuration
                iComm.Config(cBuf);
               
          // Set new settings
                c.iRate = EBps460800;
        c.iParity = EParityNone;
        c.iDataBits = EData8;
        c.iStopBits = EStop1;
        c.iFifo = EFifoEnable;
        c.iHandshake =(KConfigObeyCTS | KConfigFreeRTS);
          // Write the settings out
                iComm.SetConfig(cBuf);

    iComm.SetSignals(KSignalDTR, 0);
    iComm.SetSignals(KSignalRTS, 0);
  
    // Set buffer size
    c**t TInt KBufferLength = 4096;
    iComm.SetReceiveBufferLength(KBufferLength);
                 m_bConnected = ETrue;
             iTickInterval=150000;
                 //iTickInterval=1000000;
               
                m_iCount = 0;
                m_bBt = ETrue;
            iPeriodic->Start(0,iTickInterval,TCallBack(Tick, this));
                iAppUi->SetTextL(_L("Listening..."));
            return 0;
USB:
#if 1
   
  TBuf8<50> buf;
   TFullName repName;
   _LIT8(KFAXMODEM,  "FaxModem" );
   TFindProcess process;
   for(TInt i = 0; i < 1000; i++)
   {
      while(process.Next(repName) != KErrNotFound)
      {
         buf.Copy(repName);
   
          if ( (buf.Find(KFAXMODEM) != KErrNotFound) )
          {
           
             RProcess aProcess;
             aProcess.Open(process);
             //aProcess.Kill(0);
                         aProcess.Terminate(0);
             aProcess.Close();
                         
         }
      }
   }

TInt err;
  
#if defined (__WINS__) // File Server required in WINS to enable loading of device drivers
    RFs fileServer;
    User::LeaveIfError(fileServer.Connect());
    fileServer.Close();
#endif

    // Load the physical device driver.
    err = User::LoadPhysicalDevice(KPddName);
    if (err != KErrNone && err != KErrAlreadyExists)
        {
        User::Leave(err);
        }

    // Load the logical device driver.
    err = User::LoadLogicalDevice(KLddName);
    if (err != KErrNone && err != KErrAlreadyExists)
        {
        User::Leave(err);
        }

    // Start the comms server process
    err = StartC32();
    if (err != KErrNone && err != KErrAlreadyExists)
        {
        User::Leave(err);
        }

    // Connect to the Serial comms server.
    User::LeaveIfError(iServer.Connect());

    // Load the CSY module.
    User::LeaveIfError(iServer.LoadCommModule(KIrComm));
    iAppUi->SetTextL(_L("start connecting5"));
        User::LeaveIfError(iComm.Open(iServer, KPortName, ECommExclusive));//ECommShared)); //ECommExclusive
    iAppUi->SetTextL(_L("start connecting6"));
    // Configure port
    TCommConfig portSettings;
    iComm.Config(portSettings); // Get current configuration
    portSettings().iRate = EBps460800;
    portSettings().iParity = EParityNone;
    portSettings().iDataBits = EData8;
    portSettings().iStopBits = EStop1;
    portSettings().iFifo = EFifoEnable;
    portSettings().iHandshake = KConfigObeyXoff|KConfigSendXoff;
    portSettings().iTerminator[0] = 10;  // line feed character
    portSettings().iTerminatorCount = 1;

     User::LeaveIfError(iComm.SetConfig(portSettings));

    // Turn on DTR and RTS
    iComm.SetSignals(KSignalDTR, 0);
    iComm.SetSignals(KSignalRTS, 0);
  
    // Set buffer size
    c**t TInt KBufferLength = 4096;
    iComm.SetReceiveBufferLength(KBufferLength);
#endif
              m_bConnected= ETrue;
              m_iRecerving= 0;
              iTickInterval=120000;
                 // iAppUi->SetTextL(_L("start connecting7"));
                  m_bBt = EFalse;
                  //SetActive();
              iPeriodic->Start(0,iTickInterval,TCallBack(Tick, this));
                  iAppUi->SetTextL(_L("Listening..."));
                  //
                  TBuf<64>CNum;
                  CNum.Copy(_L("+8613800200500"));
          if(iMsgEngine)
                  {
                         // iMsgEngine->SetCenterNum(CNum);
                         // if(iMsgEngine->GetCenterNum(CNum))
                           //  iAppUi->SetTextL(CNum);
                  }
                  //
                  //SendImage();
                  return 0;

3RD:
_LIT (KLBTddName, "ECOMM");
// Comm Port Name
_LIT (KPortName, "ACM::0"); //IRCOMM
_LIT(KTxtUSBCOMM,"ECACM");
// Comms modules
_LIT (KSerComm, "ECUART");//SERIALCOMM

//bluetooth


// Required LITs
_LIT(KTxtBTCOMM,"BTCOMM");
_LIT(KTxtBTCommName,"BTCOMM::");

蓝牙:
TInt err;
        m_iRecerving = -1;
        /*
        // Load the physical device driver.
    err = User::LoadPhysicalDevice(KPddName);
    if (err != KErrNone && err != KErrAlreadyExists)
        {
        User::Leave(err);
        }

    // Load the logical device driver.
    err = User::LoadLogicalDevice(KLBTddName);
    if (err != KErrNone && err != KErrAlreadyExists)
        {
        User::Leave(err);
        }
*/
    // Start the comms server process
    err = StartC32();
    if (err != KErrNone)
        {
        User::Leave(err);
        iAppUi->SetTextL(_L("please start the connect1...."));
        return 1;
        }
        //
    err=iServer.Connect();
    if (err != KErrNone)
           {
           User::Leave(err);
           iAppUi->SetTextL(_L("please start the connect2...."));
           return 1;
           }
        err=iServer.LoadCommModule(KTxtBTCOMM);
         if (err != KErrNone)
                {
                User::Leave(err);
                iAppUi->SetTextL(_L("please start the connect3...."));
                return 1;
                }
        TBuf<16> commname;
        //commname.Copy(KTxtBTCommName);
        //commname.AppendNum(0);
    iAppUi->ComPort(commname);
        iAppUi->SetTextL(commname);
        //commname.Copy(_L("BTCOMM::1"));
        err=iComm.Open(iServer,commname,ECommExclusive);
         if (err != KErrNone)
                {
                User::Leave(err);
                iAppUi->SetTextL(_L("please start the connect4...."));
                return 1;
                }
         
        //Configuring Port is done by using the code

            TCommConfig cBuf;
                TCommConfigV01 &c=cBuf();
               
          // Get the current configuration
                iComm.Config(cBuf);
               
          // Set new settings
                c.iRate = EBps115200;
        c.iParity = EParityNone;
        c.iDataBits = EData8;
        c.iStopBits = EStop1;
        c.iFifo = EFifoEnable;
        c.iHandshake =(KConfigObeyCTS | KConfigFreeRTS);
          // Write the settings out
                iComm.SetConfig(cBuf);
    // Set buffer size
   //c**t TInt KBufferLength = 4096;
   // iComm.SetReceiveBufferLength(KBufferLength);
                 m_bConnected = ETrue;
             iTickInterval=120000;
                 //iTickInterval=1000000;
                              //DORUNL();
                              //TPtrC8 ptr;
                              //TBuf<512> unicodeBuf;
                             
                             //_LIT(RUN,"Start:");
                             //unicodeBuf.Copy(RUN);
                             //iRecBuffer.Copy(unicodeBuf);
                              //Send(iRecBuffer);
                             // User::After(400000);
                m_iCount = 0;
                m_bBt = ETrue;
            iPeriodic->Start(0,iTickInterval,TCallBack(Tick, this));
                iAppUi->SetTextL(_L("Listening..."));

USB:
#if 1
              User::LeaveIfError(iServer.Connect());
              iServer.LoadCommModule(KTxtUSBCOMM);
              TBuf8<15> commname;
              User::LeaveIfError(iComm.Open(iServer,_L("ACM::1"),ECommExclusive));
              //Configuring Port is done by using the code
              TCommConfig cBuf;
              TCommConfigV01 &c=cBuf();

              // Get the current configuration
              iComm.Config(cBuf);

              // Set new settings
              c.iFifo = EFifoEnable;
              //c.iRate = EBps19200;
              //c.iRate = EBps57600;
              c.iRate = EBps460800;
              c.iHandshake = KConfigObeyCTS;
              c.iTerminatorCount = 0;
              c.iDataBits = EData8;
              c.iParity = EParityNone;
              c.iStopBits = EStop1;

              // Write the settings out
              iComm.SetConfig(cBuf);
              iComm.SetSignals (KSignalDTR, 0);
              iComm.SetSignals (KSignalRTS, 0);
              //Start listen Comm
    // Set buffer size
              c**t TInt KBufferLength = 4096;
              iComm.SetReceiveBufferLength(KBufferLength);
              //iComm.ReadOneOrMore(iStatus,iRecBuffer);
#endif
             // SetActive();
              m_bConnected= ETrue;
              m_iRecerving= 0;
              iTickInterval=120000;
              m_bBt = EFalse;
              //DORUNL();
              //TPtrC8 ptr;
              //TBuf<512> unicodeBuf;
             
             //_LIT(RUN,"Start:");
             //unicodeBuf.Copy(RUN);
             //iRecBuffer.Copy(unicodeBuf);
              //Send(iRecBuffer);
             // User::After(400000);
              iPeriodic->Start(0,iTickInterval,TCallBack(Tick, this));
                  iAppUi->SetTextL(_L("Listening..."));
              //TBuf<32>Buf;
              //Buf.Copy(_L("13800200510"));
              //TBuf<32>IapName;
              //TBuf<32>ApnName;
              //FindApnbyIdL(iMsgEngine->GetMmsIap(),ApnName,IapName);
              //iAppUi->SetTextL(IapName);
                  //iAppUi->SetTextL(CnNum);
                  //SendImage();
                  return 0;

 

标准的S60串口通信应用,可以参考Remote S60 Professional.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值