ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Word Read/Write 예제
    업무용 소스 예제 2021. 8. 21. 15:15
    728x90
    반응형
    728x90

    Word Read/Write 예제 첨부.

     

    마찬가지로 사용 시 수정 필요함.

     

    public string ReadWord(int idx, string address, int size, out string returnCode)
            {
                int retCode = -1;
                int[] returnDataint = new int[size];
                string returnDataString = "";
                string addresslog = "";
                returnCode = "-1";     
           
                try 
                {
                    address = address.Trim().ToUpper();
                    if (address.StartsWith("ZR")) 
                    {
                        addresslog = address.Trim().Substring(0, 2).ToUpper() + address.Trim().Substring(2).ToUpper().PadLeft(5, '0');
                    }
                    else 
                    {
                        addresslog = address.Trim().Substring(0, 1).ToUpper() + address.Trim().Substring(1).ToUpper().PadLeft(4, '0');
                    }
    
                    retCode = _MXComm.ReadDeviceBlock(address, size, out returnDataint[0]);
                    returnCode = Convert.ToString(retCode, 16);
    
                    for (int i = 0; i < size; i++) 
                    {
                        returnDataString += Convert.ToString(returnDataint[i], 16).ToUpper().PadLeft(4, '0');
                    }
                }
                catch (Exception ex) 
                {
                    lock (_lockEvent) 
                    {
                        _event.Enqueue("Exception" + "," + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff") + "," + ex.ToString().Replace(",", "-") + ": Address: " + address + " : size: " + size);
                    }
                }
                return returnDataString;
            }
    
            public void WriteWord(int idx, string address, string value, out string returnCode)
            {            
                int size = 0;
                int retCode = -1;
                int[] nValue;
                string addresslog = "";
                returnCode = "-1";   
             
                try
                {
                    address = address.Trim().ToUpper();
                    if (address.StartsWith("ZR")) 
                    {
                        addresslog = address.Trim().Substring(0, 2).ToUpper() + address.Trim().Substring(2).ToUpper().PadLeft(5, '0');
                    }
                    else {
                        addresslog = address.Trim().Substring(0, 1).ToUpper() + address.Trim().Substring(1).ToUpper().PadLeft(4, '0');
                    }
    
                    size = value.Trim().Length / 4;
                    nValue = new int[size];
    
                    for (int i = 0; i < size; i++) 
                    {
                        nValue[i] = Convert.ToInt32(value.Substring(i * 4, 4), 16);
                    }
    
                    retCode = _MXComm.WriteDeviceBlock(address, size, ref nValue[0]);
                    returnCode = Convert.ToString(retCode, 16);
                }
                catch (Exception ex) 
                {
                    lock (_lockEvent) 
                    {
                        _event.Enqueue("Exception" + "," + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff") + "," + ex.ToString().Replace(",", "-") + ": Address: " + address + " : value: " + value);
                    }
                }
            }
    728x90
    반응형

    댓글

Designed by Tistory.