全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1399
推到 Plurk!
推到 Facebook!

哪位先进可以解析一下此串口控件的用法?

尚未結案
sailorjoye
一般會員


發表:11
回覆:18
積分:5
註冊:2003-05-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-15 14:43:21 IP:61.190.xxx.xxx 未訂閱
uses SPComm; //变量说明 var FCOMM: TFCOMM; Viewstring:string; i:integer; rbuf,sbuf:array[1..6] of byte; //打开串口 procedure TFCOMM.FormShow(Sender: TObject); begin comm1.StartComm; end; //关闭串口 procedure TFCOMM.FormClose(Sender: TObject; var Action: TCloseAction); begin comm1.StopComm; end; //发送数据{自定义的发送过程} procedure senddata; var i:integer; commflg:boolean; begin viewstring:=''; commflg:=true; for i:=1 to 6 do begin if not fcomm.comm1.writecommdata(@sbuf[i],1) then begin commflg:=false; break; end; sleep(2); {发送时字节间的延时} viewstring:=viewstring inttohex(sbuf[i],2) ''; end; viewstring:='发送:' viewstring; fcomm.memo1.lines.add(viewstring); fcomm.memo1.lines.add(''); if not commflg then messagedlg('发送失败!',mterror,[mbyes],0); end; procedure TFCOMM.Btn_sendClick(Sender: TObject);{发送按钮的点击事件} begin sbuf[1]:=byte($f0); {帧头} sbuf[2]:=byte($01); {命令号} sbuf[3]:=byte($ff); sbuf[4]:=byte($ff); sbuf[5]:=byte($01); sbuf[6]:=byte($0f); {帧尾} senddata;{调用发送函数} end; 接收过程 procedure TFCOMM.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word); var i:integer; begin viewstring:=''; move(buffer^,pchar(@rbuf)^,bufferlength); for i:=1 to bufferlength do viewstring:=viewstring inttohex(rbuf[i],2) ''; viewstring:='接受' viewstring; memo1.lines.add(viewstring); memo1.lines.add(''); end; 指导我的人说这个历程可以自动接收数据,可是我调试不出,特来求教! 我暂定的协议是这样的:先向串口发送36个'00H',波特率、校验位及数据 位和停止位默认,等待30ms后,再向串口发送55H,准备接收数据,若无数 据则退出,有则将数据存入*.ini文件中!还望各位前辈不吝赐教!^&^! 凤翅天翔, 无比彷徨!
------
凤翅天翔,

无比彷徨!
sailorjoye
一般會員


發表:11
回覆:18
積分:5
註冊:2003-05-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-16 08:43:28 IP:61.190.xxx.xxx 未訂閱
还请各位前辈不吝赐教才是∵    [h1]凤翅天翔

无比彷徨^O&^~!
------
凤翅天翔,

无比彷徨!

sailorjoye
一般會員


發表:11
回覆:18
積分:5
註冊:2003-05-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-16 08:51:45 IP:61.190.xxx.xxx 未訂閱
还请各位先进不吝赐教才是    [h2]凤翅天翔[h1]无比彷徨^&^~!
------
凤翅天翔,

无比彷徨!
wnhoo
高階會員


發表:75
回覆:443
積分:198
註冊:2003-04-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-16 09:14:55 IP:61.155.xxx.xxx 未訂閱
这是我以前做的串口调试工具,使用的是SPCOMM,但我现在用MSCOMM32做。 好象SPCOMM存在一些缺点。 下面是我使用SPCOMM的发送与接受的代码: procedure TForm1.Timer1Timer(Sender: TObject); var   i:integer;   sbuf:Pchar;   str:string; begin   str:=Chr($01)+'00'+Chr($43)+trim(datago.text)+Chr($0d);   GetMem(sbuf,Length(str)+1);   StrPLCopy(sbuf,str,Length(str));   Comm1.WriteCommData(sbuf,strlen(sbuf));   str:='';   for i:=0 to strlen(sbuf)-1 do   str:=str+IntToHex(Ord(sbuf[i]),2)+' ';   str:='发送>'+str;   look.Lines.Add(str);   stat.Lines.Add('发送OK!');   FreeMem(sbuf); end;    procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;   BufferLength: Word); VAR i:integer; begin      viewstring:='';   move(buffer^,rbuf,bufferlength);   for i:=1 to bufferlength do   viewstring:=viewstring+ inttohex(rbuf[i],2)+' ';   viewstring:='接收<'+ viewstring;   look.lines.add(viewstring);   if rbuf[5]<>65 then   begin     //Timer1.Enabled :=false;     stat.Lines.Add('数据接收OK!');   end; end;    这是可以用的!!!    我看了你的代码,好象没有发现什么错误。我揣测,可能是你发送的命令不对,因为不同的串口设备有不同的协议,只有协议符合时,串口设备才反馈信息。    你可能是发送了命令,但不被串口设备识别。所以就没有返回信息了!!!    供参考!    风花雪月 e梦情缘
------
风花雪月 e梦情缘
sailorjoye
一般會員


發表:11
回覆:18
積分:5
註冊:2003-05-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-16 12:22:58 IP:61.190.xxx.xxx 未訂閱
多谢wnhoo先进,我用的就是我回去学习一下您的代码,有不懂的地方再向您请教~因为我学Delphi不久,并且是第一次搞串口编程,不懂之处,还请多多指点才是,在此拜谢!@    凤翅天翔无比彷徨^&^~!
------
凤翅天翔,

无比彷徨!
sailorjoye
一般會員


發表:11
回覆:18
積分:5
註冊:2003-05-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-16 12:23:43 IP:61.190.xxx.xxx 未訂閱
多谢wnhoo先进,我用的就是我回去学习一下您的代码,有不懂的地方再向您请教~因为我学Delphi不久,并且是第一次搞串口编程,不懂之处,还请多多指点才是,在此拜谢!@ 凤翅天翔无比彷徨^&^~!
------
凤翅天翔,

无比彷徨!
sailorjoye
一般會員


發表:11
回覆:18
積分:5
註冊:2003-05-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-16 12:26:01 IP:61.190.xxx.xxx 未訂閱
多谢wnhoo先进,我用的就是spcomm控件。对了,MSCOMM32控件是不是也适用于C++Builder呀?我回去学习一下您的代码,有不懂的地方再向您请教~因为我学Delphi不久,并且是第一次搞串口编程,不懂之处,还请多多指点才是,在此拜谢!@ 凤翅天翔无比彷徨^&^~!
------
凤翅天翔,

无比彷徨!
系統時間:2024-05-17 1:53:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!