|
- #pragma once
-
- namespace XINJE
- {
- //类型定义
- typedef unsigned char Byte;
- typedef unsigned short UInt16;
-
- //XNet服务端口
- #define ServicePort 2323
- #define ServiceIp "127.0.0.1"
-
- //操作结果(仅告知操作是否成功)
- #define XNetCommResult int
- #define XNetCommResult_Err -1
- #define XNetCommResult_Success 0
-
- //XNet设备类型
- typedef enum
- {
- PLC_XD = 0,
- PLC_XE,
- TouchWin,
- WBox,
- _4GBox,
- COBox,
- ABox
- }XNetDevice;
-
- //线圈类型
- typedef enum
- {
- XNet_X = 1,
- XNet_Y = 2,
- XNet_M = 3,
- XNet_S = 4,
- XNet_T = 5,
- XNet_C = 6,
- XNet_ET = 7,
- XNet_HM = 8,
- XNet_HS = 9,
- XNet_HT = 10,
- XNet_HC = 11,
- XNet_HSC = 12,
- XNet_SM = 13,
- XNet_SSM = 14,
- XNet_TG = 15,
- XNet_HTG = 16,
- XNet_PF = 17,
- XNet_SEM = 18,
- XNet_STG = 19,//add 2016.4.8
- XNet_HSTG = 20,
- }CoilType;
-
- //寄存器类型
- typedef enum
- {
- XNet_D = 128,
- XNet_TD = 129,
- XNet_CD = 130,
- XNet_SD = 131,
- XNet_ETD = 133,
- XNet_ID = 134,
- XNet_QD = 135,
- XNet_HD = 136,
- XNet_HTD = 137,
- XNet_HCD = 138,
- XNet_HSCD = 139,
- XNet_HSD = 140,
- XNet_FD = 141,
- XNet_SFD = 142,
- XNet_SSFD = 143,
- XNet_SSD = 144,
- XNet_FS = 145,
- }RegType;
-
- //通信对象
- //每一个和每一个设备的连接都建议创建一个此对象,以避免不必要的线程同步
- class XNetClient
- {
- private:
- int Sock;
- unsigned short Net;
- unsigned short Station;
- unsigned char Com;
- Byte Type;
- Byte Serial;
- Byte Model;
- void LibXNetRegsToBuf(short* _regs, unsigned char* _buf, int _num);
- void LibXNetBufToRegs(unsigned char* _buf, unsigned short* _regs, int _num);
- void LibXNetCoilsToBuf(short* _coils, unsigned char* _buf, int _num);
- void LibXNetBufToCoils(char* _buf, short* _coils, Byte _startBit, int _num);
- unsigned short Byte2Word(Byte high, Byte low);
- public:
- //初始化WindowsSocket
- // XNetClient(char *ttyNo);
- static XNetCommResult WinSockInit();
-
- //启动XNet服务
- static XNetCommResult StartXNetWindows();
- static XNetCommResult CloseXNetWindows();
-
- //和XNet服务建立连接
- XNetCommResult XNetCommunication();
-
- //打开串口(网口也需配置一次,网口_com填129)
- XNetCommResult SetComPort(Byte _com);
-
- //关闭串口
- XNetCommResult ReleaseComPort(Byte _com);
-
- //直接指定设备地址
- void AdderLink(const char* _ipStr);
- void AdderLink(UInt16 _net, UInt16 _station);
-
- //对指定端口或网口查找设备,使本对象自动获取到设备地址
- XNetCommResult FindDevice(Byte _comPort, Byte _type, Byte _serial, Byte _model);
- XNetCommResult FindDevice(Byte _comPort, XNetDevice _dev);
- XNetCommResult FindDevice(Byte _comPort, const char* _id);
-
- //读写寄存器(用户提供一个short数组缓存,用于传入或获取XNet16位寄存器的值)
- XNetCommResult WriteRegs(Byte _regType, int _offSet, int _num, short* _writeRegs);
- XNetCommResult ReadRegs(Byte _regType, int _offSet, int _num, short* _readRegs);
-
- //读写线圈(用户提供一个short数组缓存,用于传入或获取XNet线圈状态,0为off,1为on)
- XNetCommResult WriteCoils(Byte _coilType, int _offSet, int _num, short* _writeCoils);
- XNetCommResult ReadCoils(Byte _coilType, int _offSet, int _num, short* _readCoil);
-
- // ~XNetClient();
- };
- }
|