예제 #1
0
        /*
         * 声音
         * 显示牌
         * 摄像
         * 用户界面
         * 网络中心
         */

        protected override void ExamStart()
        {
            if (cand != null)
            {
                cand.Ksy1 = comboBox1.Text;
                cand.Ksy2 = comboBox2.Text;

                if (examTimes == 0)
                {
                    SoundChange(cand.Xm + ",请上车,开始考试!");
                }
                else
                {
                    SoundChange(cand.Xm + ",第二回合开始考试!");
                }

                LEDDisplayChange("正在考试");

                CameraChannelChange(settings.CameraConfig.GaoChannel);


                if (examTimes == 0)
                {
                    EnableCtrl(this.btnXReject, false);
                }

                CNetData tmpdata = new CNetData();
                tmpdata.cmdCommand = Command.Ksks;
                tmpdata.intDevnum  = settings.Devnum;
                Client.SendData(tmpdata);
            }
        }
예제 #2
0
    public CNetData Encode(CMessage msg)
    {
        ushort   id   = msg.GetID();
        CNetData data = new CNetData(4096);

        SGTMsgHeader head = new  SGTMsgHeader();

        head.wMsgID = id;
        head.Encode(data);

        EncoderFunc pfnEncode = FindEncodeFunc(id);

        if (null == pfnEncode)
        {
            return(null);
        }
        if (-1 == pfnEncode(msg, ref data))
        {
            return(null);
        }
        head.wDataLen  = (ushort)(data.GetDataLen() - 8);
        head.wCheckSum = (ushort)((head.wDataLen ^ 0xBBCC) & 0x88AA);
        data.Replace(0, BitConverter.GetBytes(CNetData.Inverse(head.wCheckSum)));
        data.Replace(4, BitConverter.GetBytes(CNetData.Inverse(head.wDataLen)));
        return(data);
    }
예제 #3
0
    public void     OnRecv(byte[] buffer, int offset)
    {
        CNetData data = new CNetData();

        data.Prepare(buffer, offset);

        SGTMsgHeader head = new  SGTMsgHeader();

        head.Decode(data);

        CMessage msg = Decode((ushort)head.wMsgID, data);

        //Debug.Log("Recv=" + msg.GetType().ToString());
        if (msg != null)
        {
            lock (m_lock)
            {
                m_MessageList.Add(msg);
            }
        }
        else
        {
            Debug.Log(head.wMsgID.ToString() + " Decode Failed!");
        }
    }
예제 #4
0
 public bool     Send(CMessage msg)
 {
     if (msg == null)
     {
         return(false);
     }
     if (msg.GetID() == 0xffff)
     {
         return(false);
     }
     if (m_bConnect)
     {
         CNetData data = SGDP.GetInstance().Encode(msg);
         if (data == null)
         {
             return(false);
         }
         //Debug.Log("Send=" + msg.GetType().ToString());
         if (!m_Send.Send(ref data))
         {
             Debug.Log("Send Message DisConnect");
             DisConnect();
             return(false);
         }
     }
     return(true);
 }
        private void treeViewParaman_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (e.Node.Nodes.Count > 0)
            {
                return;
            }

            listViewParm.Items.Clear();

            int fileNo = 0;
            int recNo  = 0;

            if (e.Node.Parent == null)
            {
                fileNo = e.Node.Index;
                recNo  = 0;
            }
            else
            {
                fileNo = e.Node.Parent.Index;
                recNo  = e.Node.Index;
            }

            short clientNo = CNetData.GetActiveClientNo();
            int   ret      = AddParItemFrmNet(fileNo, recNo, clientNo);

            if (ret < 0)
            {
                MessageBox.Show("网络读取参数出错!");
            }
        }
