Esempio n. 1
0
        private void decodeSetMessage(ModbusMessage msg)
        {
            String setType = (String)msg.Data["SetType"];

            if ("yiYeWeiZhi".Equals(setType))
            {
                LHS_SuctionPlate = (String)msg.Data["LHS_SuctionPlate"];
                LHS_TargetPlate  = (String)msg.Data["LHS_TargetPlate"];
                LHS_Imbitition   = Int32.Parse((String)msg.Data["LHS_Imbitition"]);
            }
            if ("suDuSheZhi".Equals(setType))
            {
                LHS_LiquidRate    = Int32.Parse((String)msg.Data["LHS_LiquidRate"]);
                LHS_DischargeRate = Int32.Parse((String)msg.Data["LHS_DischargeRate"]);
            }
            if ("weiZhiSheZhi".Equals(setType))
            {
                LHS_LiquidPosition    = Int32.Parse((String)msg.Data["LHS_LiquidPosition"]);
                LHS_DischargePosition = Int32.Parse((String)msg.Data["LHS_DischargePosition"]);
            }
            if ("LHS_PlateStatus".Equals(setType))
            {
                LHS_PlateStatus = (String)msg.Data["LHS_PlateStatus"];
            }
        }
Esempio n. 2
0
        public override void ReceiveMsg(String s)
        {
            ModbusMessage message = ModbusMessageHelper.decodeModbusMessage(s);

            switch (message.MsgType)
            {
            case ModbusMessage.MessageType.RESPONSE:
                decodeResponseMessage(message);
                break;

            case ModbusMessage.MessageType.CMD:
                decodeCmdMessage(message);
                break;

            case ModbusMessage.MessageType.REPORT:
                decodeReportMessage(message);
                break;

            case ModbusMessage.MessageType.SET:
                decodeSetMessage(message);
                break;

            case ModbusMessage.MessageType.GET:
                break;
            }
        }
Esempio n. 3
0
 public override void ReceiveMsg(String s)
 {
     ModbusMessage message = ModbusMessageHelper.decodeModbusMessage(s);
     //switch (message.MsgType)
     {
     }
 }
Esempio n. 4
0
        public static String createCmd(String cmd)
        {
            ModbusMessageDataCreator creator = new ModbusMessageDataCreator();

            creator.addKeyPair("Cmd", cmd);
            return(ModbusMessageHelper.createModbusMessage(ModbusMessage.messageTypeToByte(ModbusMessage.MessageType.CMD), creator.getDataBytes()));
        }
Esempio n. 5
0
            private void decodeBasicMsg(String s)
            {
                ModbusMessage     message = ModbusMessageHelper.decodeModbusMessage(s);
                DeviceType        type    = EnumHelper.deviceStringToDeviceType((String)message.Data["DeviceType"]);
                BaseVirtualDevice device  = (BaseVirtualDevice)VirtualDeviceFactory.createVirtualDevice(type, true);

                device.IsVirt            = true;
                device.CurrentDeviceType = type;

                /*
                 * if (type == DeviceType.Dispen)
                 * {
                 *  String subType = (String)message.Data["SubType"];
                 *  if ("PeiYangMin".Equals(subType))
                 *  {
                 *      ((AutoDispenVirtualDevice)device).SubType = AutoDispenVirtualDevice.AutoDispenType.PeiYangMin;
                 *  }
                 *  else
                 *  {
                 *      ((AutoDispenVirtualDevice)device).SubType = AutoDispenVirtualDevice.AutoDispenType.ShenKongBan;
                 *  }
                 * }*/
                device.IdentifyID    = (String)message.Data["IdentifyID"];
                device.Code          = (String)message.Data["Code"];
                device.IP            = (String)message.Data["IP"];
                device.Name          = (String)message.Data["Name"];
                device.SerialID      = (String)message.Data["SerialID"];
                device.MySocket      = mySocket;
                device.DeviceManager = deviceManager;
                device.init();
                deviceManager.addDevice(device);
            }
