ABOUT ME

-

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

    MX Comp Bit Read/Write 예제 첨부.

     

    사용 시 수정 필요.

     

    public string ReadBit(int idx, string address, int size, out string returnCode)
            {            
                int addressNum = 0;
                int retCode = -1;            
                string addressList = "";
                string returnValue = "";
                string addresslog = "";
                string addressKind = "";
                short[] value = new short[size];
                returnCode = "-1";
    
                try 
                {                
                    addressKind = address.Trim().Substring(0, 1).ToUpper();
                    addresslog = addressKind + address.Trim().Substring(1).ToUpper().PadLeft(4, '0');
    
                    switch (addressKind) {
                        case "B":
                        case "X":
                        case "Y":
                            addressNum = Convert.ToInt32(address.Substring(1, address.Length - 1), 16);
                            for (int Loop = 0; Loop < size; Loop++) 
                            {
                                addressList += addressKind + Convert.ToString(Convert.ToInt64(addressNum + Loop), 16).ToUpper() + "\n";
                            }
                            break;
                        case "M":
                        case "L":
                            addressNum = Convert.ToInt32(address.Substring(1, address.Length - 1));
                            for (int Loop = 0; Loop < size; Loop++) 
                            {
                                addressList += addressKind + (addressNum + Loop).ToString() + "\n";
                            }
                            break;
                    }
    
                    retCode = _MXComm.ReadDeviceRandom2(addressList, size, out value[0]);
                    returnCode = Convert.ToString(retCode, 16);
    
                    for (int i = 0; i < size; i++) 
                    {
                        returnValue += value[i];
                    }
                }
                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 returnValue;
            }
    
            public void WriteBit(int idx, string address, string value, out string returnCode)
            {            
                int size = 0;
                int addressNum = 0;
                int retCode = -1;
                short[] nValue;
                string addressList = "";
                string addresslog = "";
                string addressKind = "";
                returnCode = "-1";       
         
                try 
                {
                    addressKind = address.Trim().Substring(0, 1).ToUpper();
                    addresslog = addressKind + address.Trim().Substring(1).ToUpper().PadLeft(4, '0');
                    size = value.Trim().Length;
                    nValue = new short[size];
    
                    switch (addressKind) 
                    {
                        case "B":
                        case "X":
                        case "Y":
                            addressNum = Convert.ToInt32(address.Substring(1, address.Length - 1), 16);
                            for (int Loop = 0; Loop < size; Loop++) 
                            {
                                addressList += addressKind + Convert.ToString(Convert.ToInt64(addressNum + Loop), 16).ToUpper() + "\n";
                            }
                            break;
                        case "M":
                        case "L":
                            addressNum = Convert.ToInt32(address.Substring(1, address.Length - 1));
                            for (int Loop = 0; Loop < size; Loop++) 
                            {
                                addressList += addressKind + (addressNum + Loop).ToString() + "\n";
                            }
                            break;
                    }
    
                    for (int i = 0; i < size; i++) 
                    {
                        nValue[i] = (short)Convert.ToInt32(value.Substring(i, 1));
                    }
    
                    retCode = _MXComm.WriteDeviceRandom2(addressList, 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.