예제 #6
0
        /*
         * 考生数据处理(次数+1、状态置为1、考试成绩、设置回合数、考试结果信息、)
         * 用户界面(考试合格提示框,更新结果信息面板)
         * 声音(姓名+考试结果+考试结束)
         * 显示牌(考试结果)
         * 存盘打印
         * 网络中心通信
         */
        protected override void ExamPass(string msg)
        {
            examTimes = examTimes + 1;
            if (cand != null)
            {
                cand.Kscs++;
                cand.Zt   = "1";
                cand.Kscj = 100;

                if (examTimes == 1)
                {
                    cand.KS1 = msg;
                }
                if (examTimes == 2)
                {
                    cand.KS2 = msg;
                }

                SoundChange(cand.Xm + "," + msg + ",考试结束。");
                LEDDisplayChange(msg);
                ExamResultReady(examTimes, msg);

                ShowMsgBox(this, msg);
                StoreAndPrint();

                CNetData tmpdata = new CNetData();
                tmpdata.cmdCommand = Command.Kswc;
                tmpdata.intDevnum  = settings.Devnum;
                tmpdata.strZjbh    = cand.Zkzmbh;
                Client.SendData(tmpdata);
            }


            ResetPanel();
        }
예제 #7
0
 public static uint      ParsePackage(ref byte[] data, uint offset, uint size)
 {
     //包头不完整
     if (size < 14)
     {
         return(0);
     }
     else
     {
         int    temp     = (int)offset + DATA_LEN_OFFSET;
         ushort iDataLen = CNetData.Inverse(Helper.ReadU16(data, ref temp));
         temp = (int)offset + MSG_OFFSET;
         ushort iMsgID = CNetData.Inverse(Helper.ReadU16(data, ref temp));
         {
             if (iDataLen + 8 <= size)              //大于一个包
             {
                 return((uint)iDataLen + 8);
             }
             else                  //包内容不完整
             {
                 return(0);
             }
         }
     }
 }
예제 #8
0
        //申请考试
        private void ButtonStart_Click(object sender, EventArgs e)
        {
            CNetData GetStudent_data = new CNetData();

            GetStudent_data.cmdCommand = Command.GetStudent;
            GetStudent_data.intDevnum  = settings.Devnum;
            Client.SendData(GetStudent_data);
        }
예제 #9
0
 public void    Decode(CNetData data)
 {
     data.Del(ref wCheckSum);
     data.Del(ref wMark);
     data.Del(ref wDataLen);
     data.Del(ref byFlags);
     data.Del(ref byOptLen);
     data.Del(ref wMsgID);
     data.Del(ref dwTransID);
 }
예제 #10
0
 public void    Encode(CNetData data)
 {
     data.Add(wCheckSum);
     data.Add(wMark);
     data.Add(wDataLen);
     data.Add(byFlags);
     data.Add(byOptLen);
     data.Add(wMsgID);
     data.Add(dwTransID);
 }
예제 #11
0
        //拒绝考生
        private void btnXReject_Click(object sender, EventArgs e)
        {
            CNetData data = new CNetData();

            data.cmdCommand = Command.Jjks;
            data.intDevnum  = settings.Devnum;
            data.strZjbh    = cand.Zkzmbh;
            Client.SendData(data);

            ResetPanel();
        }
예제 #12
0
    public CMessage Decode(ushort iMsgID, CNetData data)
    {
        DecoderFunc pfnDecode = FindDecodeFunc(iMsgID);

        if (null == pfnDecode)
        {
            return(null);
        }

        return(pfnDecode(ref data));
    }
예제 #13
0
        //关闭资源
        public override void CloseResources()
        {
            base.CloseResources();
            CNetData data = new CNetData();

            data.cmdCommand = Command.Logout;
            data.intDevnum  = settings.Devnum;
            data.strZjbh    = null;
            Client.SendData(data);
            Client.Close();
        }
