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

📄 bthwrapconnectior.cs

📁 通过手机蓝牙控制个人电脑上的幻灯片的播放
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;
using BTH_Connection;

namespace BTH_Connection_Wrap
{
    public class BTHWrapConnectior
    {
        private BTHConnector _connector;
        private int PACKETSIZE = 50;
        public BTHWrapConnectior()
        {
            _connector = new BTHConnector();
        }

        public bool Start()
        {
            if (_connector.InitialiseBluetooth() == 0)
            {
                //return "Failed to enable Bluetooth";
                return false;
            }
            else
            {
                //"Enable bluetooth success"
            }

            if (_connector.InitialiseWinsock() == 0)
            {
                //return "WSAStartup() error";
                return false;
            }
            else
            {
                //"WSAStartup() success"
            }
            int intErrCodeInitialSocket = _connector.InitialiseSocket();
            if (intErrCodeInitialSocket == 0)
            {
                //return "Socket() Error";
                return false;
            }
            else if (intErrCodeInitialSocket == 1)
            {
                //return "bind() Error";
                return false;
            }
            else
            {
                //success
            }
            //return "Success";
            return true;
        }

        public string SearchDevice()
        {
            int intErrCode = _connector.FindDevices();
            if (intErrCode == 0)
            {
                return "getsockopt error";
            }
            else if (intErrCode == 1)
            {
                return "Search Devices Success";
            }
            else
            {
                return String.Concat("WSALookupServiceBegin error code is ", intErrCode);
            }
        }

        public bool RegisterBlueToothService()
        {
            bool IsRegisterSuccess = false;
            int errCode = _connector.RegisterBTHService();
            switch (errCode)
            {
                case 0:
                    //strReturn = "Allocate error";
                    IsRegisterSuccess = false;
                    break;
                case 1:
                    //strReturn = "WSASetService() Error";
                    IsRegisterSuccess = false;
                    break;
                case 2:
                    //strReturn = "WSASetService() success";
                    IsRegisterSuccess = true;
                    break;
                default:
                    break;
            }
            return IsRegisterSuccess;
        }

        public string ShowDeviceName(int intDeviceNum)
        {
            return _connector.GetDeviceName(intDeviceNum);
        }

        public string ShowDeviceAddress(int intDeviceNum)
        {
            return _connector.GetDeviceAddress(intDeviceNum);
        }


        
        public bool ListenConnection()
        {
            int errCode = _connector.ListenMsg();
            bool IsListeningSuccess = false;
            switch (errCode)
            {
                case 0:
                    //strReturn = "Listen() failed";
                    IsListeningSuccess = false;
                    break;
                case 1:
                    //strReturn = "listen success";
                    IsListeningSuccess = true;
                    break;
                default:
                    break;
            }
            return IsListeningSuccess;
        }
        public int Send(string strMsg)
        {
            return _connector.SendMsg(strMsg);
        }

        private string Recv()
        {
            return _connector.RecieveMsg();
        }

        public bool SendMessage(string strMsg)
        {
            byte[] tmpByte = Encoding.Unicode.GetBytes(strMsg);
            string strB64Msg = Convert.ToBase64String(tmpByte, 0, tmpByte.GetLength(0));
            int len = strB64Msg.Length;
            int SendNum = len / PACKETSIZE;
            int LastPktSize = len - ((SendNum) * PACKETSIZE);
            string strTmp = "";
            string strPackInfo = "";
            strPackInfo = Convert.ToString(SendNum);
            strPackInfo += "|" + Convert.ToString(LastPktSize).PadLeft(2);

            if (len <= 45)
            {
                strPackInfo += "|" + strB64Msg.PadRight(45);
                _connector.SendMsg(strPackInfo);
                return true;
            }
            _connector.SendMsg(strPackInfo);
            while ((SendNum > 0) && (!IsDisconnected()))
            {
                strTmp = strB64Msg.Substring(0, PACKETSIZE);
                _connector.SendMsg(strTmp);
                if (IsDisconnected())
                {
                    break;
                }
                strB64Msg = strB64Msg.Remove(0, PACKETSIZE);
                SendNum--;
            }

            if (IsDisconnected())
            {
                return false;
            }
            if ((strB64Msg.Length > 0) && (!IsDisconnected()))
            {
                _connector.SendMsg(strB64Msg);
            }
            return true;
        }

