コード例 #1
0
ファイル: CSerSocket.cs プロジェクト: axinken/MyProject
        public CSerSocket(int slotMax)
        {
            try
            {
                SLOT_MAX = slotMax;

                //初始化结构体应答信息

                socket_reponse = new SOCKET_REQUEST();

                socket_reponse.UUT = new SOCKET_UUT[SLOT_MAX];

                for (int i = 0; i < SLOT_MAX; i++)
                {
                    socket_reponse.UUT[i] = new SOCKET_UUT();
                }

                REQUEST_LEN = CStuct <SOCKET_REQUEST> .GetStuctLen(socket_reponse);

                //初始化JSON应答信息

                json_reponse = new CJSON_REQUEST();

                json_reponse.Name = string.Empty;

                json_reponse.IdCard = string.Empty;

                json_reponse.Model = string.Empty;

                json_reponse.OrderName = string.Empty;

                json_reponse.MesFlag = 0;

                json_reponse.Ready = 0;

                json_reponse.UUT = new List <CJSON_UUT>();

                for (int i = 0; i < SLOT_MAX; i++)
                {
                    json_reponse.UUT.Add(new CJSON_UUT
                    {
                        Result   = 0,
                        SerialNo = string.Empty
                    });
                }
            }
            catch (Exception)
            {
            }
        }