예제 #14
0
        //网络事件
        private void Client_Event_Devnetdata(CNetData data)
        {
            switch (data.cmdCommand)
            {
            case Command.Zkzhm:
                cand = DALcand.GetStudentInfo(data.strZjbh);
                if (cand != null)
                {
                    EnableAndSetText(this.label_xm, true, "姓名:" + cand.Xm);
                    EnableAndSetText(this.label_lsh, true, "流水号:" + cand.Lsh);
                    EnableAndSetText(this.label_zkzhm, true, "准考证:" + cand.Zkzmbh);
                    EnableAndSetText(this.label_sfzhm, true, "身份证:" + cand.Sfzmhm);
                    EnableAndSetText(this.label_kscx, true, "考试车型:" + cand.Kscx);
                    EnableAndSetText(this.label_kscs, true, "考试次数:" + cand.Kscs.ToString());
                    EnableAndSetText(this.label_jbr, true, "经办人:" + cand.Jbr);
                    EnableAndSetText(this.label_kchp, true, "考车号牌:" + cand.Kchp);
                    EnableCtrl(this.btnXReject, true);
                    EnableCtrl(this.ButtonStart, false);

                    if (this.ExamCtrl != null)
                    {
                        EnableCtrl(this.ExamCtrl, true);
                        LEDDisplayChange(cand.Xm);
                    }
                }
                break;

            case Command.AddStudent:
                if (candQuery != null)
                {
                    candQuery.AddCandidate(data.strZjbh, data.Xm);
                }
                break;

            case Command.DeleteStudent:
                if (candQuery != null)
                {
                    candQuery.DeleteCandidate(data.strZjbh);
                }
                break;

            case Command.ClearStudent:
                if (candQuery != null)
                {
                    candQuery.ClearCandidate();
                }
                break;
            }
        }
예제 #15
0
    public bool Send(ref CNetData sendData)
    {
        int iSend = 0;

        lock (m_Lock)
        {
            try
            {
                iSend = m_Socket.Send(sendData.m_Buffer, sendData.m_iPos, 0);
            }
            catch (Exception e)
            {
                SGDP.DebugPrint(e.Message);
                return(false);
            }
        }
        return(true);
    }
예제 #16
0
        private void NetStudentinforPanel_Load(object sender, EventArgs e)
        {
            DALcand = new NetDALCandidate(settings);
            try
            {
                //准备客户端连接
                Client = new CNetClient(settings.ServerIP, settings.Devnum);
                Client.Connect();
                Client.Event_Devnetdata += new CNetClient.D_DEVNETDATA(Client_Event_Devnetdata);

                //更新排队列表
                CNetData data = new CNetData();
                data.cmdCommand = Command.Updatelist;
                data.intDevnum  = settings.Devnum;
                Client.SendData(data);
            }
            catch
            {
                MessageBox.Show("不能与点名中心建立网络连接", settings.Devnum.ToString());
            }
        }
예제 #17
0
        protected override void ExamFail(string msg)
        {
            examTimes = examTimes + 1;
            if (cand != null)
            {
                if (examTimes == 1)
                {
                    cand.Kfxm = CKfxm.GetKfxm(msg);
                    cand.KS1  = msg;
                    SoundChange(cand.Xm + "," + msg + ",第一回合结束。");
                }
                if (examTimes == 2)
                {
                    cand.Kfxm = cand.Kfxm.Trim() + "," + CKfxm.GetKfxm(msg).Trim();
                    cand.Kscs++;
                    cand.Zt   = "2";
                    cand.Kscj = 0;
                    cand.KS2  = msg;
                    SoundChange(cand.Xm + "," + msg + ",考试结束。");
                    StoreAndPrint();

                    CNetData tmpdata = new CNetData();
                    tmpdata.cmdCommand = Command.Kswc;
                    tmpdata.intDevnum  = settings.Devnum;
                    tmpdata.strZjbh    = cand.Zkzmbh;
                    Client.SendData(tmpdata);
                }
                LEDDisplayChange(msg);
                ExamResultReady(examTimes, msg);

                ShowMsgBox(this, msg);
            }

            if (examTimes == 2)
            {
                ResetPanel();
            }
        }
        public void InitParamanTreeView()
        {
            if (isParmanRead)
            {
                return;
            }

            treeViewParaman.Nodes.Clear();

            short clientNo = CNetData.GetActiveClientNo();

            if (NetDll.HncNetIsConnect(clientNo) == 0)
            {
                treeViewParaman.Nodes.Add(new TreeNode(STR_NO_CONNECTION));
            }
            else
            {
                int ret = AddParamanItemFrmNet(clientNo);
                if (ret < 0)
                {
                    MessageBox.Show("网络读取参数结构错误!");
                }
            }
        }