Files
MicrochipFor32/Doc/xml/bsp___mod_bus_8cpp.xml
XerolySkinner 08f9f63eb3 内容大更新
更加规范化
加入modbus类
优化帮助文档
2022-11-22 03:43:24 +08:00

357 lines
70 KiB
XML

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.9.5" xml:lang="zh">
<compounddef id="bsp___mod_bus_8cpp" kind="file" language="C++">
<compoundname>bsp_ModBus.cpp</compoundname>
<includes refid="bsp___mod_bus_8h" local="yes">bsp_ModBus.h</includes>
<includes refid="bsp___c_r_c_8h" local="yes">bsp_CRC.h</includes>
<includes local="no">stdio.h</includes>
<includes local="no">stdlib.h</includes>
<incdepgraph>
<node id="7">
<label>bsp_CRC.h</label>
<link refid="bsp___c_r_c_8h"/>
<childnode refid="3" relation="include">
</childnode>
</node>
<node id="1">
<label>D:/gitt/MicrochipFor32/bsp_Device/bsp_ModBus.cpp</label>
<link refid="bsp___mod_bus_8cpp"/>
<childnode refid="2" relation="include">
</childnode>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="9" relation="include">
</childnode>
</node>
<node id="2">
<label>bsp_ModBus.h</label>
<link refid="bsp___mod_bus_8h"/>
<childnode refid="3" relation="include">
</childnode>
<childnode refid="5" relation="include">
</childnode>
<childnode refid="6" relation="include">
</childnode>
</node>
<node id="3">
<label>varint.h</label>
<link refid="varint_8h"/>
<childnode refid="4" relation="include">
</childnode>
</node>
<node id="6">
<label>stdarg.h</label>
</node>
<node id="4">
<label>stdint.h</label>
</node>
<node id="8">
<label>stdio.h</label>
</node>
<node id="9">
<label>stdlib.h</label>
</node>
<node id="5">
<label>usart.h</label>
</node>
</incdepgraph>
<briefdescription>
<para>ModBus通信函数 </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<programlisting>
<codeline lineno="1"><highlight class="comment">/*----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="2"><highlight class="comment"><sp/>#</highlight></codeline>
<codeline lineno="3"><highlight class="comment"><sp/>#<sp/><sp/>Copyright<sp/>(c)<sp/>2022<sp/>Yuankang<sp/>Liang(XerolySkinner)</highlight></codeline>
<codeline lineno="4"><highlight class="comment"><sp/>#</highlight></codeline>
<codeline lineno="5"><highlight class="comment"><sp/>#<sp/><sp/>本软件按原样提供,无任何明示或暗示</highlight></codeline>
<codeline lineno="6"><highlight class="comment"><sp/>#<sp/><sp/>在任何情况下,作者都不承担任何损害赔偿责任</highlight></codeline>
<codeline lineno="7"><highlight class="comment"><sp/>#</highlight></codeline>
<codeline lineno="8"><highlight class="comment"><sp/>#<sp/><sp/>使用的许可声明:</highlight></codeline>
<codeline lineno="9"><highlight class="comment"><sp/>#<sp/><sp/>1.<sp/><sp/>不得歪曲本软件的来源,你不能声称你编写了原始软件.</highlight></codeline>
<codeline lineno="10"><highlight class="comment"><sp/>#<sp/><sp/>2.<sp/><sp/>免费授予以任何目的,前提是版权声明出现在所有副本中.</highlight></codeline>
<codeline lineno="11"><highlight class="comment"><sp/>#<sp/><sp/><sp/><sp/><sp/><sp/>并且版权声明和许可声明同时出现.</highlight></codeline>
<codeline lineno="12"><highlight class="comment"><sp/>#<sp/><sp/>3.<sp/><sp/>你有使用,复制,修改,分发,和销售本软件的许可.</highlight></codeline>
<codeline lineno="13"><highlight class="comment"><sp/>#<sp/><sp/>4.<sp/><sp/>如果你在产品中使用,产品文档中的声明是赞赏的但不是必须的.</highlight></codeline>
<codeline lineno="14"><highlight class="comment"><sp/>#<sp/><sp/>5.<sp/><sp/>本通知不得从任何来源删除或更改.</highlight></codeline>
<codeline lineno="15"><highlight class="comment"><sp/>#</highlight></codeline>
<codeline lineno="16"><highlight class="comment"><sp/>#<sp/><sp/>Yuankang<sp/>Liang(XerolySkinner)</highlight></codeline>
<codeline lineno="17"><highlight class="comment"><sp/>#<sp/><sp/><sp/><sp/><sp/><sp/>E-mail:zabbcccbbaz@163.com</highlight></codeline>
<codeline lineno="18"><highlight class="comment"><sp/>#<sp/><sp/><sp/><sp/><sp/><sp/>QQ:2715099320</highlight></codeline>
<codeline lineno="19"><highlight class="comment"><sp/>#<sp/><sp/><sp/><sp/><sp/><sp/>Mobile<sp/>Phone:13005636215</highlight></codeline>
<codeline lineno="20"><highlight class="comment"><sp/>#</highlight></codeline>
<codeline lineno="21"><highlight class="comment"><sp/>#<sp/><sp/>All<sp/>rights<sp/>reserved.</highlight></codeline>
<codeline lineno="22"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="23"><highlight class="normal"></highlight></codeline>
<codeline lineno="33"><highlight class="normal"></highlight><highlight class="preprocessor">#pragma<sp/>once</highlight></codeline>
<codeline lineno="35"><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="36"><highlight class="normal"></highlight><highlight class="comment">//<sp/><sp/>头文件</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="37"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="bsp___mod_bus_8h" kindref="compound">bsp_ModBus.h</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="38"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="bsp___c_r_c_8h" kindref="compound">bsp_CRC.h</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="39"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;stdio.h&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="40"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;stdlib.h&gt;</highlight></codeline>
<codeline lineno="42"><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="43"><highlight class="normal"></highlight><highlight class="comment">//<sp/><sp/>类函数</highlight></codeline>
<codeline lineno="50" refid="classbsp___mod_bus___tx_1ada605c0e9195aefd43968cfe5b347565" refkind="member"><highlight class="comment"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classbsp___mod_bus___tx_1ada605c0e9195aefd43968cfe5b347565" kindref="member">bsp_ModBus_Tx::ReadKeepReg</ref>(<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>address,<sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>mem)<sp/>{</highlight></codeline>
<codeline lineno="51"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>dat[8];</highlight></codeline>
<codeline lineno="52"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>crc;</highlight></codeline>
<codeline lineno="53"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[0]<sp/>=<sp/><ref refid="classbsp___mod_bus___tx_1a4ee454ddd116e2b608d9b35b02eee0e4" kindref="member">ID</ref>;</highlight></codeline>
<codeline lineno="54"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[1]<sp/>=<sp/><ref refid="bsp___mod_bus_8h_1ac6d9f6c262df700be9045045502e7643a9ec5f1febebcade07d80148f67d51594" kindref="member">Fun_R_KeepReg</ref>;</highlight></codeline>
<codeline lineno="55"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[2]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[1];</highlight></codeline>
<codeline lineno="56"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[3]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[0];</highlight></codeline>
<codeline lineno="57"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[4]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;mem))[1];</highlight></codeline>
<codeline lineno="58"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[5]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;mem))[0];</highlight></codeline>
<codeline lineno="59"><highlight class="normal"><sp/><sp/><sp/><sp/>crc<sp/>=<sp/><ref refid="bsp___c_r_c_8cpp_1abb1fda5ed561362d12fe987758986919" kindref="member">CRC16_MODBUS</ref>(dat,<sp/>6);</highlight></codeline>
<codeline lineno="60"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[6]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[0];</highlight></codeline>
<codeline lineno="61"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[7]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[1];</highlight></codeline>
<codeline lineno="62"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___tx_1ac017f6145ba6f87c69a16510f868dcc2" kindref="member">Transmit</ref>(dat,8);}</highlight></codeline>
<codeline lineno="63"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="70" refid="classbsp___mod_bus___tx_1af055e2569107b8ece7abdce3301e9444" refkind="member"><highlight class="comment"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classbsp___mod_bus___tx_1af055e2569107b8ece7abdce3301e9444" kindref="member">bsp_ModBus_Tx::ReadInReg</ref>(<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>address,<sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>mem)<sp/>{</highlight></codeline>
<codeline lineno="71"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>dat[8];</highlight></codeline>
<codeline lineno="72"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>crc;</highlight></codeline>
<codeline lineno="73"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[0]<sp/>=<sp/><ref refid="classbsp___mod_bus___tx_1a4ee454ddd116e2b608d9b35b02eee0e4" kindref="member">ID</ref>;</highlight></codeline>
<codeline lineno="74"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[1]<sp/>=<sp/><ref refid="bsp___mod_bus_8h_1ac6d9f6c262df700be9045045502e7643ab285b7d7c40fa9a85adba60a3a769fca" kindref="member">Fun_R_InReg</ref>;</highlight></codeline>
<codeline lineno="75"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[2]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[1];</highlight></codeline>
<codeline lineno="76"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[3]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[0];</highlight></codeline>
<codeline lineno="77"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[4]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;mem))[1];</highlight></codeline>
<codeline lineno="78"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[5]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;mem))[0];</highlight></codeline>
<codeline lineno="79"><highlight class="normal"><sp/><sp/><sp/><sp/>crc<sp/>=<sp/><ref refid="bsp___c_r_c_8cpp_1abb1fda5ed561362d12fe987758986919" kindref="member">CRC16_MODBUS</ref>(dat,6);</highlight></codeline>
<codeline lineno="80"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[6]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[0];</highlight></codeline>
<codeline lineno="81"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[7]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[1];</highlight></codeline>
<codeline lineno="82"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___tx_1ac017f6145ba6f87c69a16510f868dcc2" kindref="member">Transmit</ref>(dat,<sp/>8);}</highlight></codeline>
<codeline lineno="83"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="90" refid="classbsp___mod_bus___tx_1a02ea1680f5c361f2cf4ebcb48b565281" refkind="member"><highlight class="comment"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classbsp___mod_bus___tx_1a02ea1680f5c361f2cf4ebcb48b565281" kindref="member">bsp_ModBus_Tx::WriteOneReg</ref>(<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>address,<sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>var)<sp/>{</highlight></codeline>
<codeline lineno="91"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>dat[8];</highlight></codeline>
<codeline lineno="92"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>crc;</highlight></codeline>
<codeline lineno="93"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[0]<sp/>=<sp/><ref refid="classbsp___mod_bus___tx_1a4ee454ddd116e2b608d9b35b02eee0e4" kindref="member">ID</ref>;</highlight></codeline>
<codeline lineno="94"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[1]<sp/>=<sp/><ref refid="bsp___mod_bus_8h_1ac6d9f6c262df700be9045045502e7643a2e8689560573f300af3a6c48fdd6ce86" kindref="member">Fun_W_OneReg</ref>;</highlight></codeline>
<codeline lineno="95"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[2]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[1];</highlight></codeline>
<codeline lineno="96"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[3]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[0];</highlight></codeline>
<codeline lineno="97"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[4]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;var))[1];</highlight></codeline>
<codeline lineno="98"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[5]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;var))[0];</highlight></codeline>
<codeline lineno="99"><highlight class="normal"><sp/><sp/><sp/><sp/>crc<sp/>=<sp/><ref refid="bsp___c_r_c_8cpp_1abb1fda5ed561362d12fe987758986919" kindref="member">CRC16_MODBUS</ref>(dat,<sp/>6);</highlight></codeline>
<codeline lineno="100"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[6]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[0];</highlight></codeline>
<codeline lineno="101"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[7]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[1];</highlight></codeline>
<codeline lineno="102"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___tx_1ac017f6145ba6f87c69a16510f868dcc2" kindref="member">Transmit</ref>(dat,<sp/>8);}</highlight></codeline>
<codeline lineno="103"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="112" refid="classbsp___mod_bus___tx_1a268c136782f8146662f33878522c270c" refkind="member"><highlight class="comment"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classbsp___mod_bus___tx_1a268c136782f8146662f33878522c270c" kindref="member">bsp_ModBus_Tx::WriteRegs</ref>(<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>address,<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>mem,<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref>*<sp/>var)<sp/>{</highlight></codeline>
<codeline lineno="113"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>bytes<sp/>=<sp/>9<sp/>+<sp/>mem<sp/>*<sp/>2;</highlight></codeline>
<codeline lineno="114"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*<sp/>dat<sp/>=<sp/>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)malloc(bytes);</highlight></codeline>
<codeline lineno="115"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(dat<sp/>==<sp/>NULL)</highlight><highlight class="keywordflow">return</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="116"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>crc;</highlight></codeline>
<codeline lineno="117"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[0]<sp/>=<sp/><ref refid="classbsp___mod_bus___tx_1a4ee454ddd116e2b608d9b35b02eee0e4" kindref="member">ID</ref>;</highlight></codeline>
<codeline lineno="118"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[1]<sp/>=<sp/><ref refid="bsp___mod_bus_8h_1ac6d9f6c262df700be9045045502e7643a54562faaab8c1c932c46c6c4cb2552f9" kindref="member">Fun_W_Regs</ref>;</highlight></codeline>
<codeline lineno="119"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[2]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[1];</highlight></codeline>
<codeline lineno="120"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[3]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[0];</highlight></codeline>
<codeline lineno="121"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[4]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;mem))[1];</highlight></codeline>
<codeline lineno="122"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[5]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;mem))[0];</highlight></codeline>
<codeline lineno="123"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[6]<sp/>=<sp/>mem*2;</highlight></codeline>
<codeline lineno="124"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>填入数据</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="125"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>mem;<sp/>i++){</highlight></codeline>
<codeline lineno="126"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>dat[7<sp/>+<sp/>i*2]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)var)[1+i*2];</highlight></codeline>
<codeline lineno="127"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>dat[8<sp/>+<sp/>i*2]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)var)[0+i*2];}</highlight></codeline>
<codeline lineno="128"><highlight class="normal"><sp/><sp/><sp/><sp/>crc<sp/>=<sp/><ref refid="bsp___c_r_c_8cpp_1abb1fda5ed561362d12fe987758986919" kindref="member">CRC16_MODBUS</ref>(dat,<sp/>bytes<sp/>-<sp/>2);</highlight></codeline>
<codeline lineno="129"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[bytes<sp/>-<sp/>2]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[0];</highlight></codeline>
<codeline lineno="130"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[bytes<sp/>-<sp/>1]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[1];</highlight></codeline>
<codeline lineno="131"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___tx_1ac017f6145ba6f87c69a16510f868dcc2" kindref="member">Transmit</ref>(dat,<sp/>bytes);</highlight></codeline>
<codeline lineno="132"><highlight class="normal"><sp/><sp/><sp/><sp/>free(dat);}</highlight></codeline>
<codeline lineno="133"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="142" refid="classbsp___mod_bus___tx_1acc267977d61716e25fd3e3ec57bc2960" refkind="member"><highlight class="comment"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classbsp___mod_bus___tx_1acc267977d61716e25fd3e3ec57bc2960" kindref="member">bsp_ModBus_Tx::WriteRegsVar</ref>(<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>address,<sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>mem,...)<sp/>{</highlight></codeline>
<codeline lineno="143"><highlight class="normal"><sp/><sp/><sp/><sp/>va_list<sp/>table;</highlight></codeline>
<codeline lineno="144"><highlight class="normal"><sp/><sp/><sp/><sp/>va_start(table,mem);</highlight></codeline>
<codeline lineno="145"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>vars;</highlight></codeline>
<codeline lineno="146"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>bytes<sp/>=<sp/>9<sp/>+<sp/>mem<sp/>*<sp/>2;</highlight></codeline>
<codeline lineno="147"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*<sp/>dat<sp/>=<sp/>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)malloc(bytes);</highlight></codeline>
<codeline lineno="148"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(dat<sp/>==<sp/>NULL)</highlight><highlight class="keywordflow">return</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="149"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>crc;</highlight></codeline>
<codeline lineno="150"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[0]<sp/>=<sp/><ref refid="classbsp___mod_bus___tx_1a4ee454ddd116e2b608d9b35b02eee0e4" kindref="member">ID</ref>;</highlight></codeline>
<codeline lineno="151"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[1]<sp/>=<sp/><ref refid="bsp___mod_bus_8h_1ac6d9f6c262df700be9045045502e7643a54562faaab8c1c932c46c6c4cb2552f9" kindref="member">Fun_W_Regs</ref>;</highlight></codeline>
<codeline lineno="152"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[2]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[1];</highlight></codeline>
<codeline lineno="153"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[3]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[0];</highlight></codeline>
<codeline lineno="154"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[4]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;mem))[1];</highlight></codeline>
<codeline lineno="155"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[5]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;mem))[0];</highlight></codeline>
<codeline lineno="156"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[6]<sp/>=<sp/>mem*2;</highlight></codeline>
<codeline lineno="157"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>填入数据</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="158"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>mem;<sp/>i++){</highlight></codeline>
<codeline lineno="159"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>vars=va_arg(table,<sp/><ref refid="varint_8h_1afaa62991928fb9fb18ff0db62a040aba" kindref="member">u32</ref>);</highlight></codeline>
<codeline lineno="160"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>dat[7<sp/>+<sp/>i*2]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;vars))[1];</highlight></codeline>
<codeline lineno="161"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>dat[8<sp/>+<sp/>i*2]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;vars))[0];}</highlight></codeline>
<codeline lineno="162"><highlight class="normal"><sp/><sp/><sp/><sp/>crc<sp/>=<sp/><ref refid="bsp___c_r_c_8cpp_1abb1fda5ed561362d12fe987758986919" kindref="member">CRC16_MODBUS</ref>(dat,<sp/>bytes<sp/>-<sp/>2);</highlight></codeline>
<codeline lineno="163"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[bytes<sp/>-<sp/>2]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[0];</highlight></codeline>
<codeline lineno="164"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[bytes<sp/>-<sp/>1]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[1];</highlight></codeline>
<codeline lineno="165"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___tx_1ac017f6145ba6f87c69a16510f868dcc2" kindref="member">Transmit</ref>(dat,<sp/>bytes);</highlight></codeline>
<codeline lineno="166"><highlight class="normal"><sp/><sp/><sp/><sp/>free(dat);</highlight></codeline>
<codeline lineno="167"><highlight class="normal"><sp/><sp/><sp/><sp/>va_end(table);}</highlight></codeline>
<codeline lineno="168"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="175" refid="classbsp___mod_bus___tx_1abc721f5c61e236df505f3447818be921" refkind="member"><highlight class="comment"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classbsp___mod_bus___tx_1abc721f5c61e236df505f3447818be921" kindref="member">bsp_ModBus_Tx::ReadOutCoil</ref>(<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>address,<sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>mem)<sp/>{</highlight></codeline>
<codeline lineno="176"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>dat[8];</highlight></codeline>
<codeline lineno="177"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>crc;</highlight></codeline>
<codeline lineno="178"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[0]<sp/>=<sp/><ref refid="classbsp___mod_bus___tx_1a4ee454ddd116e2b608d9b35b02eee0e4" kindref="member">ID</ref>;</highlight></codeline>
<codeline lineno="179"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[1]<sp/>=<sp/><ref refid="bsp___mod_bus_8h_1ac6d9f6c262df700be9045045502e7643afa0834864982fdb57c9a954bdbd1599b" kindref="member">Fun_R_OutCoil</ref>;</highlight></codeline>
<codeline lineno="180"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[2]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[1];</highlight></codeline>
<codeline lineno="181"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[3]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[0];</highlight></codeline>
<codeline lineno="182"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[4]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;mem))[1];</highlight></codeline>
<codeline lineno="183"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[5]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;mem))[0];</highlight></codeline>
<codeline lineno="184"><highlight class="normal"><sp/><sp/><sp/><sp/>crc<sp/>=<sp/><ref refid="bsp___c_r_c_8cpp_1abb1fda5ed561362d12fe987758986919" kindref="member">CRC16_MODBUS</ref>(dat,<sp/>6);</highlight></codeline>
<codeline lineno="185"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[6]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[0];</highlight></codeline>
<codeline lineno="186"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[7]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[1];</highlight></codeline>
<codeline lineno="187"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___tx_1ac017f6145ba6f87c69a16510f868dcc2" kindref="member">Transmit</ref>(dat,<sp/>8);}</highlight></codeline>
<codeline lineno="188"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="195" refid="classbsp___mod_bus___tx_1a76e712e8d638ecc7b453e1c8afbbad98" refkind="member"><highlight class="comment"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classbsp___mod_bus___tx_1a76e712e8d638ecc7b453e1c8afbbad98" kindref="member">bsp_ModBus_Tx::ReadInCoil</ref>(<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>address,<sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>mem)<sp/>{</highlight></codeline>
<codeline lineno="196"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>dat[8];</highlight></codeline>
<codeline lineno="197"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>crc;</highlight></codeline>
<codeline lineno="198"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[0]<sp/>=<sp/><ref refid="classbsp___mod_bus___tx_1a4ee454ddd116e2b608d9b35b02eee0e4" kindref="member">ID</ref>;</highlight></codeline>
<codeline lineno="199"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[1]<sp/>=<sp/><ref refid="bsp___mod_bus_8h_1ac6d9f6c262df700be9045045502e7643a8c70d4d5036c1a3f9c51a545d13fdd92" kindref="member">Fun_R_InCoil</ref>;</highlight></codeline>
<codeline lineno="200"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[2]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[1];</highlight></codeline>
<codeline lineno="201"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[3]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[0];</highlight></codeline>
<codeline lineno="202"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[4]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;mem))[1];</highlight></codeline>
<codeline lineno="203"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[5]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;mem))[0];</highlight></codeline>
<codeline lineno="204"><highlight class="normal"><sp/><sp/><sp/><sp/>crc<sp/>=<sp/><ref refid="bsp___c_r_c_8cpp_1abb1fda5ed561362d12fe987758986919" kindref="member">CRC16_MODBUS</ref>(dat,<sp/>6);</highlight></codeline>
<codeline lineno="205"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[6]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[0];</highlight></codeline>
<codeline lineno="206"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[7]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[1];</highlight></codeline>
<codeline lineno="207"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___tx_1ac017f6145ba6f87c69a16510f868dcc2" kindref="member">Transmit</ref>(dat,<sp/>8);}</highlight></codeline>
<codeline lineno="208"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="217" refid="classbsp___mod_bus___tx_1aa8d37cc0cefaad8f41bc1d195a326d95" refkind="member"><highlight class="comment"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classbsp___mod_bus___tx_1aa8d37cc0cefaad8f41bc1d195a326d95" kindref="member">bsp_ModBus_Tx::WriteOneCoil</ref>(<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>address,<sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>state){</highlight></codeline>
<codeline lineno="218"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>dat[8];</highlight></codeline>
<codeline lineno="219"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>var<sp/>=<sp/>state<sp/>?<sp/>0xFF00<sp/>:<sp/>0x0000;</highlight></codeline>
<codeline lineno="220"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>crc;</highlight></codeline>
<codeline lineno="221"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[0]<sp/>=<sp/><ref refid="classbsp___mod_bus___tx_1a4ee454ddd116e2b608d9b35b02eee0e4" kindref="member">ID</ref>;</highlight></codeline>
<codeline lineno="222"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[1]<sp/>=<sp/><ref refid="bsp___mod_bus_8h_1ac6d9f6c262df700be9045045502e7643a95bb48bd2de82de8a2f5684a6cccff0f" kindref="member">Fun_W_OneCoil</ref>;</highlight></codeline>
<codeline lineno="223"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[2]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[1];</highlight></codeline>
<codeline lineno="224"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[3]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[0];</highlight></codeline>
<codeline lineno="225"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[4]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;var))[1];</highlight></codeline>
<codeline lineno="226"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[5]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;var))[0];</highlight></codeline>
<codeline lineno="227"><highlight class="normal"><sp/><sp/><sp/><sp/>crc<sp/>=<sp/><ref refid="bsp___c_r_c_8cpp_1abb1fda5ed561362d12fe987758986919" kindref="member">CRC16_MODBUS</ref>(dat,<sp/>6);</highlight></codeline>
<codeline lineno="228"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[6]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[0];</highlight></codeline>
<codeline lineno="229"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[7]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[1];</highlight></codeline>
<codeline lineno="230"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___tx_1ac017f6145ba6f87c69a16510f868dcc2" kindref="member">Transmit</ref>(dat,<sp/>8);}</highlight></codeline>
<codeline lineno="231"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="240" refid="classbsp___mod_bus___tx_1a630ac7566fe9d1773baa813802202d0f" refkind="member"><highlight class="comment"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classbsp___mod_bus___tx_1a630ac7566fe9d1773baa813802202d0f" kindref="member">bsp_ModBus_Tx::WriteCoils</ref>(<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>address,<sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>mem,<sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*<sp/>var)<sp/>{</highlight></codeline>
<codeline lineno="241"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>bytes<sp/>=<sp/>(mem<sp/>/<sp/>8)<sp/>+<sp/>(mem<sp/>%<sp/>8<sp/>!=<sp/>0)<sp/>+<sp/>9;</highlight></codeline>
<codeline lineno="242"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*<sp/>dat<sp/>=<sp/>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)malloc(bytes);</highlight></codeline>
<codeline lineno="243"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(dat<sp/>==<sp/>NULL)</highlight><highlight class="keywordflow">return</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="244"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>crc;</highlight></codeline>
<codeline lineno="245"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[0]<sp/>=<sp/><ref refid="classbsp___mod_bus___tx_1a4ee454ddd116e2b608d9b35b02eee0e4" kindref="member">ID</ref>;</highlight></codeline>
<codeline lineno="246"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[1]<sp/>=<sp/><ref refid="bsp___mod_bus_8h_1ac6d9f6c262df700be9045045502e7643a0a40a9622af4e5cb7daecbdb303ee35e" kindref="member">Fun_W_Coils</ref>;</highlight></codeline>
<codeline lineno="247"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[2]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[1];</highlight></codeline>
<codeline lineno="248"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[3]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[0];</highlight></codeline>
<codeline lineno="249"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[4]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;mem))[1];</highlight></codeline>
<codeline lineno="250"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[5]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;mem))[0];</highlight></codeline>
<codeline lineno="251"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[6]<sp/>=<sp/>bytes<sp/>-<sp/>9;</highlight></codeline>
<codeline lineno="252"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>填入数据</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="253"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>bytes<sp/>-<sp/>9;<sp/>i++)dat[7<sp/>+<sp/>i]<sp/>=<sp/>var[i];</highlight></codeline>
<codeline lineno="254"><highlight class="normal"><sp/><sp/><sp/><sp/>crc<sp/>=<sp/><ref refid="bsp___c_r_c_8cpp_1abb1fda5ed561362d12fe987758986919" kindref="member">CRC16_MODBUS</ref>(dat,<sp/>bytes<sp/>-<sp/>2);</highlight></codeline>
<codeline lineno="255"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[bytes<sp/>-<sp/>2]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[0];</highlight></codeline>
<codeline lineno="256"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[bytes<sp/>-<sp/>1]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[1];</highlight></codeline>
<codeline lineno="257"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___tx_1ac017f6145ba6f87c69a16510f868dcc2" kindref="member">Transmit</ref>(dat,<sp/>bytes);</highlight></codeline>
<codeline lineno="258"><highlight class="normal"><sp/><sp/><sp/><sp/>free(dat);}</highlight></codeline>
<codeline lineno="259"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="268" refid="classbsp___mod_bus___tx_1a280c5d7c99196a11b5fee7b34421a8ff" refkind="member"><highlight class="comment"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classbsp___mod_bus___tx_1a280c5d7c99196a11b5fee7b34421a8ff" kindref="member">bsp_ModBus_Tx::WriteCoilsVar</ref>(<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>address,<sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>mem,...)<sp/>{</highlight></codeline>
<codeline lineno="269"><highlight class="normal"><sp/><sp/><sp/><sp/>va_list<sp/>table;</highlight></codeline>
<codeline lineno="270"><highlight class="normal"><sp/><sp/><sp/><sp/>va_start(table,mem);</highlight></codeline>
<codeline lineno="271"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>var=0;</highlight></codeline>
<codeline lineno="272"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>crc;</highlight></codeline>
<codeline lineno="273"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>bytes<sp/>=<sp/>(mem<sp/>/<sp/>8)<sp/>+<sp/>(mem<sp/>%<sp/>8<sp/>!=<sp/>0)<sp/>+<sp/>9;</highlight></codeline>
<codeline lineno="274"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*<sp/>dat<sp/>=<sp/>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)malloc(bytes);</highlight></codeline>
<codeline lineno="275"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(dat<sp/>==<sp/>NULL)</highlight><highlight class="keywordflow">return</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="276"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[0]<sp/>=<sp/><ref refid="classbsp___mod_bus___tx_1a4ee454ddd116e2b608d9b35b02eee0e4" kindref="member">ID</ref>;</highlight></codeline>
<codeline lineno="277"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[1]<sp/>=<sp/><ref refid="bsp___mod_bus_8h_1ac6d9f6c262df700be9045045502e7643a0a40a9622af4e5cb7daecbdb303ee35e" kindref="member">Fun_W_Coils</ref>;</highlight></codeline>
<codeline lineno="278"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[2]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[1];</highlight></codeline>
<codeline lineno="279"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[3]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;address))[0];</highlight></codeline>
<codeline lineno="280"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[4]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;mem))[1];</highlight></codeline>
<codeline lineno="281"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[5]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;mem))[0];</highlight></codeline>
<codeline lineno="282"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[6]<sp/>=<sp/>bytes<sp/>-<sp/>9;</highlight></codeline>
<codeline lineno="283"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>填入管脚信息</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="284"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal">(<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>i=0;i&lt;mem;i++){</highlight></codeline>
<codeline lineno="285"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>var=va_arg(table,<ref refid="varint_8h_1afaa62991928fb9fb18ff0db62a040aba" kindref="member">u32</ref>);</highlight></codeline>
<codeline lineno="286"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal">(var)</highlight></codeline>
<codeline lineno="287"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>dat[7<sp/>+<sp/>(i/8)]|=1&lt;&lt;(i%8);</highlight></codeline>
<codeline lineno="288"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="289"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>dat[7<sp/>+<sp/>(i/8)]&amp;=~(1&lt;&lt;(i%8));}</highlight></codeline>
<codeline lineno="290"><highlight class="normal"><sp/><sp/><sp/><sp/>crc<sp/>=<sp/><ref refid="bsp___c_r_c_8cpp_1abb1fda5ed561362d12fe987758986919" kindref="member">CRC16_MODBUS</ref>(dat,<sp/>bytes<sp/>-<sp/>2);</highlight></codeline>
<codeline lineno="291"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[bytes<sp/>-<sp/>2]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[0];</highlight></codeline>
<codeline lineno="292"><highlight class="normal"><sp/><sp/><sp/><sp/>dat[bytes<sp/>-<sp/>1]<sp/>=<sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[1];</highlight></codeline>
<codeline lineno="293"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___tx_1ac017f6145ba6f87c69a16510f868dcc2" kindref="member">Transmit</ref>(dat,<sp/>bytes);</highlight></codeline>
<codeline lineno="294"><highlight class="normal"><sp/><sp/><sp/><sp/>free(dat);</highlight></codeline>
<codeline lineno="295"><highlight class="normal"><sp/><sp/><sp/><sp/>va_end(table);}</highlight></codeline>
<codeline lineno="297"><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="298"><highlight class="normal"></highlight><highlight class="comment">//<sp/><sp/>类函数</highlight></codeline>
<codeline lineno="304" refid="classbsp___mod_bus___rx_1a39330845d4ced51850b9edaaab052e0f" refkind="member"><highlight class="comment"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classbsp___mod_bus___rx_1a39330845d4ced51850b9edaaab052e0f" kindref="member">bsp_ModBus_Rx::analysis</ref>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*<sp/>dat)<sp/>{</highlight></codeline>
<codeline lineno="305"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>crc<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="306"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1a045cc9c5f9d26ad5be1da2d2cfdcbefc" kindref="member">ID</ref><sp/>=<sp/>dat[0];</highlight></codeline>
<codeline lineno="307"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1a0a5cdc492b09b33ae665706c9968e5d5" kindref="member">Func</ref><sp/>=<sp/>dat[1];</highlight></codeline>
<codeline lineno="308"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>释放缓存内存</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="309"><highlight class="normal"><sp/><sp/><sp/><sp/>free(<ref refid="classbsp___mod_bus___rx_1a6612d15d148b4944662851bd8fabae04" kindref="member">OutCoilDat</ref>);</highlight></codeline>
<codeline lineno="310"><highlight class="normal"><sp/><sp/><sp/><sp/>free(<ref refid="classbsp___mod_bus___rx_1a8ca97f2e7b033faddbb1772f15d91d4d" kindref="member">InCoilDat</ref>);</highlight></codeline>
<codeline lineno="311"><highlight class="normal"><sp/><sp/><sp/><sp/>free(<ref refid="classbsp___mod_bus___rx_1a091cc0733eb4aa6b06c10afdbfd46b7f" kindref="member">KeepRegDat</ref>);</highlight></codeline>
<codeline lineno="312"><highlight class="normal"><sp/><sp/><sp/><sp/>free(<ref refid="classbsp___mod_bus___rx_1ab275dbfa83dd90eff0cbf0411dfe8e4a" kindref="member">InRegDat</ref>);</highlight></codeline>
<codeline lineno="313"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>CRC检验</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="314"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="classbsp___mod_bus___rx_1a0a5cdc492b09b33ae665706c9968e5d5" kindref="member">Func</ref><sp/>==<sp/><ref refid="bsp___mod_bus_8h_1ac6d9f6c262df700be9045045502e7643afa0834864982fdb57c9a954bdbd1599b" kindref="member">Fun_R_OutCoil</ref><sp/>||</highlight></codeline>
<codeline lineno="315"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1a0a5cdc492b09b33ae665706c9968e5d5" kindref="member">Func</ref><sp/>==<sp/><ref refid="bsp___mod_bus_8h_1ac6d9f6c262df700be9045045502e7643a8c70d4d5036c1a3f9c51a545d13fdd92" kindref="member">Fun_R_InCoil</ref><sp/>||</highlight></codeline>
<codeline lineno="316"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1a0a5cdc492b09b33ae665706c9968e5d5" kindref="member">Func</ref><sp/>==<sp/><ref refid="bsp___mod_bus_8h_1ac6d9f6c262df700be9045045502e7643a9ec5f1febebcade07d80148f67d51594" kindref="member">Fun_R_KeepReg</ref><sp/>||</highlight></codeline>
<codeline lineno="317"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1a0a5cdc492b09b33ae665706c9968e5d5" kindref="member">Func</ref><sp/>==<sp/><ref refid="bsp___mod_bus_8h_1ac6d9f6c262df700be9045045502e7643ab285b7d7c40fa9a85adba60a3a769fca" kindref="member">Fun_R_InReg</ref>)<sp/>{</highlight></codeline>
<codeline lineno="318"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>crc<sp/>=<sp/><ref refid="bsp___c_r_c_8cpp_1abb1fda5ed561362d12fe987758986919" kindref="member">CRC16_MODBUS</ref>(dat,<sp/>dat[2]<sp/>+<sp/>3);</highlight></codeline>
<codeline lineno="319"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1ac1a35ae91223298913373de0d3e7c02d" kindref="member">crcts</ref><sp/>=<sp/>(<sp/><sp/><sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[1]<sp/>==<sp/>dat[dat[2]<sp/>+<sp/>3]<sp/>&amp;&amp;</highlight></codeline>
<codeline lineno="320"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)(&amp;crc))[0]<sp/>==<sp/>dat[dat[2]<sp/>+<sp/>4]);}</highlight></codeline>
<codeline lineno="321"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">switch</highlight><highlight class="normal"><sp/>(<ref refid="classbsp___mod_bus___rx_1a0a5cdc492b09b33ae665706c9968e5d5" kindref="member">Func</ref>)<sp/>{</highlight></codeline>
<codeline lineno="322"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/><ref refid="bsp___mod_bus_8h_1ac6d9f6c262df700be9045045502e7643afa0834864982fdb57c9a954bdbd1599b" kindref="member">Fun_R_OutCoil</ref>:</highlight></codeline>
<codeline lineno="323"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>输出线圈</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="324"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1a062f82edfe722d8cb783b67a5a085bee" kindref="member">OutCoilMem</ref><sp/>=<sp/>dat[2];</highlight></codeline>
<codeline lineno="325"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1a6612d15d148b4944662851bd8fabae04" kindref="member">OutCoilDat</ref><sp/>=<sp/>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)malloc(<ref refid="classbsp___mod_bus___rx_1a062f82edfe722d8cb783b67a5a085bee" kindref="member">OutCoilMem</ref>);</highlight></codeline>
<codeline lineno="326"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="classbsp___mod_bus___rx_1a6612d15d148b4944662851bd8fabae04" kindref="member">OutCoilDat</ref><sp/>==<sp/>NULL)</highlight><highlight class="keywordflow">break</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="327"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/><ref refid="classbsp___mod_bus___rx_1a062f82edfe722d8cb783b67a5a085bee" kindref="member">OutCoilMem</ref>;<sp/>i++)</highlight></codeline>
<codeline lineno="328"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1a6612d15d148b4944662851bd8fabae04" kindref="member">OutCoilDat</ref>[i]<sp/>=<sp/>dat[3<sp/>+<sp/>i];</highlight></codeline>
<codeline lineno="329"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="330"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/><ref refid="bsp___mod_bus_8h_1ac6d9f6c262df700be9045045502e7643a8c70d4d5036c1a3f9c51a545d13fdd92" kindref="member">Fun_R_InCoil</ref>:</highlight></codeline>
<codeline lineno="331"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>输入线圈</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="332"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1a22f49f0782c4580b0f582c27fbd758a3" kindref="member">InCoilMem</ref><sp/>=<sp/>dat[2];</highlight></codeline>
<codeline lineno="333"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1a8ca97f2e7b033faddbb1772f15d91d4d" kindref="member">InCoilDat</ref><sp/>=<sp/>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)malloc(<ref refid="classbsp___mod_bus___rx_1a22f49f0782c4580b0f582c27fbd758a3" kindref="member">InCoilMem</ref>);</highlight></codeline>
<codeline lineno="334"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="classbsp___mod_bus___rx_1a8ca97f2e7b033faddbb1772f15d91d4d" kindref="member">InCoilDat</ref><sp/>==<sp/>NULL)</highlight><highlight class="keywordflow">break</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="335"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/><ref refid="classbsp___mod_bus___rx_1a22f49f0782c4580b0f582c27fbd758a3" kindref="member">InCoilMem</ref>;<sp/>i++)</highlight></codeline>
<codeline lineno="336"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1a8ca97f2e7b033faddbb1772f15d91d4d" kindref="member">InCoilDat</ref>[i]<sp/>=<sp/>dat[3<sp/>+<sp/>i];</highlight></codeline>
<codeline lineno="337"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="338"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/><ref refid="bsp___mod_bus_8h_1ac6d9f6c262df700be9045045502e7643a9ec5f1febebcade07d80148f67d51594" kindref="member">Fun_R_KeepReg</ref>:</highlight></codeline>
<codeline lineno="339"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>保持寄存器</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="340"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1a7622d0c8c56feb97d263f57115ef3f6a" kindref="member">KeepRegMem</ref><sp/>=<sp/>dat[2]<sp/>/<sp/>2;</highlight></codeline>
<codeline lineno="341"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1a091cc0733eb4aa6b06c10afdbfd46b7f" kindref="member">KeepRegDat</ref><sp/>=<sp/>(<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref>*)malloc(<ref refid="classbsp___mod_bus___rx_1a7622d0c8c56feb97d263f57115ef3f6a" kindref="member">KeepRegMem</ref><sp/>*<sp/>2);</highlight></codeline>
<codeline lineno="342"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="classbsp___mod_bus___rx_1a091cc0733eb4aa6b06c10afdbfd46b7f" kindref="member">KeepRegDat</ref><sp/>==<sp/>NULL)</highlight><highlight class="keywordflow">break</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="343"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/><ref refid="classbsp___mod_bus___rx_1a7622d0c8c56feb97d263f57115ef3f6a" kindref="member">KeepRegMem</ref>;<sp/>i++)<sp/>{</highlight></codeline>
<codeline lineno="344"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)<ref refid="classbsp___mod_bus___rx_1a091cc0733eb4aa6b06c10afdbfd46b7f" kindref="member">KeepRegDat</ref>)[1<sp/>+<sp/>i<sp/>*<sp/>2]<sp/>=<sp/>dat[3<sp/>+<sp/>i<sp/>*<sp/>2];</highlight></codeline>
<codeline lineno="345"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)<ref refid="classbsp___mod_bus___rx_1a091cc0733eb4aa6b06c10afdbfd46b7f" kindref="member">KeepRegDat</ref>)[0<sp/>+<sp/>i<sp/>*<sp/>2]<sp/>=<sp/>dat[4<sp/>+<sp/>i<sp/>*<sp/>2];}</highlight></codeline>
<codeline lineno="346"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="347"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/><ref refid="bsp___mod_bus_8h_1ac6d9f6c262df700be9045045502e7643ab285b7d7c40fa9a85adba60a3a769fca" kindref="member">Fun_R_InReg</ref>:</highlight></codeline>
<codeline lineno="348"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>输入寄存器</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="349"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1a37508047d184916eb7133a4ad8f10a6c" kindref="member">InRegMem</ref><sp/>=<sp/>dat[2]<sp/>/<sp/>2;</highlight></codeline>
<codeline lineno="350"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1ab275dbfa83dd90eff0cbf0411dfe8e4a" kindref="member">InRegDat</ref><sp/>=<sp/>(<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref>*)malloc(<ref refid="classbsp___mod_bus___rx_1a37508047d184916eb7133a4ad8f10a6c" kindref="member">InRegMem</ref><sp/>*<sp/>2);</highlight></codeline>
<codeline lineno="351"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="classbsp___mod_bus___rx_1ab275dbfa83dd90eff0cbf0411dfe8e4a" kindref="member">InRegDat</ref><sp/>==<sp/>NULL)</highlight><highlight class="keywordflow">break</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="352"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/><ref refid="classbsp___mod_bus___rx_1a37508047d184916eb7133a4ad8f10a6c" kindref="member">InRegMem</ref>;<sp/>i++)<sp/>{</highlight></codeline>
<codeline lineno="353"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)<ref refid="classbsp___mod_bus___rx_1ab275dbfa83dd90eff0cbf0411dfe8e4a" kindref="member">InRegDat</ref>)[1<sp/>+<sp/>i<sp/>*<sp/>2]<sp/>=<sp/>dat[3<sp/>+<sp/>i<sp/>*<sp/>2];</highlight></codeline>
<codeline lineno="354"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>((<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*)<ref refid="classbsp___mod_bus___rx_1ab275dbfa83dd90eff0cbf0411dfe8e4a" kindref="member">InRegDat</ref>)[0<sp/>+<sp/>i<sp/>*<sp/>2]<sp/>=<sp/>dat[4<sp/>+<sp/>i<sp/>*<sp/>2];}</highlight></codeline>
<codeline lineno="355"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="356"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="357"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>写回显与其他</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="358"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal">;}}</highlight></codeline>
<codeline lineno="360"><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="361"><highlight class="normal"></highlight><highlight class="comment">//<sp/><sp/>构造函数</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="362" refid="classbsp___mod_bus___tx_1ac277122ddb733aa37a0000086d5ae239" refkind="member"><highlight class="normal"><ref refid="classbsp___mod_bus___tx_1ac277122ddb733aa37a0000086d5ae239" kindref="member">bsp_ModBus_Tx::bsp_ModBus_Tx</ref>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>ID)<sp/>{</highlight></codeline>
<codeline lineno="363"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___tx_1a4ee454ddd116e2b608d9b35b02eee0e4" kindref="member">bsp_ModBus_Tx::ID</ref><sp/>=<sp/><ref refid="classbsp___mod_bus___tx_1a4ee454ddd116e2b608d9b35b02eee0e4" kindref="member">ID</ref>;}</highlight></codeline>
<codeline lineno="364"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="365" refid="classbsp___mod_bus___rx_1a87e68578770301c3d78c9b7f551bb627" refkind="member"><highlight class="normal"><ref refid="classbsp___mod_bus___rx_1a87e68578770301c3d78c9b7f551bb627" kindref="member">bsp_ModBus_Rx::bsp_ModBus_Rx</ref>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">)<sp/>{</highlight></codeline>
<codeline lineno="366"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1a091cc0733eb4aa6b06c10afdbfd46b7f" kindref="member">KeepRegDat</ref><sp/>=<sp/>NULL;</highlight></codeline>
<codeline lineno="367"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1ab275dbfa83dd90eff0cbf0411dfe8e4a" kindref="member">InRegDat</ref><sp/>=<sp/>NULL;</highlight></codeline>
<codeline lineno="368"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1a6612d15d148b4944662851bd8fabae04" kindref="member">OutCoilDat</ref><sp/>=<sp/>NULL;</highlight></codeline>
<codeline lineno="369"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___mod_bus___rx_1a8ca97f2e7b033faddbb1772f15d91d4d" kindref="member">InCoilDat</ref><sp/>=<sp/>NULL;}</highlight></codeline>
<codeline lineno="370"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="371" refid="classbsp___mod_bus___rx_1afa1dac97034b51725349ab5b1a2aa909" refkind="member"><highlight class="normal"><ref refid="classbsp___mod_bus___rx_1afa1dac97034b51725349ab5b1a2aa909" kindref="member">bsp_ModBus_Rx::~bsp_ModBus_Rx</ref>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">){</highlight></codeline>
<codeline lineno="372"><highlight class="normal"><sp/><sp/><sp/><sp/>free(<ref refid="classbsp___mod_bus___rx_1a6612d15d148b4944662851bd8fabae04" kindref="member">OutCoilDat</ref>);</highlight></codeline>
<codeline lineno="373"><highlight class="normal"><sp/><sp/><sp/><sp/>free(<ref refid="classbsp___mod_bus___rx_1a8ca97f2e7b033faddbb1772f15d91d4d" kindref="member">InCoilDat</ref>);</highlight></codeline>
<codeline lineno="374"><highlight class="normal"><sp/><sp/><sp/><sp/>free(<ref refid="classbsp___mod_bus___rx_1a091cc0733eb4aa6b06c10afdbfd46b7f" kindref="member">KeepRegDat</ref>);</highlight></codeline>
<codeline lineno="375"><highlight class="normal"><sp/><sp/><sp/><sp/>free(<ref refid="classbsp___mod_bus___rx_1ab275dbfa83dd90eff0cbf0411dfe8e4a" kindref="member">InRegDat</ref>);}</highlight></codeline>
</programlisting>
<location file="D:/gitt/MicrochipFor32/bsp_Device/bsp_ModBus.cpp"/>
</compounddef>
</doxygen>