55 dat[2] = ((
u8*)(&address))[1];
56 dat[3] = ((
u8*)(&address))[0];
57 dat[4] = ((
u8*)(&mem))[1];
58 dat[5] = ((
u8*)(&mem))[0];
60 dat[6] = ((
u8*)(&crc))[0];
61 dat[7] = ((
u8*)(&crc))[1];
75 dat[2] = ((
u8*)(&address))[1];
76 dat[3] = ((
u8*)(&address))[0];
77 dat[4] = ((
u8*)(&mem))[1];
78 dat[5] = ((
u8*)(&mem))[0];
80 dat[6] = ((
u8*)(&crc))[0];
81 dat[7] = ((
u8*)(&crc))[1];
95 dat[2] = ((
u8*)(&address))[1];
96 dat[3] = ((
u8*)(&address))[0];
97 dat[4] = ((
u8*)(&var))[1];
98 dat[5] = ((
u8*)(&var))[0];
100 dat[6] = ((
u8*)(&crc))[0];
101 dat[7] = ((
u8*)(&crc))[1];
113 u8 bytes = 9 + mem * 2;
114 u8* dat = (
u8*)malloc(bytes);
115 if (dat == NULL)
return;
119 dat[2] = ((
u8*)(&address))[1];
120 dat[3] = ((
u8*)(&address))[0];
121 dat[4] = ((
u8*)(&mem))[1];
122 dat[5] = ((
u8*)(&mem))[0];
125 for (
u8 i = 0; i < mem; i++){
126 dat[7 + i*2] = ((
u8*)var)[1+i*2];
127 dat[8 + i*2] = ((
u8*)var)[0+i*2];}
129 dat[bytes - 2] = ((
u8*)(&crc))[0];
130 dat[bytes - 1] = ((
u8*)(&crc))[1];
146 u8 bytes = 9 + mem * 2;
147 u8* dat = (
u8*)malloc(bytes);
148 if (dat == NULL)
return;
152 dat[2] = ((
u8*)(&address))[1];
153 dat[3] = ((
u8*)(&address))[0];
154 dat[4] = ((
u8*)(&mem))[1];
155 dat[5] = ((
u8*)(&mem))[0];
158 for (
u8 i = 0; i < mem; i++){
159 vars=va_arg(table,
u32);
160 dat[7 + i*2] = ((
u8*)(&vars))[1];
161 dat[8 + i*2] = ((
u8*)(&vars))[0];}
163 dat[bytes - 2] = ((
u8*)(&crc))[0];
164 dat[bytes - 1] = ((
u8*)(&crc))[1];
180 dat[2] = ((
u8*)(&address))[1];
181 dat[3] = ((
u8*)(&address))[0];
182 dat[4] = ((
u8*)(&mem))[1];
183 dat[5] = ((
u8*)(&mem))[0];
185 dat[6] = ((
u8*)(&crc))[0];
186 dat[7] = ((
u8*)(&crc))[1];
200 dat[2] = ((
u8*)(&address))[1];
201 dat[3] = ((
u8*)(&address))[0];
202 dat[4] = ((
u8*)(&mem))[1];
203 dat[5] = ((
u8*)(&mem))[0];
205 dat[6] = ((
u8*)(&crc))[0];
206 dat[7] = ((
u8*)(&crc))[1];
219 u16 var = state ? 0xFF00 : 0x0000;
223 dat[2] = ((
u8*)(&address))[1];
224 dat[3] = ((
u8*)(&address))[0];
225 dat[4] = ((
u8*)(&var))[1];
226 dat[5] = ((
u8*)(&var))[0];
228 dat[6] = ((
u8*)(&crc))[0];
229 dat[7] = ((
u8*)(&crc))[1];
241 u8 bytes = (mem / 8) + (mem % 8 != 0) + 9;
242 u8* dat = (
u8*)malloc(bytes);
243 if (dat == NULL)
return;
247 dat[2] = ((
u8*)(&address))[1];
248 dat[3] = ((
u8*)(&address))[0];
249 dat[4] = ((
u8*)(&mem))[1];
250 dat[5] = ((
u8*)(&mem))[0];
253 for (
u8 i = 0; i < bytes - 9; i++)dat[7 + i] = var[i];
255 dat[bytes - 2] = ((
u8*)(&crc))[0];
256 dat[bytes - 1] = ((
u8*)(&crc))[1];
273 u8 bytes = (mem / 8) + (mem % 8 != 0) + 9;
274 u8* dat = (
u8*)malloc(bytes);
275 if (dat == NULL)
return;
278 dat[2] = ((
u8*)(&address))[1];
279 dat[3] = ((
u8*)(&address))[0];
280 dat[4] = ((
u8*)(&mem))[1];
281 dat[5] = ((
u8*)(&mem))[0];
284 for(
u16 i=0;i<mem;i++){
285 var=va_arg(table,
u32);
287 dat[7 + (i/8)]|=1<<(i%8);
289 dat[7 + (i/8)]&=~(1<<(i%8));}
291 dat[bytes - 2] = ((
u8*)(&crc))[0];
292 dat[bytes - 1] = ((
u8*)(&crc))[1];
319 crcts = ( ((
u8*)(&crc))[1] == dat[dat[2] + 3] &&
320 ((
u8*)(&crc))[0] == dat[dat[2] + 4]);}
u16 CRC16_MODBUS(u8 *pucFrame, u16 usLen)
void analysis(u8 *dat)
以ModBus协议分析缓冲区内数据
void WriteOneReg(u16 address, u16 var)
发送写一个寄存器的指令
void WriteRegs(u16 address, u16 mem, u16 *var)
发送写多个寄存器的指令
void WriteCoilsVar(u16 address, u16 mem,...)
发送写多个线圈的指令
void WriteCoils(u16 address, u16 mem, u8 *var)
发送写多个线圈的指令
void ReadInCoil(u16 address, u16 mem)
发送读输入线圈的指令
void WriteOneCoil(u16 address, u16 state)
发送写入一个线圈的指令
void ReadOutCoil(u16 address, u16 mem)
发送读输出线圈的指令
virtual void Transmit(u8 *dat, u16 len)=0
void WriteRegsVar(u16 address, u16 mem,...)
发送写多个寄存器的指令
void ReadKeepReg(u16 address, u16 mem)
发送读取保存寄存器的指令
void ReadInReg(u16 address, u16 mem)
发送读取输入寄存器的指令