Spcomm發送數據 |
尚未結案
|
zxy666666
中階會員 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
大家好!
我用Spcomm元件與PLC通訊,
請問如下副程式senddata,可否不用for循環來做呢?應該如何寫?謝謝!
procedure TForm1.Button1Click(Sender: TObject); begin senddata; end; procedure TForm1.senddata; //發送資料 var i: integer; commflg: boolean; begin commflg:=true; sbuf[0] := $02; sbuf[1] := $30; sbuf[2] := $31; sbuf[3] := $34; sbuf[4] := $36; sbuf[5] := $30; sbuf[6] := $44; sbuf[7] := $40; sbuf[8] := $41; sbuf[9] := $30; sbuf[10] := $30; sbuf[11] := $30; sbuf[12] := $35; sbuf[13] := $30; sbuf[14] := $42; sbuf[15] := $45; sbuf[16] := $03; for i:=0 to 16 do begin if not fmMain.Comm1.WriteCommData(@sbuf[i],1) then begin commflg:=false; //發送失敗 break; end ; sleep(2); //發送位元組間的延遲時間 end; if not commflg then begin messagedlg('連接失敗!',mterror,[mbyes],0); exit; end; end; |
kan0515
中階會員 發表:56 回覆:120 積分:50 註冊:2002-06-24 發送簡訊給我 |
|
zxy666666
中階會員 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
zxy666666
中階會員 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
謝版主大人回覆. 呵呵,我也想理論上不用for可能會比較快才對吧?
不過就算不速度真差不了多少,我還是想知道怎麼用發送字符串的方式發送(因為覺得這樣方便一點),如下為WriteCommData原函數.
我是字符String與Pchar還有Char這幾個型態搞不太懂.
不知哪位大大可否幫忙指點一下呢?感謝 < class="code">
function TComm.WriteCommData( pDataToWrite: PChar; dwSizeofDataToWrite: Word ): Boolean;
var
Buffer: Pointer;
begin
if (WriteThread <> nil) and (dwSizeofDataToWrite <> 0) then
begin
Buffer := Pointer(LocalAlloc( LPTR, dwSizeofDataToWrite 1 ));
Move( pDataToWrite^, Buffer^, dwSizeofDataToWrite );
FSendDataEmpty := False;
if PostThreadMessage( WriteThread.ThreadID, PWM_COMMWRITE,
WPARAM(dwSizeofDataToWrite), LPARAM(Buffer) ) then
begin
Result := True;
Exit
end
end; Result := False
end; {TComm.WriteCommData}
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |