class CTNLuaModbus
{
public:
    CTNLuaModbus();
    ~CTNLuaModbus();

    /// \brief 基于TCP的modbus协议,设置设备IP地址和端口
    /// \param strHost       IP地址
    /// \param iPort         端口
    void setHost(const string &strHost, int iPort = 502);

    /// \brief 基于232或485的modbus协议,设置通讯参数
    /// \param strDevName     设备名称  /dev/ttyX (linux) | COMx (Windows)    
    /// \param iBaudRate      波特率
    /// \param iStopBit       停止位
    /// \param iDataBit       数据位
    /// \param iParityBit     奇偶校验 0 n(无) 1 o(奇) 2 e(偶) 
    void setDevice(const string& strDevName,
        int iBaudRate = 9600,
        int iStopBit = 1,
        int iDataBit = 8,
        int iParityBit = 0);

    /// \brief 打开连接  
    /// \param iSlaveId  设备Id
    /// \param iMode     1 RTU  2 ASCII
    /// \param iTimeOut  超时时间
    /// \return  true    成功 
    ///          false   失败
    bool open(int iSlaveId, int iMode = 1, int iTimeOut = 3000);

    /// \brief 关闭连接 
    void close();

    /// \brief 连接是否打开 
    /// \return  true    已连接 
    ///          false   未连接
    bool isOpened();

    /// \brief 读取字符串  
    /// \param iFuctionCode  功能代码
    /// \param iAddress      地址
    /// \param iLen          读取数据长度
    /// \param strValue      数值(OUT)
    /// \return  true    成功 
    ///          false   失败
    bool readStr(int iFuctionCode, int iAddress, int iLen, CTNString &strValue);
    /// \brief 写字符串  
    /// \param iFuctionCode  功能代码
    /// \param iAddress      地址
    /// \param strValue      数值
    /// \return  true    成功 
    ///          false   失败
    bool writeStr(int iFuctionCode, int iAddress, const string &strValue);

    /// \brief 读取8位整数  
    /// \param iFuctionCode  功能代码
    /// \param iAddress      地址
    /// \param iVal          数值(OUT)
    /// \return  true    成功 
    ///          false   失败
    bool readInt8(int iFuctionCode, int iAddress, int &iVal);
    /// \brief 写8位整数  
    /// \param iFuctionCode  功能代码
    /// \param iAddress      地址
    /// \param iVal          数值
    /// \return  true    成功 
    ///          false   失败
    bool writeInt8(int iFuctionCode, int iAddress, int iVal);

    /// \brief 读取16位整数  
    /// \param iFuctionCode  功能代码
    /// \param iAddress      地址
    /// \param iVal          数值(OUT)
    /// \return  true    成功 
    ///          false   失败
    bool readInt16(int iFuctionCode, int iAddress, int &iVal);
    /// \brief 写16位整数  
    /// \param iFuctionCode  功能代码
    /// \param iAddress      地址
    /// \param iVal          数值
    /// \return  true    成功 
    ///          false   失败
    bool writeInt16(int iFuctionCode, int iAddress, int iVal);

    /// \brief 读取32位整数  
    /// \param iFuctionCode  功能代码
    /// \param iAddress      地址
    /// \param iVal          数值(OUT)
    /// \param strEndian     字节序 以字母A、B、C、D表示设备上数值的字节序,ABCD为当前系统的字节序 
    /// \return  true    成功 
    ///          false   失败
    bool readInt32(int iFuctionCode, int iAddress, int &iVal, const string &strEndian = "");
    /// \brief 写32位整数  
    /// \param iFuctionCode  功能代码
    /// \param iAddress      地址
    /// \param iVal          数值
    /// \param strEndian     字节序 以字母A、B、C、D表示设备上数值的字节序,ABCD为当前系统的字节序 
    /// \return  true    成功 
    ///          false   失败
    bool writeInt32(int iFuctionCode, int iAddress, int iVal, const string &strEndian = "");

    /// \brief 读取单精度浮点型数据  
    /// \param iFuctionCode  功能代码
    /// \param iAddress      地址
    /// \param fVal          数值(OUT)
    /// \param strEndian     字节序 以字母A、B、C、D表示设备上数值的字节序,ABCD为当前系统的字节序 
    /// \return  true    成功 
    ///          false   失败
    bool readFloat(int iFuctionCode, int iAddress, float &fVal, const string &strEndian = "");
    /// \brief 写单精度浮点型数据  
    /// \param iFuctionCode  功能代码
    /// \param iAddress      地址
    /// \param fVal          数值
    /// \param strEndian     字节序 以字母A、B、C、D表示设备上数值的字节序,ABCD为当前系统的字节序 
    /// \return  true    成功 
    ///          false   失败
    bool writeFloat(int iFuctionCode, int iAddress, float fVal, const string &strEndian = "");

    /// \brief 读取双精度浮点型数据  
    /// \param iFuctionCode  功能代码
    /// \param iAddress      地址
    /// \param dbVal          数值(OUT)
    /// \param strEndian     字节序 以字母A、B、C、D、E、F、G、H表示设备上数值的字节序,ABCDEFGH为当前系统的字节序 
    /// \return  true    成功 
    ///          false   失败
    bool readDouble(int iFuctionCode, int iAddress, double &dbVal, const string &strEndian = "");
    /// \brief 写双精度浮点型数据  
    /// \param iFuctionCode  功能代码
    /// \param iAddress      地址
    /// \param dbVal          数值
    /// \param strEndian     字节序 以字母A、B、C、D、E、F、G、H表示设备上数值的字节序,ABCDEFGH为当前系统的字节序 
    /// \return  true    成功 
    ///          false   失败
    bool writeDouble(int iFuctionCode, int iAddress, double dbVal, const string &strEndian = "");

};
Copyright © TouchNet 2015 all right reserved,powered by Gitbook最后修订时间: 2022-06-21 09:21:04

results matching ""

    No results matching ""