生殖道分泌物分析仪工控屏通信协议
<h4>生殖道分泌物分析仪工控屏通信协议</h4>
<h5>1.通讯方式:UDP</h5>
<p>无须建立连接,即发即用。</p>
<h5>2.编码格式:UTF-8</h5>
<h5>3.协议格式</h5>
<table>
<thead>
<tr>
<th>组成部分</th>
<th>内容</th>
<th>长度</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>固定头</td>
<td>px+#</td>
<td>4</td>
</tr>
<tr>
<td>功能码</td>
<td>0000-9999</td>
<td>4</td>
<td>长度不足4时左边填充0</td>
</tr>
<tr>
<td>报文</td>
<td>Json格式</td>
<td>Max:9999</td>
</tr>
<tr>
<td>校验码</td>
<td>功能码与报文的UTF8格式的Byte数组之和取10000的余数</td>
<td>4</td>
<td>长度不足4时左边填充0</td>
</tr>
<tr>
<td>固定尾</td>
<td>px-#</td>
<td>4</td>
</tr>
</tbody>
</table>
<p>数据包长度 = 16(固定长度)+报文长度</p>
<p>示例:<code>px+#0100{&quot;FunctionID&quot;:100,&quot;ControlType&quot;:1}0631px-#</code></p>
<h5>4.应答机制与规范</h5>
<ul>
<li>遵从一问一答的规则,主机发起请求,从机做出回复,通信双方可互为主从。</li>
<li>请求或响应报文应该继承接口IRsfRequest或者IRsfRequest<T>,定义如下:
<pre><code class="language-csharp">public interface IRsfRequest
{
/// &lt;summary&gt;
/// 功能码 0-9999
/// &lt;/summary&gt;
int FunctionID { get; set; }
}
public interface IRsfRequest&lt;T&gt;:IRsfRequest
{
/// &lt;summary&gt;
/// 请求数据
/// &lt;/summary&gt;
T Data { get; set; }
}</code></pre></li>
<li>
<p>请求报文
请求报文应该继承接口IRsfRequest或者IRsfRequest<T>,T为RsfDataPack,具体定义如下:</p>
<pre><code class="language-csharp">public class RsfRequest&lt;T&gt;: IRsfRequest&lt;T&gt;
{
/// &lt;summary&gt;
/// 功能码
/// &lt;/summary&gt;
public int FunctionID { get; set; }
/// &lt;summary&gt;
/// 内容类型 请求0 响应1
/// &lt;/summary&gt;
public int ContextType { get; set; }
/// &lt;summary&gt;
/// 数据内容
/// &lt;/summary&gt;
public T Data { get; set; }
}
/// &lt;summary&gt;
/// 请求数据包
/// &lt;/summary&gt;
public class RsfDataPack
{
/// &lt;summary&gt;
/// 连接Id
/// &lt;/summary&gt;
public string Guid { get; set; }
/// &lt;summary&gt;
/// 功能码
/// &lt;/summary&gt;
public int FunctionID { get; set; }
/// &lt;summary&gt;
/// 200:执行成功 其它:见各接口定义
/// &lt;/summary&gt;
public int Code { get; set; }
/// &lt;summary&gt;
/// 消息
/// &lt;/summary&gt;
public string Message { get; set; }
/// &lt;summary&gt;
/// json数据
/// &lt;/summary&gt;
public string Json { get; set; }
}</code></pre>
</li>
<li>
<p>应答报文
同上,ContextType=1 </p>
</li>
<li>请求与应答示例
请求:<code>px+#0100{&quot;FunctionID&quot;:100,&quot;ControlType&quot;:1}0631px-#</code>
应答:<code>px+#0100{&quot;Code&quot;:200,&quot;Message:&quot;执行成功&quot;}0836px-#</code></li>
</ul>
<h5>5.通讯功能定义</h5>
<p>定义规范:相关定义名称使用Rs开头,如:RsfControl</p>