串口有数据用什么方法得到?举例
波特率为2400,
奇偶校验:无
数据位:8
停止位参数:1位
必须上位机为61(小a)才能读取数据,
用spcomm控件不能收到数据可使用厂方提供的测试程序可测试到,只是为什么?
(用spcomm控件用串口鼠标测试通过!)
波特率为2400,
奇偶校验:无
数据位:8
停止位参数:1位
必须上位机为61(小a)才能读取数据,
用spcomm控件不能收到数据可使用厂方提供的测试程序可测试到,只是为什么?
(用spcomm控件用串口鼠标测试通过!)
CreatFile 打 开 串 行 口
ReadFile 读 串 口 操 作
WriteFile 写 串 口 操 作
在MSDN中有很详细的使用说明procedure Tform1.comminitialize; // 串 行 口 初 始 化
var
lpdcb:Tdcb;
Begin
hcom:=createfile('com2',generic_read or generic_write,0,nil,open_existing,
file_attribute_normal or file_flag_overlapped,0);//打开 串 行 口
if hcom=invalid_handle_value then
else
setupcomm(hcom,4096,4096); // 设 置 输 入, 输 出 缓 冲 区 皆 为4096 字 节
getcommstate(hcom,lpdcb); // 获 取 串 行 口 当 前 默 认 设 置
lpdcb.baudrate:=2400;
lpdcb.StopBits:=1;
lpdcb.ByteSize:=8;
lpdcb.Parity:=EvenParity; // 偶 校 验
Setcommstate(hcom,lpdcb);
setcommMask(hcom,ev_rxchar);
// 指 定 串 行 口 事 件 为 接 收 到 字 符;
end;然后读串口就可以了(可以定时;可以用线程,可以用事件触发,当有字符收到时)
mscomm:微软的东西,ActivX控件,使用简单,在VB中带的,性能一般,由于是ActivX控件,打包时需要注册好多信息,不推荐使用。
spcomm:比较好的vcl,算是比较专业的,解剖了一下,功能比较完善。
TurboPower:公认的专业通讯控件。可以到其站点下载,开放源码了。
我在制作串口通讯软件时三种都用过,最终全部使用TurboPower!所以也推荐大家使用它。
写了个例子,基本的串口通讯都可以实现,可提供参考。
下载地址:http://www.kaer.cn/default.aspx(网站安全性较差,经常当机,如果急用,mail我)
多多指正:[email protected]上边所讲的例子用的是事件主动接收,不是轮询!