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是接收的数组
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)