Esempio n. 6
0
        public override void decodeCmdMessage(ModbusMessage msg)
        {
            String cmd = (String)msg.Data["Cmd"];

            if ("Start".Equals(cmd))
            {
                //dispenTimer.Start();
                this.MDF_Cmd = "Start";
            }
            if ("Reset".Equals(cmd))
            {
                MDF_WhichDish  = 1;
                MDF_WhichStack = 1;
                this.MDF_Cmd   = "Reset";
            }
            if ("Stop".Equals(cmd))
            {
                //dispenTimer.Stop();
                this.MDF_Cmd = "Stop";
            }
            if ("Auto".Equals(cmd))
            {
                this.MDF_Cmd = "Auto";
            }

            this.sendOKResponse();
        }
Esempio n. 7
0
        public override void decodeReportMessage(ModbusMessage msg)//解码报告消息
        {
            String reportType = (String)msg.Data["ReportType"];

            if ("MPF_Current".Equals(reportType))
            {
                MPF_Current1 = double.Parse((String)msg.Data["MPF_Current1"]);
                MPF_Current2 = double.Parse((String)msg.Data["MPF_Current2"]);
                MPF_Current3 = double.Parse((String)msg.Data["MPF_Current3"]);
                MPF_Current4 = double.Parse((String)msg.Data["MPF_Current4"]);
            }
            if ("MPF".Equals(reportType))
            {
                String           PlateNum = (String)msg.Data["MPF_Whichplate"];
                String           Barcode  = (String)msg.Data["MPF_BarCode"];
                MPFDispenMessage disMsg   = new MPFDispenMessage();
                disMsg.PlateNum = PlateNum;
                disMsg.Barcode  = Barcode;
                lock (DispenMessages)
                {
                    DispenMessages.Add(disMsg);
                }
                lock (RefreshObject)
                {
                    needRefreshMessages = true;
                }
            }
        }
Esempio n. 8
0
        public void SendMessage(Rs232CommunicationManager rs232Manager, ModbusMessage message)
        {
            int messageLength = message.Data.Length * 2;
            var data = new byte[messageLength + 7];

            data[0] = (byte)':';

            byte[] address = HexHelper.EncodeByteAsHex(message.Address);
            byte[] function = HexHelper.EncodeByteAsHex(message.Function);

            data[1] = address[0];
            data[2] = address[1];
            data[3] = function[0];
            data[4] = function[1];

            byte[] messageBytes = HexHelper.EncodeAsHexArray(message.Data);
            for (int i = 0; i < messageLength; i++)
                data[5 + i] = messageBytes[i];

            byte[] numericMessage = HexHelper.DecodeHexArray(data, 1, 4 + messageLength);
            byte[] lrc = HexHelper.EncodeByteAsHex(CalculateLRC(numericMessage));
            data[data.Length - 2] = lrc[0];
            data[data.Length - 1] = lrc[1];

            // The data is now 8 bits per character, but it's not a problem, it will
            // be reduced to 7 bits per character automatically.
            rs232Manager.SendMessage(new RS232Message(data));
        }
Esempio n. 9
0
        public static String createOKResponse()
        {
            ModbusMessageDataCreator creator = new ModbusMessageDataCreator();

            creator.addKeyPair("Result", "OK");
            return(ModbusMessageHelper.createModbusMessage(ModbusMessage.messageTypeToByte(ModbusMessage.MessageType.RESPONSE), creator.getDataBytes()));
        }
Esempio n. 10
0
        public override void decodeReportMessage(ModbusMessage msg)//解码报告消息
        {
            String reportType = (String)msg.Data["ReportType"];

            if ("MDF_Current".Equals(reportType))
            {
                MDF_Current1 = double.Parse((String)msg.Data["MDF_Current1"]);
                MDF_Current2 = double.Parse((String)msg.Data["MDF_Current2"]);
                MDF_Current3 = double.Parse((String)msg.Data["MDF_Current3"]);
                MDF_Current4 = double.Parse((String)msg.Data["MDF_Current4"]);
            }
            if ("MDF".Equals(reportType))
            {
                String           Stackcode = (String)msg.Data["MDF_WhichStack"];
                String           Petricode = (String)msg.Data["MDF_WhichDish"];
                String           Barcode   = (String)msg.Data["MDF_BarCode"];
                MDFDispenMessage xinXi     = new MDFDispenMessage();
                xinXi.Stackcode = Stackcode;
                xinXi.Petricode = Petricode;
                xinXi.Barcode   = Barcode;
                lock (DispenMessages)
                {
                    DispenMessages.Add(xinXi);
                }
                lock (RefreshObject)
                {
                    needRefreshMessages = true;
                }
            }
        }
Esempio n. 11
0
        public static String createODReport(String OD)
        {
            ModbusMessageDataCreator creator = new ModbusMessageDataCreator();

            creator.addKeyPair("ReportType", "OD");
            creator.addKeyPair("OD", OD);
            return(ModbusMessageHelper.createModbusMessage(ModbusMessage.messageTypeToByte(ModbusMessage.MessageType.REPORT), creator.getDataBytes()));
        }
Esempio n. 12
0
 public ModbusRequest(ModbusMessage message, byte slaveAddress, short register, int attempts = 3, int timeout = 5000)
 {
     Message = message;
     SlaveAddress = slaveAddress;
     RegisterNumber = register;
     AttemptsLeft = attempts - 1;
     _timeout = timeout;
 }
Esempio n. 13
0
        public static String createStopMsg(int moduleNum)
        {
            ModbusMessageDataCreator creator = new ModbusMessageDataCreator();

            creator.addKeyPair("SetType", "Stop");
            creator.addKeyPair("moduleNum", moduleNum.ToString());
            return(ModbusMessageHelper.createModbusMessage(ModbusMessage.messageTypeToByte(ModbusMessage.MessageType.SET), creator.getDataBytes()));
        }
Esempio n. 14
0
        public static String createSetMode(String s)
        {
            ModbusMessageDataCreator creator = new ModbusMessageDataCreator();

            creator.addKeyPair("SetType", "Mode");
            creator.addKeyPair("Mode", s);
            return(ModbusMessageHelper.createModbusMessage(ModbusMessage.messageTypeToByte(ModbusMessage.MessageType.SET), creator.getDataBytes()));
        }
Esempio n. 15
0
        public static String createDeployStatus(String LHS_PlateStatus)
        {
            ModbusMessageDataCreator creator = new ModbusMessageDataCreator();

            creator.addKeyPair("SetType", "LHS_PlateStatus");
            creator.addKeyPair("LHS_PlateStatus", LHS_PlateStatus);
            return(ModbusMessageHelper.createModbusMessage(ModbusMessage.messageTypeToByte(ModbusMessage.MessageType.SET), creator.getDataBytes()));
        }
Esempio n. 16
0
        public static String createSuDuConfirmMsg(String LHS_LiquidRate, String LHS_DischargeRate)
        {
            ModbusMessageDataCreator creator = new ModbusMessageDataCreator();

            creator.addKeyPair("SetType", "suDuSheZhi");
            creator.addKeyPair("LHS_LiquidRate", LHS_LiquidRate);
            creator.addKeyPair("LHS_DischargeRate", LHS_DischargeRate);
            return(ModbusMessageHelper.createModbusMessage(ModbusMessage.messageTypeToByte(ModbusMessage.MessageType.SET), creator.getDataBytes()));
        }
Esempio n. 17
0
        public static String createSetSystem(String Mode, String Command)
        {
            ModbusMessageDataCreator creator = new ModbusMessageDataCreator();

            creator.addKeyPair("SetType", "System");
            creator.addKeyPair("Sys_Mode", Mode);
            creator.addKeyPair("Sys_Command", Command);
            return(ModbusMessageHelper.createModbusMessage(ModbusMessage.messageTypeToByte(ModbusMessage.MessageType.SET), creator.getDataBytes()));
        }
Esempio n. 18
0
        public static String createSetLight(String pwm, String allightText)
        {
            ModbusMessageDataCreator creator = new ModbusMessageDataCreator();

            creator.addKeyPair("SetType", "Light");
            creator.addKeyPair("Light_pwm", pwm);
            creator.addKeyPair("Light_allighText", allightText);
            return(ModbusMessageHelper.createModbusMessage(ModbusMessage.messageTypeToByte(ModbusMessage.MessageType.SET), creator.getDataBytes()));
        }
