//-- void PlayConnectSppSvc() { BTCONNHDL s_currSPPConnHdl = StackConsts.BTSDK_INVALID_HANDLE; BTDEVHDL s_currRmtSppDevHdl = StackConsts.BTSDK_INVALID_HANDLE; UInt32 s_ComSerialNum = 0; //---- BtSdkError ulRet = 0; UInt32 osComPort; // const UInt32 UsageTypeConst = 1; const StackConsts.COMM_SET flags = StackConsts.COMM_SET.Record | StackConsts.COMM_SET.UsageType; const UInt16 BTSDK_CLS_SERIAL_PORT = 0x1101; const int Timeout = 2200; // s_ComSerialNum = _factory.Api.Btsdk_GetASerialNum(); _factory.Api.Btsdk_PlugInVComm(s_ComSerialNum, out osComPort, UsageTypeConst, flags, Timeout); ulRet = _factory.Api.Btsdk_InitCommObj(checked ((byte)osComPort), BTSDK_CLS_SERIAL_PORT); // if (ulRet != 0) { var sppStru = new Structs.BtSdkSPPConnParamStru(osComPort); BtSdkError ret = _factory.Api.Btsdk_ConnectEx(s_currRmtSppDevHdl, BTSDK_CLS_SERIAL_PORT, ref sppStru, out s_currSPPConnHdl); if (ret != 0) { Console.WriteLine("Connect remote SPP Service with local COM{0}\n", osComPort); } } }
//---- void ConnectRfcommPreAllocateComPort(UInt16 svcClass16, UInt32 hDev, out UInt32 hConn, out byte channel, out int comPort //, out UInt32 comSerialNum ) { UInt32 comSerialNum; // UInt32 comSerialNum0; BtSdkError ret; UInt32 osComPort; // const UInt32 UsageTypeConst = 1; const StackConsts.COMM_SET flags = StackConsts.COMM_SET.Record | StackConsts.COMM_SET.UsageType; const UInt16 BTSDK_CLS_SERIAL_PORT = 0x1101; const int Timeout = 2200; // comSerialNum0 = _factory.Api.Btsdk_GetASerialNum(); comSerialNum = comSerialNum0; Debug.Assert(comSerialNum != 0, "INFO comSerialNum == 0 wierd maybe???"); bool success = _factory.Api.Btsdk_PlugInVComm(comSerialNum, out osComPort, UsageTypeConst, flags, Timeout); Debug.WriteLine(string.Format(CultureInfo.InvariantCulture, "Btsdk_GetASerialNum comSerialNum: {0}, Btsdk_PlugInVComm success: {1}, osComPort: {2}", comSerialNum0, success, osComPort)); if (!success) { BluesoleilUtils.CheckAndThrow(BtSdkError.OPERATION_FAILURE, "Btsdk_PlugInVComm"); } comPort = checked ((int)osComPort); ret = _factory.Api.Btsdk_InitCommObj(checked ((byte)osComPort), BTSDK_CLS_SERIAL_PORT); Debug.WriteLine(string.Format(CultureInfo.InvariantCulture, "Btsdk_InitCommObj ret: {0}", ret)); BluesoleilUtils.CheckAndThrow(ret, "Btsdk_InitCommObj"); // bool connSuccess = false; try { var sppStru = new Structs.BtSdkSPPConnParamStru(osComPort); ret = _factory.Api.Btsdk_ConnectEx(hDev, svcClass16, ref sppStru, out hConn); Debug.WriteLine(string.Format(CultureInfo.InvariantCulture, "ret: {0}, hConn: 0x{1:X}", ret, hConn)); BluesoleilUtils.CheckAndThrow(ret, "Btsdk_ConnectEx"); _hDev = hDev; // channel = 0; // unknown Console.WriteLine("Connect remote SPP Service with local COM{0}\n", osComPort); connSuccess = true; } finally { if (!connSuccess) { FreeComIndex(_factory, comPort, comSerialNum0); } } }
internal static extern BtSdkError Btsdk_ConnectEx(BTDEVHDL dev_hdl, UInt16 service_class, ref Structs.BtSdkSPPConnParamStru lParam, out BTCONNHDL conn_hdl);
BtSdkError IBluesoleilApi.Btsdk_ConnectEx(BTDEVHDL dev_hdl, UInt16 service_class, ref Structs.BtSdkSPPConnParamStru lParam, out BTCONNHDL conn_hdl) { return(NativeMethods.Btsdk_ConnectEx(dev_hdl, service_class, ref lParam, out conn_hdl)); }