用户工具

站点工具


icore4t_45

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
icore4t_45 [2020/09/26 19:59]
zgf
icore4t_45 [2022/04/01 10:54] (当前版本)
sean
行 2: 行 2:
 |技术支持电话|**0379-69926675-801**||| |技术支持电话|**0379-69926675-801**|||
 |技术支持邮件|Gingko@vip.163.com||| |技术支持邮件|Gingko@vip.163.com|||
-|技术论坛|http://​www.eeschool.org||| 
 ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^ ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^
 |  V1.0  |  2020-9-26 ​ |  zgf  |  初次建立 ​ |  |  V1.0  |  2020-9-26 ​ |  zgf  |  初次建立 ​ | 
行 31: 行 30:
 |事务处理标识 |协议标识 |报文长度 |设备标识 |功能码 |起始地址 |寄存器数量| |事务处理标识 |协议标识 |报文长度 |设备标识 |功能码 |起始地址 |寄存器数量|
 |2byte |2byte |2byte |1byte |1byte |2 byte |2 byte| |2byte |2byte |2byte |1byte |1byte |2 byte |2 byte|
 +
   * 事务处理标识符:两个字节,一般每次通讯后将加1,从而区别不同的通讯数据报文。   * 事务处理标识符:两个字节,一般每次通讯后将加1,从而区别不同的通讯数据报文。
   * 协议标识符:两个字节,Modbus TCP标识符为0x0000。   * 协议标识符:两个字节,Modbus TCP标识符为0x0000。
行 41: 行 41:
   * 数据读取应答报文格式如表2所示。   * 数据读取应答报文格式如表2所示。
   * 表2 Modbus TCP数据读取应答报文   * 表2 Modbus TCP数据读取应答报文
 +
 |事务处理标识 |协议标识 |报文长度 |设备标识 |功能码 |数据长度 |数据| |事务处理标识 |协议标识 |报文长度 |设备标识 |功能码 |数据长度 |数据|
 |2byte |2byte |2byte |1byte |1byte |1byte |n byte| |2byte |2byte |2byte |1byte |1byte |1byte |n byte|
 +
   * 事务处理标识符:两个字节,与请求标识一致。   * 事务处理标识符:两个字节,与请求标识一致。
   * 协议标识符:两个字节,与请求标识一致。   * 协议标识符:两个字节,与请求标识一致。
行 171: 行 173:
  memcpy(eth_tcps.send_buffer,​data,​len);​  memcpy(eth_tcps.send_buffer,​data,​len);​
  es = tpcb->​callback_arg;​  es = tpcb->​callback_arg;​
- if(es != NULL){ ​ ​ //​连接处于空闲可以发送数据+ if(es != NULL){ ​ ​  ​//​连接处于空闲可以发送数据
  es->p = pbuf_alloc(PBUF_TRANSPORT,​len,​PBUF_POOL);//​申请内存 ​  es->p = pbuf_alloc(PBUF_TRANSPORT,​len,​PBUF_POOL);//​申请内存 ​
-//​将eth_tcps.send_buffer[]中的数据拷贝到es->​p_tx中 + pbuf_take(es->​p,​(char*)eth_tcps.send_buffer,​len);​//​将eth_tcps.send_buffer[]中的数据拷贝到es->​p_tx中 
- pbuf_take(es->​p,​(char*)eth_tcps.send_buffer,​len);​  + tcp_server_senddata(tpcb,​es);​         ​//​将eth_tcps.send_buffer[]里面复制给pbuf的数据发送出去 
- tcp_server_senddata(tpcb,​es);​ //​将eth_tcps.send_buffer[]里面复制给pbuf的数据发送出去 + if(es->​p)pbuf_free(es->​p);​ //​释放内存
- if(es->​p)pbuf_free(es->​p);​ //​释放内存+
  ret_err=ERR_OK;​  ret_err=ERR_OK;​
  }else{  }else{
- tcp_abort(tpcb);​ //​终止连接,​删除pcb控制块+ tcp_abort(tpcb);​ //​终止连接,​删除pcb控制块
  ret_err=ERR_ABRT;​  ret_err=ERR_ABRT;​
  }  }
icore4t_45.1601121548.txt.gz · 最后更改: 2020/09/26 19:59 由 zgf