杨潇潇 發表於 2019-9-3 13:14:00

Delphi - 采用第三方控件TMS、SPComm开发串口调试助手

<p><strong>第三方控件TMS、SPComm的下载与安装</strong></p>
<p>盒子上可搜索关键字进行下载,TMS是.dpk文件,SPComm.pas文件;</p>
<p>安装方法自行百度,不做赘述。</p>
<p>&nbsp;</p>
<p><strong>通过TMS控件进行界面布局</strong></p>
<p>界面预览:</p>
<p><img src="https://img2018.cnblogs.com/blog/1335881/201909/1335881-20190903123852323-273980033.png" alt=""></p>
<p>&nbsp;</p>
<p><strong>Delphi通过SPComm连接串口、发送和接收指令</strong></p>
<p><span style="text-decoration: underline"><em><strong>连接串口</strong></em></span></p>
<p>拖一个TComm控件到主窗体上,选中控件,单击F11,完成如下配置。</p>
<p>这里主要是将一些布尔类型的属性设置成False,其他属性在前台连接按钮事件下动态设置。&nbsp;</p>
<p><img src="https://img2018.cnblogs.com/blog/1335881/201909/1335881-20190903124830443-1170630039.png" alt=""></p>
<p><img src="https://img2018.cnblogs.com/blog/1335881/201909/1335881-20190903124750664-1338228738.png" alt=""></p>
<p>连接代码如下,这里需要特别主意一下:</p>
<p><span style="background-color: rgba(0, 255, 0, 1)"><strong>当串口参数超过COM9(即COM10、COM11、COM12...)的时候,SPComm单元中有此BUG,ComName这里不可以直接赋值,需要做如下处理。</strong></span></p>
<p>CommName := <span data-mce-="">'<span data-mce-="">//./<span data-mce-="">' +<span data-mce-=""> cbbCOM.Text; </span></span></span></span>&nbsp;</p>
<div class="cnblogs_code">
<pre><span data-mce-=""> 1 <span data-mce-="">procedure<span data-mce-=""> TMainFrm.advBtnConnectClick(Sender: TObject);
<span data-mce-=""> 2 <span data-mce-="">var
<span data-mce-=""> 3   serialPortNO: <span data-mce-="">string<span data-mce-="">;
<span data-mce-=""> 4 <span data-mce-="">begin
<span data-mce-=""> 5   <span data-mce-="">try
<span data-mce-=""> 6   <span data-mce-="">with comMain <span data-mce-="">do
<span data-mce-=""> 7   <span data-mce-="">begin
<span data-mce-=""> 8 <span data-mce-="">      StopComm;
<span data-mce-=""> 9       serialPortNO := Copy(cbbCOM.Text, <span data-mce-="">4, Length(cbbCOM.Text) - <span data-mce-="">3<span data-mce-="">);
<span data-mce-="">10       BaudRate :=<span data-mce-=""> StrToInt(cbbBaudRate.Text);
<span data-mce-="">11 <span data-mce-="">//<span data-mce-="">      ByteSize := TByteSize(cbbByteSize.ItemIndex);
<span data-mce-="">12 <span data-mce-="">//<span data-mce-="">      StopBits := TStopBits(cbbStopBit.ItemIndex);
<span data-mce-="">13 <span data-mce-="">//<span data-mce-="">      Parity := TParity(cbbCheckBit.ItemIndex);
<span data-mce-="">14       <span data-mce-="">if StrToInt(serialPortNO) &gt; <span data-mce-="">9 <span data-mce-="">then
<span data-mce-="">15       <span data-mce-="">begin
<span data-mce-="">16         CommName := <span data-mce-="">'<span data-mce-="">//./<span data-mce-="">' +<span data-mce-=""> cbbCOM.Text;
<span data-mce-="">17       <span data-mce-="">end
<span data-mce-="">18       <span data-mce-="">else
<span data-mce-="">19       <span data-mce-="">begin
<span data-mce-="">20         CommName :=<span data-mce-=""> cbbCOM.Text;
<span data-mce-="">21       <span data-mce-="">end<span data-mce-="">;
<span data-mce-="">22 <span data-mce-="">      comMain.StartComm;
<span data-mce-="">23       connectStatus.Caption := <span data-mce-="">'<span data-mce-="">Connected<span data-mce-="">'<span data-mce-="">;
<span data-mce-="">24       connectStatus.FillColor :=<span data-mce-=""> clLime;
<span data-mce-="">25       advBtnConnect.Enabled :=<span data-mce-=""> False;
<span data-mce-="">26       gbSendMsg.Enabled :=<span data-mce-=""> True;
<span data-mce-="">27   <span data-mce-="">end<span data-mce-="">;
<span data-mce-="">28   <span data-mce-="">except
<span data-mce-="">29   connectStatus.Caption := <span data-mce-="">'<span data-mce-="">Not Connected<span data-mce-="">'<span data-mce-="">;
<span data-mce-="">30   connectStatus.FillColor :=<span data-mce-=""> clRed;
<span data-mce-="">31   gbSendMsg.Enabled :=<span data-mce-=""> False;
<span data-mce-="">32   <span data-mce-="">end<span data-mce-="">;
<span data-mce-="">33
<span data-mce-="">34 <span data-mce-="">end;</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<p>&nbsp;</p>
<p><span style="text-decoration: underline"><em><strong><span data-mce-=""><span data-mce-=""><span data-mce-=""><span data-mce-="">发送指令</span></span></span></span></strong></em></span></p>
<p>WriteCommData();&nbsp;</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> TMainFrm.advBtnConfirmClick(Sender: TObject);
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span>   <span style="color: rgba(0, 0, 255, 1)">if</span> mmSendMsg.Lines.Count &lt;= <span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(0, 0, 255, 1)">then</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span>   <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span>   Application.MessageBox(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">There is no key word, please check the MsgSendList,thanks.</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Error Information</span><span style="color: rgba(128, 0, 0, 1)">'</span>, MB_OK +<span style="color: rgba(0, 0, 0, 1)"> MB_ICONSTOP);
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)">    mmSendMsg.SetFocus;
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 0, 0, 1)">    Exit;
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span>   <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span>   <span style="color: rgba(0, 0, 255, 1)">if</span> cbByte.Checked <span style="color: rgba(0, 0, 255, 1)">then</span>
<span style="color: rgba(0, 128, 128, 1)">10</span>   <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 0, 1)">    SendHex(mmSendMsg.Text);
</span><span style="color: rgba(0, 128, 128, 1)">12</span>   <span style="color: rgba(0, 0, 255, 1)">end</span>
<span style="color: rgba(0, 128, 128, 1)">13</span>   <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)">14</span>   <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)">    comMain.WriteCommData(PChar(mmSendMsg.Text), Length(mmSendMsg.Text));
</span><span style="color: rgba(0, 128, 128, 1)">16</span>   <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">17</span>   <span style="color: rgba(0, 0, 255, 1)">if</span> (cbAutoSend.Checked) <span style="color: rgba(0, 0, 255, 1)">and</span> (edtTime.Text &lt;&gt; <span style="color: rgba(128, 0, 0, 1)">''</span>) <span style="color: rgba(0, 0, 255, 1)">and</span> (cbByte.Checked) <span style="color: rgba(0, 0, 255, 1)">then</span>
<span style="color: rgba(0, 128, 128, 1)">18</span>   <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">19</span>   timerMain.Interval :=<span style="color: rgba(0, 0, 0, 1)"> StrToInt(edtTime.Text);
</span><span style="color: rgba(0, 128, 128, 1)">20</span>   timerMain.Enabled :=<span style="color: rgba(0, 0, 0, 1)"> True;
</span><span style="color: rgba(0, 128, 128, 1)">21</span>   <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">22</span> <span style="color: rgba(0, 0, 255, 1)">end</span>;</pre>
</div>
<p>SendHex函数&nbsp;</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 255, 1)">procedure</span> TMainFrm.SendHex(S: <span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 255, 1)">var</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span>   s2: <span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span>   buf1: <span style="color: rgba(0, 0, 255, 1)">array</span>[<span style="color: rgba(128, 0, 128, 1)">0</span>..<span style="color: rgba(128, 0, 128, 1)">50000</span>] <span style="color: rgba(0, 0, 255, 1)">of</span><span style="color: rgba(0, 0, 0, 1)"> char;
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 0, 1)">i: integer;
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span>   s2 := <span style="color: rgba(128, 0, 0, 1)">''</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span>   <span style="color: rgba(0, 0, 255, 1)">for</span> i := <span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">to</span> length(s) <span style="color: rgba(0, 0, 255, 1)">do</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span>   <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">10</span>   <span style="color: rgba(0, 0, 255, 1)">if</span> ((copy(s, i, <span style="color: rgba(128, 0, 128, 1)">1</span>) &gt;= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">0</span><span style="color: rgba(128, 0, 0, 1)">'</span>) <span style="color: rgba(0, 0, 255, 1)">and</span> (copy(s, i, <span style="color: rgba(128, 0, 128, 1)">1</span>) &lt;= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">9</span><span style="color: rgba(128, 0, 0, 1)">'</span>)) <span style="color: rgba(0, 0, 255, 1)">or</span> ((copy(s, i, <span style="color: rgba(128, 0, 128, 1)">1</span>) &gt;= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">a</span><span style="color: rgba(128, 0, 0, 1)">'</span>) <span style="color: rgba(0, 0, 255, 1)">and</span> (copy(s, i, <span style="color: rgba(128, 0, 128, 1)">1</span>) &lt;= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">f</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">))
</span><span style="color: rgba(0, 128, 128, 1)">11</span>       <span style="color: rgba(0, 0, 255, 1)">or</span> ((copy(s, i, <span style="color: rgba(128, 0, 128, 1)">1</span>) &gt;= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">'</span>) <span style="color: rgba(0, 0, 255, 1)">and</span> (copy(s, i, <span style="color: rgba(128, 0, 128, 1)">1</span>) &lt;= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">F</span><span style="color: rgba(128, 0, 0, 1)">'</span>)) <span style="color: rgba(0, 0, 255, 1)">then</span>
<span style="color: rgba(0, 128, 128, 1)">12</span>   <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">13</span>       s2 := s2 + copy(s, i, <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">14</span>   <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">15</span>   <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">16</span>   <span style="color: rgba(0, 0, 255, 1)">for</span> i := <span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(0, 0, 255, 1)">to</span> (length(s2) <span style="color: rgba(0, 0, 255, 1)">div</span> <span style="color: rgba(128, 0, 128, 1)">2</span> - <span style="color: rgba(128, 0, 128, 1)">1</span>) <span style="color: rgba(0, 0, 255, 1)">do</span>
<span style="color: rgba(0, 128, 128, 1)">17</span>   buf1 := char(strtoint(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$</span><span style="color: rgba(128, 0, 0, 1)">'</span> + copy(s2, i * <span style="color: rgba(128, 0, 128, 1)">2</span> + <span style="color: rgba(128, 0, 128, 1)">1</span>, <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">)));
</span><span style="color: rgba(0, 128, 128, 1)">18</span>   comMain.WriteCommData(buf1, (length(s2) <span style="color: rgba(0, 0, 255, 1)">div</span> <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">));
</span><span style="color: rgba(0, 128, 128, 1)">19</span>   mmMsg.Lines.Add(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">MsgSend[</span><span style="color: rgba(128, 0, 0, 1)">'</span> + S + <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">]</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">20</span> <span style="color: rgba(0, 0, 255, 1)">end</span>;</pre>
</div>
<p><strong><em><span style="text-decoration: underline">接收指令</span></em></strong></p>
<p>选中控件,添加OnReceiveError事件,代码如下。</p>
<p><strong><em><span style="text-decoration: underline"><img src="https://img2018.cnblogs.com/blog/1335881/201909/1335881-20190903130932292-958400172.png" alt=""></span></em></strong></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> TMainFrm.comMainReceiveData(Sender: TObject; Buffer: Pointer;
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 0, 1)">BufferLength: Word);
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 255, 1)">var</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span>   S: <span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 0, 1)">I, L: INTEGER;
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span>   RBUF: <span style="color: rgba(0, 0, 255, 1)">array</span>[<span style="color: rgba(128, 0, 128, 1)">0</span>..<span style="color: rgba(128, 0, 128, 1)">2048</span>] <span style="color: rgba(0, 0, 255, 1)">of</span><span style="color: rgba(0, 0, 0, 1)"> BYTE;
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)">Move(Buffer^, pchar(@rbuf)^, BufferLength);
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span>   L :=<span style="color: rgba(0, 0, 0, 1)"> BufferLength;
</span><span style="color: rgba(0, 128, 128, 1)">10</span>   <span style="color: rgba(0, 0, 255, 1)">for</span> I := <span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(0, 0, 255, 1)">to</span> L - <span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">do</span>
<span style="color: rgba(0, 128, 128, 1)">11</span>   <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">12</span>   S := S + INTTOHEX(RBUF, <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">13</span>   <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">14</span>   mmMsg.Lines.Add(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">MsgReceived[</span><span style="color: rgba(128, 0, 0, 1)">'</span> + S + <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">]</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 255, 1)">end</span>;</pre>
</div>
<p><strong>断开串口连接</strong></p>
<p>comMain.StopComm;</p>
<p><strong>附录</strong></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">unit</span><span style="color: rgba(0, 0, 0, 1)"> uMain;
</span><span style="color: rgba(0, 128, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 255, 1)">interface</span>
<span style="color: rgba(0, 128, 128, 1)">4</span>
<span style="color: rgba(0, 128, 128, 1)">5</span> <span style="color: rgba(0, 0, 255, 1)">uses</span>
<span style="color: rgba(0, 128, 128, 1)">6</span> <span style="color: rgba(0, 0, 0, 1)">Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
</span><span style="color: rgba(0, 128, 128, 1)">7</span> <span style="color: rgba(0, 0, 0, 1)">Dialogs, StdCtrls, ExtCtrls, SPComm, RzPanel, AdvSmoothButton,
</span><span style="color: rgba(0, 128, 128, 1)">8</span> <span style="color: rgba(0, 0, 0, 1)">AdvSmoothStatusIndicator, AdvGlassButton, RzButton, RzRadChk, RzStatus,
</span><span style="color: rgba(0, 128, 128, 1)">9</span> <span style="color: rgba(0, 0, 0, 1)">RzPrgres;
</span><span style="color: rgba(0, 128, 128, 1)"> 10</span>
<span style="color: rgba(0, 128, 128, 1)"> 11</span> <span style="color: rgba(0, 0, 255, 1)">type</span>
<span style="color: rgba(0, 128, 128, 1)"> 12</span>   TMainFrm = <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)">(TForm)
</span><span style="color: rgba(0, 128, 128, 1)"> 13</span> <span style="color: rgba(0, 0, 0, 1)">    gbSerialParams: TRzGroupBox;
</span><span style="color: rgba(0, 128, 128, 1)"> 14</span> <span style="color: rgba(0, 0, 0, 1)">    gbMsg: TRzGroupBox;
</span><span style="color: rgba(0, 128, 128, 1)"> 15</span> <span style="color: rgba(0, 0, 0, 1)">    mmMsg: TMemo;
</span><span style="color: rgba(0, 128, 128, 1)"> 16</span> <span style="color: rgba(0, 0, 0, 1)">    gbPortSet: TRzGroupBox;
</span><span style="color: rgba(0, 128, 128, 1)"> 17</span> <span style="color: rgba(0, 0, 0, 1)">    gbSendMsg: TRzGroupBox;
</span><span style="color: rgba(0, 128, 128, 1)"> 18</span> <span style="color: rgba(0, 0, 0, 1)">    lbCom: TLabel;
</span><span style="color: rgba(0, 128, 128, 1)"> 19</span> <span style="color: rgba(0, 0, 0, 1)">    lbStopBit: TLabel;
</span><span style="color: rgba(0, 128, 128, 1)"> 20</span> <span style="color: rgba(0, 0, 0, 1)">    lbByteSize: TLabel;
</span><span style="color: rgba(0, 128, 128, 1)"> 21</span> <span style="color: rgba(0, 0, 0, 1)">    lbCheckBit: TLabel;
</span><span style="color: rgba(0, 128, 128, 1)"> 22</span> <span style="color: rgba(0, 0, 0, 1)">    lbBaudRate: TLabel;
</span><span style="color: rgba(0, 128, 128, 1)"> 23</span> <span style="color: rgba(0, 0, 0, 1)">    comMain: TComm;
</span><span style="color: rgba(0, 128, 128, 1)"> 24</span> <span style="color: rgba(0, 0, 0, 1)">    cbbCOM: TComboBox;
</span><span style="color: rgba(0, 128, 128, 1)"> 25</span> <span style="color: rgba(0, 0, 0, 1)">    cbbStopBit: TComboBox;
</span><span style="color: rgba(0, 128, 128, 1)"> 26</span> <span style="color: rgba(0, 0, 0, 1)">    cbbByteSize: TComboBox;
</span><span style="color: rgba(0, 128, 128, 1)"> 27</span> <span style="color: rgba(0, 0, 0, 1)">    cbbBaudRate: TComboBox;
</span><span style="color: rgba(0, 128, 128, 1)"> 28</span> <span style="color: rgba(0, 0, 0, 1)">    cbbCheckBit: TComboBox;
</span><span style="color: rgba(0, 128, 128, 1)"> 29</span> <span style="color: rgba(0, 0, 0, 1)">    gbMsgSendParams: TRzGroupBox;
</span><span style="color: rgba(0, 128, 128, 1)"> 30</span> <span style="color: rgba(0, 0, 0, 1)">    gbMsgSendList: TRzGroupBox;
</span><span style="color: rgba(0, 128, 128, 1)"> 31</span> <span style="color: rgba(0, 0, 0, 1)">    cbByte: TRzCheckBox;
</span><span style="color: rgba(0, 128, 128, 1)"> 32</span> <span style="color: rgba(0, 0, 0, 1)">    cbAutoSend: TRzCheckBox;
</span><span style="color: rgba(0, 128, 128, 1)"> 33</span> <span style="color: rgba(0, 0, 0, 1)">    lbCT: TLabel;
</span><span style="color: rgba(0, 128, 128, 1)"> 34</span> <span style="color: rgba(0, 0, 0, 1)">    edtTime: TEdit;
</span><span style="color: rgba(0, 128, 128, 1)"> 35</span> <span style="color: rgba(0, 0, 0, 1)">    advBtnConfirm: TAdvGlassButton;
</span><span style="color: rgba(0, 128, 128, 1)"> 36</span> <span style="color: rgba(0, 0, 0, 1)">    advBtnConnect: TAdvGlassButton;
</span><span style="color: rgba(0, 128, 128, 1)"> 37</span> <span style="color: rgba(0, 0, 0, 1)">    AdvGlassButton1: TAdvGlassButton;
</span><span style="color: rgba(0, 128, 128, 1)"> 38</span> <span style="color: rgba(0, 0, 0, 1)">    lbMs: TLabel;
</span><span style="color: rgba(0, 128, 128, 1)"> 39</span> <span style="color: rgba(0, 0, 0, 1)">    mmSendMsg: TMemo;
</span><span style="color: rgba(0, 128, 128, 1)"> 40</span> <span style="color: rgba(0, 0, 0, 1)">    statusBar: TRzStatusBar;
</span><span style="color: rgba(0, 128, 128, 1)"> 41</span> <span style="color: rgba(0, 0, 0, 1)">    clock: TRzClockStatus;
</span><span style="color: rgba(0, 128, 128, 1)"> 42</span> <span style="color: rgba(0, 0, 0, 1)">    versionStatus: TRzVersionInfoStatus;
</span><span style="color: rgba(0, 128, 128, 1)"> 43</span> <span style="color: rgba(0, 0, 0, 1)">    mqStatus: TRzMarqueeStatus;
</span><span style="color: rgba(0, 128, 128, 1)"> 44</span> <span style="color: rgba(0, 0, 0, 1)">    progressBar: TRzProgressBar;
</span><span style="color: rgba(0, 128, 128, 1)"> 45</span> <span style="color: rgba(0, 0, 0, 1)">    connectStatus: TRzStatusPane;
</span><span style="color: rgba(0, 128, 128, 1)"> 46</span> <span style="color: rgba(0, 0, 0, 1)">    timerMain: TTimer;
</span><span style="color: rgba(0, 128, 128, 1)"> 47</span>   <span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> advBtnConnectClick(Sender: TObject);
</span><span style="color: rgba(0, 128, 128, 1)"> 48</span>   <span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> comMainReceiveData(Sender: TObject; Buffer: Pointer;
</span><span style="color: rgba(0, 128, 128, 1)"> 49</span> <span style="color: rgba(0, 0, 0, 1)">      BufferLength: Word);
</span><span style="color: rgba(0, 128, 128, 1)"> 50</span>   <span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> advBtnConfirmClick(Sender: TObject);
</span><span style="color: rgba(0, 128, 128, 1)"> 51</span>   <span style="color: rgba(0, 0, 255, 1)">procedure</span> SendHex(S: <span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 52</span>   <span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> AdvGlassButton1Click(Sender: TObject);
</span><span style="color: rgba(0, 128, 128, 1)"> 53</span>   <span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> timerMainTimer(Sender: TObject);
</span><span style="color: rgba(0, 128, 128, 1)"> 54</span>   <span style="color: rgba(0, 0, 255, 1)">private</span>
<span style="color: rgba(0, 128, 128, 1)"> 55</span>   <span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)"> Private declarations </span><span style="color: rgba(0, 128, 0, 1)">}</span>
<span style="color: rgba(0, 128, 128, 1)"> 56</span>   <span style="color: rgba(0, 0, 255, 1)">public</span>
<span style="color: rgba(0, 128, 128, 1)"> 57</span>   <span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)"> Public declarations </span><span style="color: rgba(0, 128, 0, 1)">}</span>
<span style="color: rgba(0, 128, 128, 1)"> 58</span>   <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 59</span>
<span style="color: rgba(0, 128, 128, 1)"> 60</span> <span style="color: rgba(0, 0, 255, 1)">var</span>
<span style="color: rgba(0, 128, 128, 1)"> 61</span> <span style="color: rgba(0, 0, 0, 1)">MainFrm: TMainFrm;
</span><span style="color: rgba(0, 128, 128, 1)"> 62</span>
<span style="color: rgba(0, 128, 128, 1)"> 63</span> <span style="color: rgba(0, 0, 255, 1)">implementation</span>
<span style="color: rgba(0, 128, 128, 1)"> 64</span>
<span style="color: rgba(0, 128, 128, 1)"> 65</span> <span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)">$R *.dfm</span><span style="color: rgba(0, 128, 0, 1)">}</span>
<span style="color: rgba(0, 128, 128, 1)"> 66</span>
<span style="color: rgba(0, 128, 128, 1)"> 67</span> <span style="color: rgba(0, 0, 255, 1)">procedure</span> TMainFrm.SendHex(S: <span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 68</span> <span style="color: rgba(0, 0, 255, 1)">var</span>
<span style="color: rgba(0, 128, 128, 1)"> 69</span>   s2: <span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 70</span>   buf1: <span style="color: rgba(0, 0, 255, 1)">array</span>[<span style="color: rgba(128, 0, 128, 1)">0</span>..<span style="color: rgba(128, 0, 128, 1)">50000</span>] <span style="color: rgba(0, 0, 255, 1)">of</span><span style="color: rgba(0, 0, 0, 1)"> char;
</span><span style="color: rgba(0, 128, 128, 1)"> 71</span> <span style="color: rgba(0, 0, 0, 1)">i: integer;
</span><span style="color: rgba(0, 128, 128, 1)"> 72</span> <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)"> 73</span>   s2 := <span style="color: rgba(128, 0, 0, 1)">''</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 74</span>   <span style="color: rgba(0, 0, 255, 1)">for</span> i := <span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">to</span> length(s) <span style="color: rgba(0, 0, 255, 1)">do</span>
<span style="color: rgba(0, 128, 128, 1)"> 75</span>   <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)"> 76</span>   <span style="color: rgba(0, 0, 255, 1)">if</span> ((copy(s, i, <span style="color: rgba(128, 0, 128, 1)">1</span>) &gt;= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">0</span><span style="color: rgba(128, 0, 0, 1)">'</span>) <span style="color: rgba(0, 0, 255, 1)">and</span> (copy(s, i, <span style="color: rgba(128, 0, 128, 1)">1</span>) &lt;= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">9</span><span style="color: rgba(128, 0, 0, 1)">'</span>)) <span style="color: rgba(0, 0, 255, 1)">or</span> ((copy(s, i, <span style="color: rgba(128, 0, 128, 1)">1</span>) &gt;= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">a</span><span style="color: rgba(128, 0, 0, 1)">'</span>) <span style="color: rgba(0, 0, 255, 1)">and</span> (copy(s, i, <span style="color: rgba(128, 0, 128, 1)">1</span>) &lt;= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">f</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">))
</span><span style="color: rgba(0, 128, 128, 1)"> 77</span>       <span style="color: rgba(0, 0, 255, 1)">or</span> ((copy(s, i, <span style="color: rgba(128, 0, 128, 1)">1</span>) &gt;= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">'</span>) <span style="color: rgba(0, 0, 255, 1)">and</span> (copy(s, i, <span style="color: rgba(128, 0, 128, 1)">1</span>) &lt;= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">F</span><span style="color: rgba(128, 0, 0, 1)">'</span>)) <span style="color: rgba(0, 0, 255, 1)">then</span>
<span style="color: rgba(0, 128, 128, 1)"> 78</span>   <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)"> 79</span>       s2 := s2 + copy(s, i, <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 80</span>   <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 81</span>   <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 82</span>   <span style="color: rgba(0, 0, 255, 1)">for</span> i := <span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(0, 0, 255, 1)">to</span> (length(s2) <span style="color: rgba(0, 0, 255, 1)">div</span> <span style="color: rgba(128, 0, 128, 1)">2</span> - <span style="color: rgba(128, 0, 128, 1)">1</span>) <span style="color: rgba(0, 0, 255, 1)">do</span>
<span style="color: rgba(0, 128, 128, 1)"> 83</span>   buf1 := char(strtoint(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$</span><span style="color: rgba(128, 0, 0, 1)">'</span> + copy(s2, i * <span style="color: rgba(128, 0, 128, 1)">2</span> + <span style="color: rgba(128, 0, 128, 1)">1</span>, <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">)));
</span><span style="color: rgba(0, 128, 128, 1)"> 84</span>   comMain.WriteCommData(buf1, (length(s2) <span style="color: rgba(0, 0, 255, 1)">div</span> <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">));
</span><span style="color: rgba(0, 128, 128, 1)"> 85</span>   mmMsg.Lines.Add(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">MsgSend[</span><span style="color: rgba(128, 0, 0, 1)">'</span> + S + <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">]</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 86</span> <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 87</span>
<span style="color: rgba(0, 128, 128, 1)"> 88</span>
<span style="color: rgba(0, 128, 128, 1)"> 89</span> <span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> TMainFrm.advBtnConnectClick(Sender: TObject);
</span><span style="color: rgba(0, 128, 128, 1)"> 90</span> <span style="color: rgba(0, 0, 255, 1)">var</span>
<span style="color: rgba(0, 128, 128, 1)"> 91</span>   serialPortNO: <span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 92</span> <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)"> 93</span>   <span style="color: rgba(0, 0, 255, 1)">try</span>
<span style="color: rgba(0, 128, 128, 1)"> 94</span>   <span style="color: rgba(0, 0, 255, 1)">with</span> comMain <span style="color: rgba(0, 0, 255, 1)">do</span>
<span style="color: rgba(0, 128, 128, 1)"> 95</span>   <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)"> 96</span> <span style="color: rgba(0, 0, 0, 1)">      StopComm;
</span><span style="color: rgba(0, 128, 128, 1)"> 97</span>       serialPortNO := Copy(cbbCOM.Text, <span style="color: rgba(128, 0, 128, 1)">4</span>, Length(cbbCOM.Text) - <span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 98</span>       BaudRate :=<span style="color: rgba(0, 0, 0, 1)"> StrToInt(cbbBaudRate.Text);
</span><span style="color: rgba(0, 128, 128, 1)"> 99</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">      ByteSize := TByteSize(cbbByteSize.ItemIndex);</span>
<span style="color: rgba(0, 128, 128, 1)">100</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">      StopBits := TStopBits(cbbStopBit.ItemIndex);</span>
<span style="color: rgba(0, 128, 128, 1)">101</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">      Parity := TParity(cbbCheckBit.ItemIndex);</span>
<span style="color: rgba(0, 128, 128, 1)">102</span>       <span style="color: rgba(0, 0, 255, 1)">if</span> StrToInt(serialPortNO) &gt; <span style="color: rgba(128, 0, 128, 1)">9</span> <span style="color: rgba(0, 0, 255, 1)">then</span>
<span style="color: rgba(0, 128, 128, 1)">103</span>       <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">104</span>         CommName := <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">//./</span><span style="color: rgba(128, 0, 0, 1)">'</span> +<span style="color: rgba(0, 0, 0, 1)"> cbbCOM.Text;
</span><span style="color: rgba(0, 128, 128, 1)">105</span>       <span style="color: rgba(0, 0, 255, 1)">end</span>
<span style="color: rgba(0, 128, 128, 1)">106</span>       <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)">107</span>       <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">108</span>         CommName :=<span style="color: rgba(0, 0, 0, 1)"> cbbCOM.Text;
</span><span style="color: rgba(0, 128, 128, 1)">109</span>       <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">110</span> <span style="color: rgba(0, 0, 0, 1)">      comMain.StartComm;
</span><span style="color: rgba(0, 128, 128, 1)">111</span>       connectStatus.Caption := <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Connected</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">112</span>       connectStatus.FillColor :=<span style="color: rgba(0, 0, 0, 1)"> clLime;
</span><span style="color: rgba(0, 128, 128, 1)">113</span>       advBtnConnect.Enabled :=<span style="color: rgba(0, 0, 0, 1)"> False;
</span><span style="color: rgba(0, 128, 128, 1)">114</span>       gbSendMsg.Enabled :=<span style="color: rgba(0, 0, 0, 1)"> True;
</span><span style="color: rgba(0, 128, 128, 1)">115</span>   <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">116</span>   <span style="color: rgba(0, 0, 255, 1)">except</span>
<span style="color: rgba(0, 128, 128, 1)">117</span>   connectStatus.Caption := <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Not Connected</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">118</span>   connectStatus.FillColor :=<span style="color: rgba(0, 0, 0, 1)"> clRed;
</span><span style="color: rgba(0, 128, 128, 1)">119</span>   gbSendMsg.Enabled :=<span style="color: rgba(0, 0, 0, 1)"> False;
</span><span style="color: rgba(0, 128, 128, 1)">120</span>   <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">121</span>
<span style="color: rgba(0, 128, 128, 1)">122</span> <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">123</span>
<span style="color: rgba(0, 128, 128, 1)">124</span> <span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> TMainFrm.comMainReceiveData(Sender: TObject; Buffer: Pointer;
</span><span style="color: rgba(0, 128, 128, 1)">125</span> <span style="color: rgba(0, 0, 0, 1)">BufferLength: Word);
</span><span style="color: rgba(0, 128, 128, 1)">126</span> <span style="color: rgba(0, 0, 255, 1)">var</span>
<span style="color: rgba(0, 128, 128, 1)">127</span>   S: <span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">128</span> <span style="color: rgba(0, 0, 0, 1)">I, L: INTEGER;
</span><span style="color: rgba(0, 128, 128, 1)">129</span>   RBUF: <span style="color: rgba(0, 0, 255, 1)">array</span>[<span style="color: rgba(128, 0, 128, 1)">0</span>..<span style="color: rgba(128, 0, 128, 1)">2048</span>] <span style="color: rgba(0, 0, 255, 1)">of</span><span style="color: rgba(0, 0, 0, 1)"> BYTE;
</span><span style="color: rgba(0, 128, 128, 1)">130</span> <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">131</span> <span style="color: rgba(0, 0, 0, 1)">Move(Buffer^, pchar(@rbuf)^, BufferLength);
</span><span style="color: rgba(0, 128, 128, 1)">132</span>   L :=<span style="color: rgba(0, 0, 0, 1)"> BufferLength;
</span><span style="color: rgba(0, 128, 128, 1)">133</span>   <span style="color: rgba(0, 0, 255, 1)">for</span> I := <span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(0, 0, 255, 1)">to</span> L - <span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">do</span>
<span style="color: rgba(0, 128, 128, 1)">134</span>   <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">135</span>   S := S + INTTOHEX(RBUF, <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">136</span>   <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">137</span>   mmMsg.Lines.Add(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">MsgReceived[</span><span style="color: rgba(128, 0, 0, 1)">'</span> + S + <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">]</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">138</span> <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">139</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">var</span>
<span style="color: rgba(0, 128, 128, 1)">140</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">    tmpArray: array of Byte;</span>
<span style="color: rgba(0, 128, 128, 1)">141</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">    i: DWORD;</span>
<span style="color: rgba(0, 128, 128, 1)">142</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">    tmpStr: string;</span>
<span style="color: rgba(0, 128, 128, 1)">143</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">    pStr: PChar;</span>
<span style="color: rgba(0, 128, 128, 1)">144</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">145</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">    pStr := Buffer;</span>
<span style="color: rgba(0, 128, 128, 1)">146</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">    tmpStr := string(pStr);</span>
<span style="color: rgba(0, 128, 128, 1)">147</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">    mmMsg.Lines.Add(tmpStr);</span>
<span style="color: rgba(0, 128, 128, 1)">148</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">    Dec(PStr);</span>
<span style="color: rgba(0, 128, 128, 1)">149</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">    for i := 0 to Length(tmpStr) - 1 do</span>
<span style="color: rgba(0, 128, 128, 1)">150</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">    begin</span>
<span style="color: rgba(0, 128, 128, 1)">151</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">      inc(PStr);</span>
<span style="color: rgba(0, 128, 128, 1)">152</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">      tmpArray := Byte(PSTR^);</span>
<span style="color: rgba(0, 128, 128, 1)">153</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">      mmMsg.Lines.Add(IntToHEX(Ord(tmpArray), 2));</span>
<span style="color: rgba(0, 128, 128, 1)">154</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">    end;</span>
<span style="color: rgba(0, 128, 128, 1)">155</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">    exit;</span>
<span style="color: rgba(0, 128, 128, 1)">156</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">    pStr := Buffer;</span>
<span style="color: rgba(0, 128, 128, 1)">157</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">    mmMsg.Lines.Add(pStr);</span>
<span style="color: rgba(0, 128, 128, 1)">158</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">end;</span>
<span style="color: rgba(0, 128, 128, 1)">159</span>
<span style="color: rgba(0, 128, 128, 1)">160</span> <span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> TMainFrm.advBtnConfirmClick(Sender: TObject);
</span><span style="color: rgba(0, 128, 128, 1)">161</span> <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">162</span>   <span style="color: rgba(0, 0, 255, 1)">if</span> mmSendMsg.Lines.Count &lt;= <span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(0, 0, 255, 1)">then</span>
<span style="color: rgba(0, 128, 128, 1)">163</span>   <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">164</span>   Application.MessageBox(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">There is no key word, please check the MsgSendList,thanks.</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Error Information</span><span style="color: rgba(128, 0, 0, 1)">'</span>, MB_OK +<span style="color: rgba(0, 0, 0, 1)"> MB_ICONSTOP);
</span><span style="color: rgba(0, 128, 128, 1)">165</span> <span style="color: rgba(0, 0, 0, 1)">    mmSendMsg.SetFocus;
</span><span style="color: rgba(0, 128, 128, 1)">166</span> <span style="color: rgba(0, 0, 0, 1)">    Exit;
</span><span style="color: rgba(0, 128, 128, 1)">167</span>   <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">168</span>   <span style="color: rgba(0, 0, 255, 1)">if</span> cbByte.Checked <span style="color: rgba(0, 0, 255, 1)">then</span>
<span style="color: rgba(0, 128, 128, 1)">169</span>   <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">170</span> <span style="color: rgba(0, 0, 0, 1)">    SendHex(mmSendMsg.Text);
</span><span style="color: rgba(0, 128, 128, 1)">171</span>   <span style="color: rgba(0, 0, 255, 1)">end</span>
<span style="color: rgba(0, 128, 128, 1)">172</span>   <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)">173</span>   <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">174</span> <span style="color: rgba(0, 0, 0, 1)">    comMain.WriteCommData(PChar(mmSendMsg.Text), Length(mmSendMsg.Text));
</span><span style="color: rgba(0, 128, 128, 1)">175</span>   <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">176</span>   <span style="color: rgba(0, 0, 255, 1)">if</span> (cbAutoSend.Checked) <span style="color: rgba(0, 0, 255, 1)">and</span> (edtTime.Text &lt;&gt; <span style="color: rgba(128, 0, 0, 1)">''</span>) <span style="color: rgba(0, 0, 255, 1)">and</span> (cbByte.Checked) <span style="color: rgba(0, 0, 255, 1)">then</span>
<span style="color: rgba(0, 128, 128, 1)">177</span>   <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">178</span>   timerMain.Interval :=<span style="color: rgba(0, 0, 0, 1)"> StrToInt(edtTime.Text);
</span><span style="color: rgba(0, 128, 128, 1)">179</span>   timerMain.Enabled :=<span style="color: rgba(0, 0, 0, 1)"> True;
</span><span style="color: rgba(0, 128, 128, 1)">180</span>   <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">181</span> <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">182</span>
<span style="color: rgba(0, 128, 128, 1)">183</span> <span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> TMainFrm.AdvGlassButton1Click(Sender: TObject);
</span><span style="color: rgba(0, 128, 128, 1)">184</span> <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">185</span>   timerMain.Enabled :=<span style="color: rgba(0, 0, 0, 1)"> False;
</span><span style="color: rgba(0, 128, 128, 1)">186</span>   gbSendMsg.Enabled :=<span style="color: rgba(0, 0, 0, 1)"> False;
</span><span style="color: rgba(0, 128, 128, 1)">187</span>   cbByte.Checked :=<span style="color: rgba(0, 0, 0, 1)"> False;
</span><span style="color: rgba(0, 128, 128, 1)">188</span>   cbAutoSend.Checked :=<span style="color: rgba(0, 0, 0, 1)"> False;
</span><span style="color: rgba(0, 128, 128, 1)">189</span>   edtTime.Text := <span style="color: rgba(128, 0, 0, 1)">''</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">190</span>   mmMsg.Text := <span style="color: rgba(128, 0, 0, 1)">''</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">191</span>   mmSendMsg.Text := <span style="color: rgba(128, 0, 0, 1)">''</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">192</span> <span style="color: rgba(0, 0, 0, 1)">comMain.StopComm;
</span><span style="color: rgba(0, 128, 128, 1)">193</span>   connectStatus.Caption := <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Not Connected</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">194</span>   connectStatus.FillColor :=<span style="color: rgba(0, 0, 0, 1)"> clRed;
</span><span style="color: rgba(0, 128, 128, 1)">195</span>   advBtnConnect.Enabled :=<span style="color: rgba(0, 0, 0, 1)"> True;
</span><span style="color: rgba(0, 128, 128, 1)">196</span> <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">197</span>
<span style="color: rgba(0, 128, 128, 1)">198</span> <span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> TMainFrm.timerMainTimer(Sender: TObject);
</span><span style="color: rgba(0, 128, 128, 1)">199</span> <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">200</span> <span style="color: rgba(0, 0, 0, 1)">SendHex(mmSendMsg.Text);
</span><span style="color: rgba(0, 128, 128, 1)">201</span> <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">202</span>
<span style="color: rgba(0, 128, 128, 1)">203</span> <span style="color: rgba(0, 0, 255, 1)">end</span>.</pre>
</div>
<p>&nbsp;</p>
<div id="AllanboltSignature">
<p id="PSignature" style="padding: 10px 10px 10px 60px; background: url(&quot;https://images.cnblogs.com/cnblogs_com/jeremywucnblog/1607637/o_191206011825obs.png&quot;) 1% no-repeat rgba(229, 241, 244, 1); font-family: 微软雅黑; font-size: 11px; border: 1px dashed rgba(224, 224, 224, 1)">&nbsp; 作者:Jeremy.Wu <br>&nbsp; 出处:https://www.cnblogs.com/jeremywucnblog/
            <br>&nbsp; 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
      </p>




</div><br><br>
来源:https://www.cnblogs.com/jeremywucnblog/p/11452396.html
頁: [1]
查看完整版本: Delphi - 采用第三方控件TMS、SPComm开发串口调试助手