如何利用DELPHI中的MSCOMM控件进行串行口编程啊!!!

如何利用DELPHI中的MSCOMM控件进行串行口编程啊!!!,第1张

1.初始化、打开串口

try

Mscomm1.CommPort

//指定串口

Mscomm1.Settings

600,n,8,1'

//串口通讯方式设置

Mscomm1.InBufferCount

//清空接受缓冲区

Mscomm1.OutBufferCount

//清空发送缓冲区

Mscomm1.PortOpen

ue

//打开串口

except

ShowMessage('端口初始化错误!')

end2.向端口写数据

MSComm1.Output

字符串内容3.从端口获得数据

如果你知道应该接收的数据长度(假设为8):

var

st

string

...

st

tTickCount()

while

((MSComm1.InBufferCount<8)

and

(GetTickCount()-st<50))

do

Application.ProcessMessage

TempStr

=

MSComm1.InPut

...//处理接收到的信息

except

end

如果你不知道应该接收的数据长度可以设置它的RThreshold与InpuLen属性,分别表示接收多少个字符产生一个OnComm事件和一个Input方法从缓冲区中获取多少个字符。TempStr

MSComm1.InPut放到OnComm事件里写。例如,你可以设置RThreshold=1,InputLen=1在OnComm事件里这样写:

TempStr

MSComm1.InPut

if

TempStr<>#13

then

//还没有接收完数据

ReceiveStr

ReceiveStr

+

TempStr

else

...

//处理接收到的数据(这些记得不是太清楚了,原来写的程序今天不在身边)

我一般使用spcomm控件

很简单的

comm.CommPort := 1

comm.BaudRate := 9600

comm.StartComm

comm.PortOpen:=true

if comm.PortOpen then

begin

showmessage('串口打开')

end

else

begin

showmessage('串口打开失败')

end

至于发送

Comm.WriteCommData(数组, 数组长度)

至于接收 就在onReceiveData事件里

Move(Buffer^, ByteArr, BufferLength) 其中ByteArr是接收的数组


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11530704.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存