コード例 #2
0
ファイル: udcTcpRecv.cs プロジェクト: axinken/MyProject
        public void SetStatus(byte[] rbytes)
        {
            if (this.InvokeRequired)
            {
                this.Invoke(new Action <byte[]>(SetStatus), rbytes);
            }
            else
            {
                try
                {
                    if (recvBytes != null && recvBytes.Equals(rbytes))
                    {
                        return;
                    }

                    recvBytes = (byte[])rbytes.Clone();

                    SOCKET_REQUEST request = CStuct <SOCKET_REQUEST> .BytesToStruct(recvBytes);

                    labCmd.Text = request.CmdNo.ToString();

                    labName.Text = request.Name;

                    labStatus.Text = request.ErrCode.ToString();

                    if (request.ErrCode == ESOCKET_ERROR.OK)
                    {
                        labStatus.ForeColor = Color.Blue;
                    }
                    else
                    {
                        labStatus.ForeColor = Color.Red;
                    }

                    rtbSnList.Clear();

                    if (request.Ready == 0)
                    {
                        labReady.Text      = CLanguage.Lan("治具未就绪");
                        labReady.ForeColor = Color.Red;
                        labModel.Text      = "----";
                        labIdCard.Text     = "----";
                    }
                    else
                    {
                        if (request.Ready == 1)
                        {
                            labReady.Text = CLanguage.Lan("前工位");
                        }
                        else
                        {
                            labReady.Text = CLanguage.Lan("后工位");
                        }

                        labReady.ForeColor = Color.Blue;

                        labIdCard.Text = request.IdCard;

                        labModel.Text = request.Model;

                        for (int i = 0; i < request.UUT_NUM; i++)
                        {
                            string sn = CLanguage.Lan("条码") + "【" + (i + 1).ToString() + "】:" + request.UUT[i].SerialNo +
                                        ";" + CLanguage.Lan("结果") + "=" + request.UUT[i].Result.ToString() + "\r\n";

                            rtbSnList.AppendText(sn);
                        }
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }
コード例 #3
0
ファイル: CSerSocket.cs プロジェクト: axinken/MyProject
        /// <summary>
        /// 自定义结构体应答客户端数据
        /// </summary>
        /// <param name="recvData"></param>
        /// <returns></returns>
        public byte[] ReponseStruct(byte[] recvBytes)
        {
            try
            {
                //接收字节长度
                if (recvBytes.Length != REQUEST_LEN)
                {
                    socket_reponse.CmdNo   = ESOCKET_CMD.NG;
                    socket_reponse.Name    = "";
                    socket_reponse.ErrCode = ESOCKET_ERROR.COMMAND_LENTH_ERROR;
                    socket_reponse.Ready   = 0;
                    socket_reponse.UUT_NUM = 0;
                    return(CStuct <SOCKET_REQUEST> .StructToBytes(socket_reponse));
                }

                SOCKET_REQUEST socketQuest = CStuct <SOCKET_REQUEST> .BytesToStruct(recvBytes);

                //站别名称
                string statName = socketQuest.Name;

                if (!StatIdList.ContainsKey(statName))
                {
                    socket_reponse.CmdNo   = ESOCKET_CMD.NG;
                    socket_reponse.Name    = socketQuest.Name;
                    socket_reponse.ErrCode = ESOCKET_ERROR.STATION_IS_NOT_EXIST;
                    socket_reponse.Ready   = 0;
                    socket_reponse.UUT_NUM = 0;
                    return(CStuct <SOCKET_REQUEST> .StructToBytes(socket_reponse));
                }

                int statId = StatIdList[statName];

                //命令类型
                switch (socketQuest.CmdNo)
                {
                case ESOCKET_CMD.QUERY_STATE:
                    socket_reponse.CmdNo   = ESOCKET_CMD.STATE_OK;
                    socket_reponse.Name    = socketQuest.Name;
                    socket_reponse.IdCard  = StatRunList[statId].IdCard;
                    socket_reponse.Model   = StatRunList[statId].ModelName;
                    socket_reponse.MesFlag = StatRunList[statId].MesFlag;
                    if (StatRunList[statId].DoRun == ERUN.空闲 || StatRunList[statId].DoRun == ERUN.测试结束)
                    {
                        socket_reponse.ErrCode = ESOCKET_ERROR.OK;
                        socket_reponse.Ready   = 0;
                        socket_reponse.UUT_NUM = StatRunList[statId].SlotNum;
                        for (int i = 0; i < socket_reponse.UUT_NUM; i++)
                        {
                            socket_reponse.UUT[i].SerialNo = string.Empty;
                            socket_reponse.UUT[i].Result   = 0;
                            StatRunList[statId].Result[i]  = 0;
                        }
                    }
                    else
                    {
                        int ready = StatRunList[statId].SubNo;
                        socket_reponse.ErrCode = ESOCKET_ERROR.OK;
                        socket_reponse.Ready   = ready;
                        socket_reponse.UUT_NUM = StatRunList[statId].SlotNum;
                        for (int i = 0; i < socket_reponse.UUT_NUM; i++)
                        {
                            socket_reponse.UUT[i].SerialNo = StatRunList[statId].SerialNos[i];
                            socket_reponse.UUT[i].Result   = 0;
                        }
                    }
                    break;

                case ESOCKET_CMD.START_TEST:
                    if (StatRunList[statId].DoRun == ERUN.空闲)
                    {
                        socket_reponse.CmdNo   = ESOCKET_CMD.NG;
                        socket_reponse.Name    = socketQuest.Name;
                        socket_reponse.ErrCode = ESOCKET_ERROR.STATION_IS_NOT_READY;
                        socket_reponse.Ready   = 0;
                        socket_reponse.UUT_NUM = 0;
                        return(CStuct <SOCKET_REQUEST> .StructToBytes(socket_reponse));
                    }
                    else
                    {
                        socket_reponse.ErrCode = ESOCKET_ERROR.OK;
                        socket_reponse.CmdNo   = ESOCKET_CMD.START_OK;
                        socket_reponse.Name    = socketQuest.Name;
                        socket_reponse.IdCard  = StatRunList[statId].IdCard;
                        socket_reponse.Model   = StatRunList[statId].ModelName;
                        socket_reponse.MesFlag = StatRunList[statId].MesFlag;
                        socket_reponse.Ready   = StatRunList[statId].SubNo;
                        socket_reponse.UUT_NUM = StatRunList[statId].SlotNum;
                        for (int i = 0; i < socket_reponse.UUT_NUM; i++)
                        {
                            socket_reponse.UUT[i].SerialNo = StatRunList[statId].SerialNos[i];
                            socket_reponse.UUT[i].Result   = 0;
                            StatRunList[statId].Result[i]  = 0;
                        }
                        StatRunList[statId].DoRun = ERUN.测试中;
                    }
                    break;

                case ESOCKET_CMD.END_TEST:
                    if (StatRunList[statId].DoRun == ERUN.空闲)
                    {
                        socket_reponse.CmdNo   = ESOCKET_CMD.NG;
                        socket_reponse.Name    = socketQuest.Name;
                        socket_reponse.ErrCode = ESOCKET_ERROR.STATION_IS_NOT_READY;
                        socket_reponse.Ready   = 0;
                        socket_reponse.UUT_NUM = 0;
                        return(CStuct <SOCKET_REQUEST> .StructToBytes(socket_reponse));
                    }
                    else
                    {
                        socket_reponse.ErrCode = ESOCKET_ERROR.OK;
                        socket_reponse.CmdNo   = ESOCKET_CMD.END_OK;
                        socket_reponse.Name    = socketQuest.Name;
                        socket_reponse.IdCard  = StatRunList[statId].IdCard;
                        socket_reponse.Model   = StatRunList[statId].ModelName;
                        socket_reponse.MesFlag = StatRunList[statId].MesFlag;
                        socket_reponse.Ready   = StatRunList[statId].SubNo;
                        socket_reponse.UUT_NUM = StatRunList[statId].SlotNum;
                        for (int i = 0; i < StatRunList[statId].SlotNum; i++)
                        {
                            socket_reponse.UUT[i].SerialNo = StatRunList[statId].SerialNos[i];
                            StatRunList[statId].Result[i]  = socketQuest.UUT[i].Result;
                        }
                        StatRunList[statId].DoRun = ERUN.测试结束;
                    }
                    break;

                default:
                    socket_reponse.CmdNo   = ESOCKET_CMD.NG;
                    socket_reponse.ErrCode = ESOCKET_ERROR.COMMAND_IS_NOT_DEFINE;
                    socket_reponse.Ready   = 0;
                    socket_reponse.UUT_NUM = 0;
                    break;
                }
                return(CStuct <SOCKET_REQUEST> .StructToBytes(socket_reponse));
            }
            catch (Exception)
            {
                socket_reponse.CmdNo   = ESOCKET_CMD.NG;
                socket_reponse.ErrCode = ESOCKET_ERROR.SYSTEM_ERROR;
                socket_reponse.Ready   = 0;
                socket_reponse.UUT_NUM = 0;
                return(CStuct <SOCKET_REQUEST> .StructToBytes(socket_reponse));
            }
            finally
            {
            }
        }