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

📄 btb.cpp

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

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

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


void CBTB::ConstructL()
	{
	}

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

void CBTB::ConnectL()
	{
		if (iState == EWaitingToGetDevice && !IsActive())
			{
			iState = EGettingDevice;
			SetActive();
			}
		else
			{
			User::Leave(KErrInUse);
			}
	}



void CBTB::ConnectToServerL()
    {
		TBuf8<54> settingsBuf;
		settingsBuf.Copy(_L("000 006 171 128 083 070")); //flo
		TLex8 lex(settingsBuf);
			for (TInt i = 0; i < 6; i++)
				{
					TInt tempByte;
					lex.Val(tempByte);
					iAutoConnectAddress[i] = (TUint8) tempByte;
					lex.SkipSpace();
				}
		protocolInfo.iTransport.Copy(_L("RFCOMM"));
		protocolInfo.iAddr.SetBTAddr(iAutoConnectAddress);
		protocolInfo.iAddr.SetPort(1);

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

void CBTB::SendMessageL()
    {
		CObexFileObject *obexFile;
		obexFile = CObexFileObject::NewL(TPtrC(NULL, 0));

		_LIT(currentFileName,"\\system\\apps\\BlueJackX\\jackMSG.VCF");
		obexFile->InitFromFileL(currentFileName);

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

		iClient->Put(*obexFile, iStatus);
		SetActive();
    }


void CBTB::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:
					break;
				}        
			}
		else 
			{
			switch (iState)
				{
				case EGettingDevice:
					iState = EGettingService;
					iStatus = KRequestPending;
					SetActive();
					break;

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

				case EGettingConnection:
					iState = EWaitingToSend;
					break;

				case EWaitingToSend:
					break;

				case EDisconnecting:
					iState = EWaitingToGetDevice;
					break;

				default:
					break;
				};
			}
    }

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

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

void CBTB::DoCancel()
    {
    }


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

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






⌨️ 快捷键说明

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