예제 #1
0
        bool SetTemp(int _iCh, int _iTemp)
        {
            if (_iCh < 1 || _iCh > 9)
            {
                return(false);
            }
            if (_iTemp < 0)
            {
                _iTemp = 0;
            }
            if (_iTemp > MAX_MC9_CH)
            {
                _iTemp = MAX_MC9_CH;
            }

            string sSendMsg;

            sSendMsg  = "01";  //컨트롤러 아이디 한개만 쓰기에 무조건 1
            sSendMsg += "DWR"; //D레지스터에 여러개 한번에 쓰는 명령.
            sSendMsg += ",";
            sSendMsg += "01";  //데이터 갯수.. 1개
            sSendMsg += ",";
            if (_iCh < 5)
            {
                sSendMsg += (1001 + (_iCh - 1) * 8).ToString();           //온도 세팅 하는 메모리 1001번 부터 시작. 1번채널 1번존  존의 개념을 모르겠음.
            }
            else
            {
                sSendMsg += (1101 + (_iCh - 5) * 8).ToString();  //온도 세팅 하는 메모리 1001번 부터 시작. 1번채널 1번존  존의 개념을 모르겠음.
            }
            sSendMsg            += ",";
            sSendMsg            += string.Format("{0:XXXX}", _iTemp);//IntToHex(_iTemp, 4); //의 반대는 StrToInt
            m_iSetTemp[_iCh - 1] = _iTemp;
            bool bRet;

            bRet = SendMsg(sSendMsg);

            m_eSendCmd = MC9_CMD.SetTemp;

            return(bRet);
        }
예제 #2
0
        bool RqstCrntTemp()
        {
            string sSendMsg;

            sSendMsg  = "01";                                //컨트롤러 아이디 한개만 쓰기에 무조건 1
            sSendMsg += "DRR";                               //D레지스터에 여러개 한번에 요청 명령.
            sSendMsg += ",";
            sSendMsg += string.Format("{0:00}", MAX_MC9_CH); //데이터 갯수.. 8개
            for (int i = 1; i <= MAX_MC9_CH; i++)
            {
                sSendMsg += ",";
                sSendMsg += string.Format("{0:0000}", i); //현제 온도 메모리 영역 0001~0008
            }
            bool bRet;

            bRet = SendMsg(sSendMsg);

            m_eSendCmd = MC9_CMD.RqstCrntTemp;

            return(bRet);
        }
예제 #3
0
        bool SetTempAll(int [] _iaTemp)
        {
            string sSendMsg;

            m_iSetTemp = _iaTemp;
            //for(int i = 0 ; i < MAX_MC9_CH ; i++){
            //    m_iSetTemp[i] = _iTemp ;
            //}

            sSendMsg  = "01";                                //컨트롤러 아이디 한개만 쓰기에 무조건 1
            sSendMsg += "DWR";                               //D레지스터에 여러개 한번에 쓰는 명령.
            sSendMsg += ",";
            sSendMsg += string.Format("0:0000", MAX_MC9_CH); //데이터 갯수.. 8개
            for (int i = 1; i <= MAX_MC9_CH; i++)
            {
                sSendMsg += ",";
                if (i < 5)
                {
                    sSendMsg += (1001 + (i - 1) * 8).ToString();          //온도 세팅 하는 메모리 1001번 부터 시작. 1번채널 1번존  존의 개념을 모르겠음.
                }
                else
                {
                    sSendMsg += (1101 + (i - 5) * 8).ToString();          //온도 세팅 하는 메모리 1001번 부터 시작. 1번채널 1번존  존의 개념을 모르겠음.
                }
                sSendMsg += ",";
                sSendMsg += string.Format("{0:XXXX}", m_iSetTemp[i - 1]);
            }

            bool bRet;

            bRet = SendMsg(sSendMsg);

            m_eSendCmd = MC9_CMD.SetTempAll;

            return(bRet);
        }
예제 #4
0
        /*  iHex1=iChksum/16;
         *  iHex2=iChksum%16;
         *  //sprintf(sHex,"%X%X",iHex1,iHex2);
         *  sReturn = sHex ;
         *  //Trace("m_pRS232C_Msg","4");
         *  return sReturn ;
         */

        protected override void DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            base.DataReceived(sender, e);

            if (!IsReceiveEnd())
            {
                return;
            }

            string sCheckStr;
            string sCheckSum;
            string sSum;

            sCheckStr = sRecvMsg.Substring(0, sRecvMsg.IndexOf("\r\n") - 4);
            sCheckSum = sRecvMsg.Substring(sRecvMsg.IndexOf("\r\n") - 2, 2);

            sSum = GetChksum(sCheckStr);

            if (bDispErr && sSum != sCheckSum)
            {
                Log.ShowMessage("Heater Com Err", "TempCon CheckSum is Wrong!!!!");
                bDispErr = false;
            }

            if (sRecvMsg.IndexOf("OK") >= 0)
            {
                if (bDispErr)
                {
                    Log.ShowMessage("Heater Com Err", "TempCon NG Received");
                    bDispErr = false;
                }
                return;
            }


            if (m_eSendCmd == MC9_CMD.None)
            {
            }
            else if (m_eSendCmd == MC9_CMD.RqstCrntTemp)
            {
                string sTempData;
                string sOneData;
                int    iTemp = 0;

                sTempData = sCheckStr;
                sTempData.Remove(0, sTempData.IndexOf("OK") + 3);
                for (int i = 0; i < MAX_MC9_CH; i++)
                {
                    sOneData = sTempData.Substring((5 * i), 4);
                    if (int.TryParse(sOneData, out iTemp))
                    {
                        m_iCrntTemp[i] = iTemp;
                    }
                }
            }
            else if (m_eSendCmd == MC9_CMD.SetTemp)
            {
            }
            else if (m_eSendCmd == MC9_CMD.SetTempAll)
            {
            }
            else
            {
            }

            m_eSendCmd = MC9_CMD.None;
        }