如何利用DELPHI中的MSCOMM控件进行串行口编程啊!!! 我用过TVaComm来编程,这个东西很好用,首先要设置COM口的波特率、停止位、起始位、奇偶校验等信息,然后就可以在ONRECHAR事件中通过Comm1.ReadText()或Comm1.ReadBuffer()等方法来获得传来的数据了。当然也提供捕捉错误的方法,这个在事件栏中也很容易的得到了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1)查阅 WINDOWS 编程方面的资料,不是DELPHI的。好象是 WINDOWS API 函数大全中有介绍的。 给你邮个例子吧!mail to ? 能也给我邮个例子吗?谢谢![email protected] 1.初始化、打开串口 try Mscomm1.CommPort:=3; //指定串口 Mscomm1.Settings:='9600,n,8,1'; //串口通讯方式设置 Mscomm1.InBufferCount:=0; //清空接受缓冲区 Mscomm1.OutBufferCount:=0; //清空发送缓冲区 Mscomm1.PortOpen:=true; //打开串口 except ShowMessage('端口初始化错误!'); end;2.向端口写数据 MSComm1.Output:=字符串内容;3.从端口获得数据 如果你知道应该接收的数据长度(假设为8): var st: DWORD; TempStr: string; ... st:=GetTickCount(); while ((MSComm1.InBufferCount<8) and (GetTickCount()-st<50)) do Application.ProcessMessage; TempStr := ''; try 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 ... //处理接收到的数据(这些记得不是太清楚了,原来写的程序今天不在身边) Double类型变量范围? with do的问题求教 动态字幕的深入 求助关于mscomm 请问pascal语言中的反余弦和反正弦函数是什么? 菜单弹出时的重画问题 帮帮忙! delphi如何根据数组的值得大小进行排序(百分求解) 为什么没人回答我的问题,你们都那么菜吗? 请问几个关于memo的问题(我只能给23分,请原谅) ?消除数据库登入的密码 报表字段太多,超出边界怎么处理?
[email protected]
try
Mscomm1.CommPort:=3; //指定串口
Mscomm1.Settings:='9600,n,8,1'; //串口通讯方式设置
Mscomm1.InBufferCount:=0; //清空接受缓冲区
Mscomm1.OutBufferCount:=0; //清空发送缓冲区
Mscomm1.PortOpen:=true; //打开串口
except
ShowMessage('端口初始化错误!');
end;2.向端口写数据
MSComm1.Output:=字符串内容;3.从端口获得数据
如果你知道应该接收的数据长度(假设为8):
var
st: DWORD;
TempStr: string;
...
st:=GetTickCount();
while ((MSComm1.InBufferCount<8) and (GetTickCount()-st<50)) do
Application.ProcessMessage;
TempStr := '';
try
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
... //处理接收到的数据(这些记得不是太清楚了,原来写的程序今天不在身边)