⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bjack.cpp

📁 symbian平台蓝牙程序,功能实现:搜索设备,指定时间间隔搜索,对指定的设备发送信息,也可指定时间间隔发送,日志操作,可通过mms,红外,蓝牙发送日志等
💻 CPP
字号:
#include "bjack.h"
#include "ObjectExchangeServiceSearcher.h"
#include "BTObjectExchange.pan"
#include "eikenv.h"

CBjack* CBjack::NewL()
    {
    CBjack* self = NewLC();
    CleanupStack::Pop(self);
    return self;
    }
    
CBjack* CBjack::NewLC()
    {
    CBjack* self = new (ELeave) CBjack();
    CleanupStack::PushL(self);
    self->ConstructL();
    return self;
    }

CBjack::CBjack()
: CActive(CActive::EPriorityStandard),
  iState(EWaitingToGetDevice)
    {
    CActiveScheduler::Add(this);
    }

void CBjack::ConstructL()
    {
    iServiceSearcher = CObjectExchangeServiceSearcher::NewL();
    }

CBjack::~CBjack()
    {
    Cancel();
    
    if (iState != EWaitingToGetDevice && iClient)
        {
        iClient->Abort();
        }
    delete iServiceSearcher;
    iServiceSearcher = NULL;

    delete iClient;
    iClient = NULL;
    }

void CBjack::DoCancel()
    {
    }


void CBjack::RunL()
    {
    if (iStatus != KErrNone)
        {
        switch (iState)
            {
            case EGettingDevice:
                if (iStatus = KErrCancel)
                    {

                    }
                break;
            case EGettingService:
            case EGettingConnection:
            case EDisconnecting:
                iState = EWaitingToGetDevice;
                break;
            case EWaitingToSend:

                iState = EWaitingToGetDevice;
                break;
            default:
                Panic(EBTObjectExchangeUnexpectedLogicState);
                break;
            }
        }
    else 
        {
        switch (iState)
            {
            case EGettingDevice:
                // found a device now search for a suitable service
                iState = EGettingService;
				iStatus = KRequestPending; // this means that the RunL can not be called until
                                           // this program does something to iStatus
				iServiceSearcher->FindServiceL(iStatus);
                SetActive();
                break;

            case EGettingService:
                iState = EGettingConnection;
                ConnectToServerL();
                break;

            case EGettingConnection:
                iState = EWaitingToSend;
				SendMessageL();
                break;

            case EWaitingToSend:
                break;

            case EDisconnecting:
                iState = EWaitingToGetDevice;
                break;

            default:
                Panic(EBTObjectExchangeSdpRecordDelete);
                break;
            };
        }
    }


void CBjack::ConnectL()
    {
    if (iState == EWaitingToGetDevice && !IsActive())
        {
        //iServiceSearcher->SelectDeviceByDiscoveryL(iStatus);
		iStatus = KErrNone;
		//
        iState = EGettingDevice;
        SetActive();
        }
    else
        {
        User::Leave(KErrInUse);
        }
    }

void CBjack::ConnectToServerL()
    {

	TObexBluetoothProtocolInfo protocolInfo;

    protocolInfo.iTransport.Copy(KServerTransportName);
	protocolInfo.iAddr.SetBTAddr(iServiceSearcher->BTDevAddr());	
    protocolInfo.iAddr.SetPort(iServiceSearcher->Port());
//protocolInfo.iAddr.SetBTAddr(BTAddy);		
//	protocolInfo.iAddr.SetPort(0x1106);


    if (iClient)
        {

        delete iClient;
        iClient = NULL;
        }
    iClient = CObexClient::NewL(protocolInfo);
    
    iClient->Connect(iStatus);
    SetActive();
    }

void CBjack::SendMessageL()
    {
		_LIT(currentFileNameD,"\\system\\apps\\BlueJackX\\jackMSG.VCF");	

		obexFile = CObexFileObject::NewL(TPtrC(NULL, 0));

		obexFile->InitFromFileL(currentFileNameD);

		if (iState != EWaitingToSend)
			{
			User::Leave(KErrDisconnected);
			}
		else if (IsActive()) 
			{
			User::Leave(KErrInUse);
			}
//		iStatus = KRequestPending;

		iClient->Put(*obexFile, iStatus);
		SetActive();
		
		CEikonEnv::Static()->AlertWin(_L("Status:"),_L("3"));  // muss drin seinda mit sendne geht
	    if (obexFile)
        {
			delete obexFile;
			obexFile = NULL;
		}
    }

void CBjack::StopL()
    {
    if (iClient && iClient->IsConnected())
        {
        iClient->Abort();
        iState = EWaitingToGetDevice;
        }
    }

void CBjack::DisconnectL()
    {
    if (iState == EWaitingToGetDevice)
        {
        return;
        }
    if (iState == EWaitingToSend)
        {
        iState = EDisconnecting;
        iClient->Disconnect(iStatus);
        SetActive();
        }
    else 
        {
        User::Leave(KErrInUse);
        }
    }

TBool CBjack::IsBusy()
    {
    return IsActive();
    }

TBool CBjack::IsConnected()
    {
    return iState == EWaitingToSend;
    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -