コード例 #1
0
ファイル: ModbusLinkAscii.cs プロジェクト: dozack/rps
        /// <summary>
        /// Build data frame and transmit it to bus
        /// </summary>
        /// <param name="msg">Message payload to be transmitted</param>
        /// <returns>true if success, false if error</returns>
        public bool Send(byte[] msg)
        {
            // Allocate temporary buffer for payload + LRC
            byte[] tmpData = new byte[msg.Length + 1];
            // Copy message to temporary buffer
            Array.Copy(msg, tmpData, msg.Length);
            // Calculate LRC and store it to temporary buffer
            tmpData[tmpData.Length - 1] = msg.CalculateLrc(msg.Length);
            // Calculate transmitted byte buffer size and allocate it
            int txLen = (tmpData.Length * 2) + 3;

            byte[] txData = new byte[txLen];
            // Convert payload and LRC to ASCII format
            tmpData = ConvertDataToAscii(tmpData);
            // Add start character to transmit buffer
            txData[0] = Convert.ToByte(':');
            // Copy data in ASCII format to transmit buffer
            Array.Copy(tmpData, 0, txData, 1, tmpData.Length);
            // Add trailing CRLF sequence to transmit buffer
            txData[txData.Length - 2] = Convert.ToByte('\r');
            txData[txData.Length - 1] = Convert.ToByte('\n');
            // Send finished data frame
            Debug.WriteLine("LINK - TX_MSG: " + BitConverter.ToString(msg));
            return(PHY.Transmit(txData));
        }
コード例 #2
0
        /// <summary>
        /// Build data frame and transmit it to bus
        /// </summary>
        /// <param name="msg">Message payload to be transmitted</param>
        /// <returns>true if success, false if error</returns>
        public bool Send(byte[] msg)
        {
            int txCrc = msg.CalculateCrc();

            byte[] txData = new byte[msg.Length + 2];
            Array.Copy(msg, 0, txData, 0, msg.Length);
            txData[txData.Length - 1] = Convert.ToByte((txCrc & 0xff00) >> 8);
            txData[txData.Length - 2] = Convert.ToByte(txCrc & 0x00ff);
            Debug.WriteLine("LINK - TX_MSG: " + BitConverter.ToString(msg));
            return(PHY.Transmit(txData));
        }