{"rsdb":{"rid":"352298","subhead":"","postdate":"0","aid":"250027","fid":"86","uid":"1","topic":"1","content":"
\n

\u7b2c\u4e09\u65b9\u63a7\u4ef6TMS\u3001SPComm\u7684\u4e0b\u8f7d\u4e0e\u5b89\u88c5<\/strong><\/p> \n

\u76d2\u5b50\u4e0a\u53ef\u641c\u7d22\u5173\u952e\u5b57\u8fdb\u884c\u4e0b\u8f7d\uff0cTMS\u662f.dpk\u6587\u4ef6\uff0cSPComm.pas\u6587\u4ef6\uff1b<\/p> \n

\u5b89\u88c5\u65b9\u6cd5\u81ea\u884c\u767e\u5ea6\uff0c\u4e0d\u505a\u8d58\u8ff0\u3002<\/p> \n

 <\/p> \n

\u901a\u8fc7TMS\u63a7\u4ef6\u8fdb\u884c\u754c\u9762\u5e03\u5c40<\/strong><\/p> \n

\u754c\u9762\u9884\u89c8\uff1a<\/p> \n

\"\"<\/p> \n

 <\/p> \n

Delphi\u901a\u8fc7SPComm\u8fde\u63a5\u4e32\u53e3\u3001\u53d1\u9001\u548c\u63a5\u6536\u6307\u4ee4<\/strong><\/p> \n

\u8fde\u63a5\u4e32\u53e3<\/strong><\/em><\/span><\/p> \n

\u62d6\u4e00\u4e2aTComm\u63a7\u4ef6\u5230\u4e3b\u7a97\u4f53\u4e0a\uff0c\u9009\u4e2d\u63a7\u4ef6\uff0c\u5355\u51fbF11\uff0c\u5b8c\u6210\u5982\u4e0b\u914d\u7f6e\u3002<\/p> \n

\u8fd9\u91cc\u4e3b\u8981\u662f\u5c06\u4e00\u4e9b\u5e03\u5c14\u7c7b\u578b\u7684\u5c5e\u6027\u8bbe\u7f6e\u6210False\uff0c\u5176\u4ed6\u5c5e\u6027\u5728\u524d\u53f0\u8fde\u63a5\u6309\u94ae\u4e8b\u4ef6\u4e0b\u52a8\u6001\u8bbe\u7f6e\u3002 <\/p> \n

\"\"<\/p> \n

\"\"<\/p> \n

\u8fde\u63a5\u4ee3\u7801\u5982\u4e0b\uff0c\u8fd9\u91cc\u9700\u8981\u7279\u522b\u4e3b\u610f\u4e00\u4e0b\uff1a<\/p> \n

\u5f53\u4e32\u53e3\u53c2\u6570\u8d85\u8fc7COM9\uff08\u5373COM10\u3001COM11\u3001COM12...\uff09\u7684\u65f6\u5019\uff0cSPComm\u5355\u5143\u4e2d\u6709\u6b64BUG\uff0cComName\u8fd9\u91cc\u4e0d\u53ef\u4ee5\u76f4\u63a5\u8d4b\u503c\uff0c\u9700\u8981\u505a\u5982\u4e0b\u5904\u7406\u3002<\/strong><\/span><\/p> \n

CommName := '\/\/.\/' + cbbCOM.Text; <\/span><\/span><\/span><\/span> <\/p> \n

\n
 1 procedure TMainFrm.advBtnConnectClick(Sender: TObject);  2 var  3 serialPortNO: string;  4 begin  5 try  6 with comMain do  7 begin  8  StopComm;  9 serialPortNO := Copy(cbbCOM.Text, 4, Length(cbbCOM.Text) - 3); 10 BaudRate := StrToInt(cbbBaudRate.Text); 11 \/\/ ByteSize := TByteSize(cbbByteSize.ItemIndex); 12 \/\/ StopBits := TStopBits(cbbStopBit.ItemIndex); 13 \/\/ Parity := TParity(cbbCheckBit.ItemIndex); 14 if StrToInt(serialPortNO) > 9 then 15 begin 16 CommName := '\/\/.\/' + cbbCOM.Text; 17 end 18 else 19 begin 20 CommName := cbbCOM.Text; 21 end; 22  comMain.StartComm; 23 connectStatus.Caption := 'Connected'; 24 connectStatus.FillColor := clLime; 25 advBtnConnect.Enabled := False; 26 gbSendMsg.Enabled := True; 27 end; 28 except 29 connectStatus.Caption := 'Not Connected'; 30 connectStatus.FillColor := clRed; 31 gbSendMsg.Enabled := False; 32 end; 33 34 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> \n <\/div> \n 

 <\/p> \n

\u53d1\u9001\u6307\u4ee4<\/span><\/span><\/span><\/span><\/strong><\/em><\/span><\/p> \n

WriteCommData(); <\/p> \n

\n
 1<\/span> procedure<\/span> TMainFrm.advBtnConfirmClick(Sender: TObject);\r\n<\/span> 2<\/span> begin<\/span>\r\n 3<\/span>   if<\/span> mmSendMsg.Lines.Count <= 0<\/span> then<\/span>\r\n 4<\/span>   begin<\/span>\r\n 5<\/span>     Application.MessageBox('<\/span>There is no key word, please check the MsgSendList,thanks.<\/span>'<\/span>, '<\/span>Error Information<\/span>'<\/span>, MB_OK + MB_ICONSTOP);\r\n<\/span> 6<\/span>     mmSendMsg.SetFocus;\r\n<\/span> 7<\/span>     Exit;\r\n<\/span> 8<\/span>   end<\/span>;\r\n<\/span> 9<\/span>   if<\/span> cbByte.Checked then<\/span>\r\n10<\/span>   begin<\/span>\r\n11<\/span>     SendHex(mmSendMsg.Text);\r\n<\/span>12<\/span>   end<\/span>\r\n13<\/span>   else<\/span>\r\n14<\/span>   begin<\/span>\r\n15<\/span>     comMain.WriteCommData(PChar(mmSendMsg.Text), Length(mmSendMsg.Text));\r\n<\/span>16<\/span>   end<\/span>;\r\n<\/span>17<\/span>   if<\/span> (cbAutoSend.Checked) and<\/span> (edtTime.Text <> ''<\/span>) and<\/span> (cbByte.Checked) then<\/span>\r\n18<\/span>   begin<\/span>\r\n19<\/span>     timerMain.Interval := StrToInt(edtTime.Text);\r\n<\/span>20<\/span>     timerMain.Enabled := True;\r\n<\/span>21<\/span>   end<\/span>;\r\n<\/span>22<\/span> end<\/span>;<\/pre> \n <\/div> \n 

SendHex\u51fd\u6570 <\/p> \n

\n
 1<\/span> procedure<\/span> TMainFrm.SendHex(S: string<\/span>);\r\n<\/span> 2<\/span> var<\/span>\r\n 3<\/span>   s2: string<\/span>;\r\n<\/span> 4<\/span>   buf1: array<\/span>[0<\/span>..50000<\/span>] of<\/span> char;\r\n<\/span> 5<\/span>   i: integer;\r\n<\/span> 6<\/span> begin<\/span>\r\n 7<\/span>   s2 := ''<\/span>;\r\n<\/span> 8<\/span>   for<\/span> i := 1<\/span> to<\/span> length(s) do<\/span>\r\n 9<\/span>   begin<\/span>\r\n10<\/span>     if<\/span> ((copy(s, i, 1<\/span>) >= '<\/span>0<\/span>'<\/span>) and<\/span> (copy(s, i, 1<\/span>) <= '<\/span>9<\/span>'<\/span>)) or<\/span> ((copy(s, i, 1<\/span>) >= '<\/span>a<\/span>'<\/span>) and<\/span> (copy(s, i, 1<\/span>) <= '<\/span>f<\/span>'<\/span>))\r\n<\/span>11<\/span>       or<\/span> ((copy(s, i, 1<\/span>) >= '<\/span>A<\/span>'<\/span>) and<\/span> (copy(s, i, 1<\/span>) <= '<\/span>F<\/span>'<\/span>)) then<\/span>\r\n12<\/span>     begin<\/span>\r\n13<\/span>       s2 := s2 + copy(s, i, 1<\/span>);\r\n<\/span>14<\/span>     end<\/span>;\r\n<\/span>15<\/span>   end<\/span>;\r\n<\/span>16<\/span>   for<\/span> i := 0<\/span> to<\/span> (length(s2) div<\/span> 2<\/span> - 1<\/span>) do<\/span>\r\n17<\/span>     buf1[i] := char(strtoint('<\/span>$<\/span>'<\/span> + copy(s2, i * 2<\/span> + 1<\/span>, 2<\/span>)));\r\n<\/span>18<\/span>   comMain.WriteCommData(buf1, (length(s2) div<\/span> 2<\/span>));\r\n<\/span>19<\/span>   mmMsg.Lines.Add('<\/span>MsgSend[<\/span>'<\/span> + S + '<\/span>]<\/span>'<\/span>);\r\n<\/span>20<\/span> end<\/span>;<\/pre> \n <\/div> \n 

\u63a5\u6536\u6307\u4ee4<\/span><\/em><\/strong><\/p> \n

\u9009\u4e2d\u63a7\u4ef6\uff0c\u6dfb\u52a0OnReceiveError\u4e8b\u4ef6\uff0c\u4ee3\u7801\u5982\u4e0b\u3002<\/p> \n

\"\"<\/span><\/em><\/strong><\/p> \n

\n
 1<\/span> procedure<\/span> TMainFrm.comMainReceiveData(Sender: TObject; Buffer: Pointer;\r\n<\/span> 2<\/span>   BufferLength: Word);\r\n<\/span> 3<\/span> var<\/span>\r\n 4<\/span>   S: string<\/span>;\r\n<\/span> 5<\/span>   I, L: INTEGER;\r\n<\/span> 6<\/span>   RBUF: array<\/span>[0<\/span>..2048<\/span>] of<\/span> BYTE;\r\n<\/span> 7<\/span> begin<\/span>\r\n 8<\/span>   Move(Buffer^, pchar(@rbuf)^, BufferLength);\r\n<\/span> 9<\/span>   L := BufferLength;\r\n<\/span>10<\/span>   for<\/span> I := 0<\/span> to<\/span> L - 1<\/span> do<\/span>\r\n11<\/span>   begin<\/span>\r\n12<\/span>     S := S + INTTOHEX(RBUF[I], 2<\/span>);\r\n<\/span>13<\/span>   end<\/span>;\r\n<\/span>14<\/span>   mmMsg.Lines.Add('<\/span>MsgReceived[<\/span>'<\/span> + S + '<\/span>]<\/span>'<\/span>);\r\n<\/span>15<\/span> end<\/span>;<\/pre> \n <\/div> \n 

\u65ad\u5f00\u4e32\u53e3\u8fde\u63a5<\/strong><\/p> \n

comMain.StopComm\uff1b<\/p> \n

\u9644\u5f55<\/strong><\/p> \n

\n
  1<\/span> unit<\/span> uMain;\r\n<\/span>  2<\/span> \r\n  3<\/span> interface<\/span>\r\n  4<\/span> \r\n  5<\/span> uses<\/span>\r\n  6<\/span>   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,\r\n<\/span>  7<\/span>   Dialogs, StdCtrls, ExtCtrls, SPComm, RzPanel, AdvSmoothButton,\r\n<\/span>  8<\/span>   AdvSmoothStatusIndicator, AdvGlassButton, RzButton, RzRadChk, RzStatus,\r\n<\/span>  9<\/span>   RzPrgres;\r\n<\/span> 10<\/span> \r\n 11<\/span> type<\/span>\r\n 12<\/span>   TMainFrm = class<\/span>(TForm)\r\n<\/span> 13","orderid":"0","title":"Delphi - \u91c7\u7528\u7b2c\u4e09\u65b9\u63a7\u4ef6TMS\u3001SPComm\u5f00\u53d1\u4e32\u53e3\u8c03\u8bd5\u52a9\u624b(\u4e00)","smalltitle":"","mid":"0","fname":"Delphi","special_id":"0","bak_id":"0","info":"0","hits":"351","pages":"3","comments":"0","posttime":"2019-09-04 00:59:57","list":"1567529997","username":"admin","author":"","copyfrom":"","copyfromurl":"","titlecolor":"","fonttype":"0","titleicon":"0","picurl":"https:\/\/www.cppentry.com\/upload_files\/","ispic":"0","yz":"1","yzer":"","yztime":"0","levels":"0","levelstime":"0","keywords":"Delphi<\/A> \u91c7\u7528<\/A> \u7b2c\u4e09\u65b9<\/A> \u63a7\u4ef6<\/A> TMS<\/A> SPComm<\/A> \u5f00\u53d1<\/A> \u4e32\u53e3<\/A> \u8c03\u8bd5<\/A> \u52a9\u624b<\/A>","jumpurl":"","iframeurl":"","style":"","template":"a:3:{s:4:\"head\";s:0:\"\";s:4:\"foot\";s:0:\"\";s:8:\"bencandy\";s:0:\"\";}","target":"0","ip":"120.229.33.222","lastfid":"0","money":"0","buyuser":"","passwd":"","allowdown":"","allowview":"","editer":"","edittime":"0","begintime":"0","endtime":"0","description":"Delphi - \u91c7\u7528\u7b2c\u4e09\u65b9\u63a7\u4ef6TMS\u3001SPComm\u5f00\u53d1\u4e32\u53e3\u8c03\u8bd5\u52a9\u624b","lastview":"1713534800","digg_num":"0","digg_time":"0","forbidcomment":"0","ifvote":"0","heart":"","htmlname":"","city_id":"0"},"page":"1"}