        public string SendData(string strMsg)
        {
            int len = strMsg.Length;
            int SendNum = len / PACKETSIZE;
            int LastPktSize = len - ((SendNum) * PACKETSIZE);
            string strTmp = "";
            string strPacketData = "";
            strPacketData = Convert.ToString(SendNum);
            strPacketData += "|" + Convert.ToString(LastPktSize);
            _connector.SendMsg(strPacketData.PadRight(PACKETSIZE));
            while ((SendNum > 0) && (!IsDisconnected()))
            {
                strTmp = strMsg.Substring(0, PACKETSIZE);
                _connector.SendMsg(strTmp);
                if (IsDisconnected())
                {
                    break;
                }
                strMsg = strMsg.Remove(0, PACKETSIZE);
                SendNum--;
            }
            if (IsDisconnected())
            {
                return "";
            }
            if ((LastPktSize > 0) && (!IsDisconnected()))
            {
                _connector.SendMsg(strMsg);
            }
            return "";
        }

        public string RecieveMessage()
        {
            char[] sperator = new char[1];
            sperator[0] = '|';
            string[] strPackInfo;
            string strB64RecvMsg = "";
            string strB64Msg = "";
            string strMsg = "";
            string strLastPack = "";
            int RecvNum = 0;
            int LastPack = 0;
            byte[] B64byte;
            strB64RecvMsg = _connector.RecieveMsg();
            if (strB64RecvMsg.Length == 0)
            {
                return "";
            }

            strPackInfo = strB64RecvMsg.Split(sperator);
            try
            {
                RecvNum = Convert.ToInt32(strPackInfo[0]);
                LastPack = Convert.ToInt32(strPackInfo[1]);
            }
            catch
            {
                return "Error Message -- catch";
            }

            if((RecvNum == 0)&&(LastPack <=45)){
                try
                {
                    B64byte = Convert.FromBase64String(strB64RecvMsg.Substring(5, LastPack));
                    strMsg = System.Text.Encoding.Unicode.GetString(B64byte, 0, B64byte.GetLength(0));
                }
                catch
                {
                    strMsg = "Error Message -- FromB64";
                }
                return strMsg;
            }
            while ((RecvNum>0)&&(!IsDisconnected()))
            {
                strB64RecvMsg = _connector.RecieveMsg();
                if (strB64RecvMsg.Length == 0)
                {
                    return "Error Message -- while loop";
                }
                strB64Msg += strB64RecvMsg;
                RecvNum--;
            }
            if(IsDisconnected())
            {
                return "Error Message -- Disconnect";
            }
            if (LastPack > 0)
            {
                strLastPack = _connector.RecieveMsg();
                strB64Msg += strLastPack.Substring(0, LastPack);
            }
            
            if (strB64Msg.Length == 0)
            {
                return "Error Message -- Length0";
            }
            try
            {
                B64byte = Convert.FromBase64String(strB64Msg);
                strMsg = System.Text.Encoding.Unicode.GetString(B64byte, 0, B64byte.GetLength(0));
            }
            catch
            {
                strMsg = "Error Message -- FromB64";
            }
            return strMsg;
        }

        public string AcceptConnection()
        {
            string strReturn = "";
            int errCode = _connector.AcceptMsg();
            if (errCode == 1)
                strReturn = "Client Connected";
            return strReturn;

        }
        public void Close()
        {
            _connector.TerminateSocket();
            _connector.TerminateWinsock();
        }
        public bool IsDisconnected()
        {
           return  _connector.IsDisconnect();
        }

    }
}

⌨️ 快捷键说明

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