mobile CCTV,mobile surveillance,police body worn cameras

标题: 请教 C# 调用sdk登录服务器报错 [打印本页]

author: cus1    time: 2018-8-19 13:19
标题: 请教 C# 调用sdk登录服务器报错


  var res = BVCUFuc.BVCU_Login(ref zhizhen, ref serverHandle);

返回报 BVCU_RESULT_E_BADSTATE 内部状态错误,是什么原因呢,传参不符的话应该报BVCU_RESULT_E_INVALIDARG 这个吧

author: admin    time: 2018-8-19 17:02
你登哪个服务器?用C/S软件测试OK?
author: cus1    time: 2018-8-20 11:19
admin post on2018-8-19 17:02
你登哪个服务器?用C/S软件测试OK?

是用的winform程序,调sdk的BVCU_Login函数,服务器Ip和端口随便写的,只是看不懂返回的内部状态错误
author: admin    time: 2018-8-20 11:42
最好还是实际搭建一个server测试,不能乱输入。
用手机录传软件MPU APP来仿真实际4G图传设备(安卓4G图传头盔、4G图传执法记录仪、微型4G DVR/无人机图传、车载NVR)进行系统测试(录像-实时图传-对讲PoC-定位轨迹-抓拍上传)(包含所有软件的开放下载的网盘地址,熟悉平台操作),全部开放免费下载使用:
http://www.besovideo.com/chn/articles/mpuhowto.asp
author: cus2    time: 2018-8-21 10:33
admin post on2018-8-20 11:42
最好还是实际搭建一个server测试,不能乱输入。
用手机录传软件MPU APP来仿真实际4G图传设备(安卓4G图传头 ...

今天用了测试服务器120.25.247.85 :9701,C# 调sdk函数返回参数不合法,
        /// <summary>
        /// 登录服务器
        /// </summary>
        /// <param name="session"> out </param>
        [DllImport("libBVCU.dll", CallingConvention = CallingConvention.Cdecl)]
        public static extern int BVCU_Login(ref IntPtr phSession, ref BVCU_ServerParam pParam);

     /// <summary>
        /// 登录服务器参数
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct BVCU_ServerParam
        {
            public int iSize;
            public IntPtr pUserData;
            public byte[] szServerAddr;
            public int iServerPort;
            public byte[] szClientID;
            public byte[] szUserAgent;
            public byte[] szUserName;
            public byte[] szPassword;
            public byte[] szUKeyID;
            public byte[] szUkeyCode;
            public int iCmdProtoType;
            public int iTimeOut;

            [MarshalAs(UnmanagedType.FunctionPtr)]
            public ServerEventCB OnEvent;

            [MarshalAs(UnmanagedType.FunctionPtr)]
            public ServerNotifyBack OnNotify;

            [MarshalAs(UnmanagedType.FunctionPtr)]
            public ServerCommandCB OnCommand;
        }

  代码有问题吗


author: Mitarai    time: 2018-8-21 10:48
cus2 post on2018-8-21 10:33
今天用了测试服务器120.25.247.85 :9701,C# 调sdk函数返回参数不合法,
        ///
        /// 登 ...

您好,把调用BVCU_Login接口的那部分代码贴出来看一下
author: cus2    time: 2018-8-21 11:04
Mitarai post on2018-8-21 10:48
您好,把调用BVCU_Login接口的那部分代码贴出来看一下

       public bool login(string ip, int port, string usrName, string psw)
        {
            m_server.ip = ip;
            m_server.port = port;
            m_server.usrName = usrName;
            m_server.psw = psw;
            m_server.ukeyid = "";
            m_server.ukeycode = "";
            m_serverParam = new BVCU_ServerParam
            {
                iSize = System.Runtime.InteropServices.Marshal.SizeOf(m_serverParam),
                pUserData = IntPtr.Zero,
                szServerAddr = Encoding.UTF8.GetBytes(ip),
                iServerPort = port,
                szClientID = Encoding.UTF8.GetBytes(""),
                szUserAgent = Encoding.UTF8.GetBytes("login_server"),
                szUserName = Encoding.UTF8.GetBytes("admin"),
                szPassword = Encoding.UTF8.GetBytes("123456"),
                iCmdProtoType = 0,
                iTimeOut = 60 * 1000,
                OnNotify = new EventHandle().NotigfBack,
                OnEvent = new EventHandle().EventCB,
                OnCommand = new EventHandle().CommandCB
            };
            try
            {
                int ret = BVCUFuc.BVCU_Login(ref session, ref m_serverParam);
                BVCU.FAILED(ret);
                // 登录成功
                // ------------------------------ 获取登录(Session)信息 ------------------------------
                var res = BVCUFuc.BVCU_GetSessionInfo(session, ref bs);
            }
            catch (Exception ex)
            {
                Console.WriteLine("1212");
            }
            return true;
        }



            #region 登录服务器
            Session sd = new Session();
            sd.login("120.25.247.85", 9701, "admin", "123456");

            #endregion

author: Mitarai    time: 2018-8-21 11:19
cus2 post on2018-8-21 11:04
public bool login(string ip, int port, string usrName, string psw)
        {
             ...

你好,BVCU_ServerParam中的szClientID 不可为空,可填写类似"CU_12345678"这样的字符串
author: cus2    time: 2018-8-21 11:47
Mitarai post on2018-8-21 11:19
你好,BVCU_ServerParam中的szClientID 不可为空,可填写类似"CU_12345678"这样的字符串

给了还是不行,我是根据客户端开发手册来的,上面写着可空.您这边看下是不参数类型,数据结构不对呢
author: admin    time: 2018-8-21 14:44
直接用我们的winformdemo如何呢?那个应该是直接可用的。
author: cus2    time: 2018-8-21 15:45
admin post on2018-8-21 14:44
直接用我们的winformdemo如何呢?那个应该是直接可用的。

你们的demo有在参照用啊,现在的问题是不好解决了吗
author: admin    time: 2018-8-21 15:47
不是,我是不了解,我们的DEMO里面就有登录服务器,获取设备列表的功能,
如果那个DEMO直接可用,为啥你的代码不可用?

author: cus2    time: 2018-8-21 15:57
admin post on2018-8-21 14:44
直接用我们的winformdemo如何呢?那个应该是直接可用的。

你们的demo和现有sdk手册的函数对不上啊,sdk包里面也是缺少一个 ManagedLayer.dll ,应该用的是2016版本的手册?
author: admin    time: 2018-8-21 17:10
嗯,研发嘛,文档永远滞后于代码。

author: Mitarai    time: 2018-8-27 18:06
cus2 post on2018-8-21 15:57
你们的demo和现有sdk手册的函数对不上啊,sdk包里面也是缺少一个 ManagedLayer.dll ,应该用的是2016版本 ...

你好,sdk中有ManagedLayer.dll的源码,编译后就可以使用,建议C#开发使用ManagedLayer接口,我们的C#示例都是用这个dll接口的。




欢迎光临 mobile CCTV,mobile surveillance,police body worn cameras (http://bbs.besovideo.com:8067/) Powered by Discuz! X3.2