Esempio n. 19
0
        public static String createSetMianJiLowAndUpp(String Lower, String Upper)
        {
            ModbusMessageDataCreator creator = new ModbusMessageDataCreator();

            creator.addKeyPair("SetType", "MianJiShaiXuan");
            creator.addKeyPair("MianJi_Max", Upper);
            creator.addKeyPair("MianJi_Min", Lower);
            return(ModbusMessageHelper.createModbusMessage(ModbusMessage.messageTypeToByte(ModbusMessage.MessageType.SET), creator.getDataBytes()));
        }
Esempio n. 20
0
        public static String createWeiZhiConfirmMsg(String LHS_LiquidPosition, String LHS_DischargePosition)
        {
            ModbusMessageDataCreator creator = new ModbusMessageDataCreator();

            creator.addKeyPair("SetType", "weiZhiSheZhi");
            creator.addKeyPair("LHS_LiquidPosition", LHS_LiquidPosition);
            creator.addKeyPair("LHS_DischargePosition", LHS_DischargePosition);
            return(ModbusMessageHelper.createModbusMessage(ModbusMessage.messageTypeToByte(ModbusMessage.MessageType.SET), creator.getDataBytes()));
        }
Esempio n. 21
0
            /// <summary>
            /// Retrieves the Hardware Version from a Morning Star Charge Controller
            /// </summary>
            /// <param name="messenger">The ModbusMessenger to perform the transaction on</param>
            /// <returns>The hardware version as reported by the charge controller</returns>
            public static string GetHardwareVersion(ModbusMessenger messenger)
            {
                ModbusMessenger.TransportEncoding te = messenger.TransportEndoing;
                messenger.TransportEndoing = ModbusMessenger.TransportEncoding.Binary;
                ModbusMessage registers = messenger.ReadHoldingRegisters(0xf00a, 0x0001);

                messenger.TransportEndoing = te;
                return(registers.DataPoints[0] + "." + registers.DataPoints[1]);
            }
Esempio n. 22
0
        public static String createCodeReport(String Add_Num, String Rem_Num)
        {
            ModbusMessageDataCreator creator = new ModbusMessageDataCreator();

            creator.addKeyPair("ReportType", "Code");
            creator.addKeyPair("Add_Num", Add_Num);
            creator.addKeyPair("Rem_Num", Rem_Num);
            return(ModbusMessageHelper.createModbusMessage(ModbusMessage.messageTypeToByte(ModbusMessage.MessageType.REPORT), creator.getDataBytes()));
        }
Esempio n. 23
0
        public override void decodeSetMessage(ModbusMessage msg)
        {
            String setType = (String)msg.Data["SetType"];

            if ("MPF_NumAndVol".Equals(setType))
            {
                this.MPF_PlateNum    = Int32.Parse((String)msg.Data["MPF_PlateNum"]);
                this.MPF_Volsperwell = double.Parse((String)msg.Data["MPF_Volsperwell"]);
            }
        }
Esempio n. 24
0
        public static String createSetMotor(String text_speed, String elecspeed, String slope)
        {
            ModbusMessageDataCreator creator = new ModbusMessageDataCreator();

            creator.addKeyPair("SetType", "Motor");
            creator.addKeyPair("Motor_text_speed", text_speed);
            creator.addKeyPair("Motor_elecspeed", elecspeed);
            creator.addKeyPair("Motor_slope", slope);
            return(ModbusMessageHelper.createModbusMessage(ModbusMessage.messageTypeToByte(ModbusMessage.MessageType.SET), creator.getDataBytes()));
        }
Esempio n. 25
0
        public static String createSystemReport(String DeviceInfo, String Status, String Batch_Info)
        {
            ModbusMessageDataCreator creator = new ModbusMessageDataCreator();

            creator.addKeyPair("ReportType", "System");
            creator.addKeyPair("Sys_DeviceInfo", DeviceInfo);
            creator.addKeyPair("Sys_Status", Status);
            creator.addKeyPair("Sys_Batch_Info", Batch_Info);
            return(ModbusMessageHelper.createModbusMessage(ModbusMessage.messageTypeToByte(ModbusMessage.MessageType.REPORT), creator.getDataBytes()));
        }
Esempio n. 26
0
File: Main.cs Progetto: kamilk/rs232
        private void cmdSend_Click(object sender, EventArgs e)
        {
            var message = new ModbusMessage(
                txtMessageText.Text,
                Convert.ToByte(txtAddress.Text),
                Convert.ToByte(txtFunction.Text, 16));

            communicationManager.SendMessage(message);
            InvokeDisplayModbusMessage(message, MessageType.Outgoing);
        }
Esempio n. 27
0
        private void decodeSetMessage(ModbusMessage msg)
        {
            String setType = (String)msg.Data["SetType"];

            if ("Mode".Equals(setType))
            {
                String mode = (String)msg.Data["Mode"];
                MMA_TestMode = stringToJianCeMoShi(mode);
            }
        }
Esempio n. 28
0
        public static String createMuBiaoConfirmMsg(String LHS_SuctionPlate, String LHS_TargetPlate, String LHS_Imbitition)
        {
            ModbusMessageDataCreator creator = new ModbusMessageDataCreator();

            creator.addKeyPair("SetType", "yiYeWeiZhi");
            creator.addKeyPair("LHS_SuctionPlate", LHS_SuctionPlate);
            creator.addKeyPair("LHS_TargetPlate", LHS_TargetPlate);
            creator.addKeyPair("LHS_Imbitition", LHS_Imbitition);
            return(ModbusMessageHelper.createModbusMessage(ModbusMessage.messageTypeToByte(ModbusMessage.MessageType.SET), creator.getDataBytes()));
        }
Esempio n. 29
0
        public override void decodeSetMessage(ModbusMessage msg)
        {
            String setType = (String)msg.Data["SetType"];

            if ("MDF_NumAndVol".Equals(setType))
            {
                this.MDF_NumsperStack = Int32.Parse((String)msg.Data["MDF_NumsperStack"]);
                this.MDF_VolsperDish  = double.Parse((String)msg.Data["MDF_VolsperDish"]);
            }
        }
Esempio n. 30
0
        public override void ReceiveMsg(String s)
        {
            ModbusMessage message = ModbusMessageHelper.decodeModbusMessage(s);

            switch (message.MsgType)
            {
            case ModbusMessage.MessageType.SET:
                decodeSetMessage(message);
                break;
            }
        }
Esempio n. 31
0
        public static String createMotorReport(String Status, String text_speed, String elecspeed, String Power)
        {
            ModbusMessageDataCreator creator = new ModbusMessageDataCreator();

            creator.addKeyPair("ReportType", "Motor");
            creator.addKeyPair("Motor_Status", Status);
            creator.addKeyPair("Motor_text_speed", text_speed);
            creator.addKeyPair("Motor_elecspeed", elecspeed);
            creator.addKeyPair("Motor_Power", Power);
            return(ModbusMessageHelper.createModbusMessage(ModbusMessage.messageTypeToByte(ModbusMessage.MessageType.REPORT), creator.getDataBytes()));
        }
Esempio n. 32
0
            /// <summary>
            /// Retrieves the Serial Number from a Morning Star Charge Controller
            /// </summary>
            /// <param name="messenger">The ModbusMessenger to perform the transaction on</param>
            /// <returns>The serial number of the charge controller</returns>
            public static string GetSerialNumber(ModbusMessenger messenger)
            {
                //remember the old transport encoding
                ModbusMessenger.TransportEncoding te = messenger.TransportEndoing;
                //set the new transport encoding
                messenger.TransportEndoing = ModbusMessenger.TransportEncoding.Binary;
                ModbusMessage registers = messenger.ReadHoldingRegisters(0xf000, 0x0004);//was 0x0008

                messenger.TransportEndoing = te;
                return(System.Text.Encoding.ASCII.GetString(registers.DataPoints.ToArray()));//needed substring 0, 8
            }
Esempio n. 33
0
        public static String createResponseMsg(int moduleNum, int tpR, int phR, int doR)
        {
            ModbusMessageDataCreator creator = new ModbusMessageDataCreator();

            creator.addKeyPair("SetType", "Response");
            creator.addKeyPair("moduleNum", moduleNum.ToString());
            creator.addKeyPair("tpR", tpR.ToString());
            creator.addKeyPair("phR", phR.ToString());
            creator.addKeyPair("doR", doR.ToString());
            return(ModbusMessageHelper.createModbusMessage(ModbusMessage.messageTypeToByte(ModbusMessage.MessageType.RESPONSE), creator.getDataBytes()));
        }
Esempio n. 34
0
File: Main.cs Progetto: kamilk/rs232
 private void InvokeDisplayModbusMessage(ModbusMessage message, MessageType type)
 {
     string stringToDisplay = string.Format(
         "Address: {0} Function: {1:X} Message: {2}",
         message.Address,
         message.Function,
         HexHelper.EncodeAsHexString(message.Data));
     rtbDisplay.InvokeDisplayMessage(stringToDisplay, type);
 }
Esempio n. 35
0
        public void BeginReadFromSlave(byte slaveAddress, short register, Action<string> onSuccessCallback)
        {
            if (_sentRequests.ContainsKey(slaveAddress))
                return;

            var data = new byte[2];
            ArrayHelper.WriteShortToByteArray(data, register, 0);
            ModbusMessage message = new ModbusMessage(data, slaveAddress, ReadFunctionCode);

            ModbusRequest request = AddSentRequest(slaveAddress, register, message, OnResponseToReadRequestReceived);
            _modbusManager.SendMessage(message);
            request.StartTimer();
        }
Esempio n. 36
0
 private void OnResponseToWriteRequestReceived(ModbusRequest request, ModbusMessage message)
 {
 }
Esempio n. 37
0
        private void OnResponseToReadRequestReceived(ModbusRequest request, ModbusMessage message)
        {
            if (message.Function == ReadFunctionCode)
            {
                string readValue = new UTF8Encoding().GetString(message.Data);

                if (DataReadEvent != null)
                    DataReadEvent(this, new ModbusDataReadEventArgs(request.SlaveAddress, request.RegisterNumber, readValue));
            }
        }
Esempio n. 38
0
 private ModbusRequest AddSentRequest(byte slaveAddress, short register, ModbusMessage message, Action<ModbusRequest, ModbusMessage> ResponseHandler)
 {
     ModbusRequest request = new ModbusRequest(message, slaveAddress, register, NumberOfAttempts, RequestTimeout);
     request.TimeoutEvent += new EventHandler(OnRequestTimeout);
     request.ResponseHandler = ResponseHandler;
     _sentRequests.Add(slaveAddress, request);
     return request;
 }
Esempio n. 39
0
        public void WriteToSlave(byte slaveAddress, short register, string value)
        {
            using (var stream = new MemoryStream())
            using (var writer = new BinaryWriter(stream))
            {
                writer.Write(register);
                writer.Write(new UTF8Encoding().GetBytes(value));
                writer.Flush();
                byte[] data = stream.ToArray();

                ModbusMessage message = new ModbusMessage(data, slaveAddress, WriteFunctionCode);
                ModbusRequest request = AddSentRequest(slaveAddress, register, message, OnResponseToWriteRequestReceived);

                _modbusManager.SendMessage(message);

                request.StartTimer();
            }
        }
Esempio n. 40
0
        private void OnReadRequestReceived(ModbusMessage message)
        {
            if (message.Data.Length < 2)
                return;

            short register = ArrayHelper.ReadShortFromByteArray(message.Data, 0);

            using (var stream = new MemoryStream())
            using (var writer = new BinaryWriter(stream))
            {
                writer.Write(new UTF8Encoding().GetBytes(GetRegisterValue(register)));
                writer.Flush();
                modbusManager.SendMessage(new ModbusMessage(stream.ToArray(), Address, ReadFunctionCode));
            }
        }
Esempio n. 41
0
        private void OnWriteRequestReceived(ModbusMessage message)
        {
            if (message.Data.Length < 4)
                return;

            using (var stream = new MemoryStream(message.Data))
            using (var reader = new BinaryReader(stream))
            {
                var register = reader.ReadInt16();
                var data = new byte[message.Data.Length - 2];
                reader.Read(data, 0, message.Data.Length - 2);
                string newValue = new UTF8Encoding().GetString(data);
                SetRegisterValue(register, newValue);
            }

            modbusManager.SendMessage(message);
        }
Esempio n. 42
0
 public void SendMessage(ModbusMessage message)
 {
     messageProcessor.SendMessage(rs232Manager, message);
 }
Esempio n. 43
0
 public void SendMessage(Rs232CommunicationManager rs232Manager, ModbusMessage message)
 {
     throw new NotImplementedException();
 }