摘要: 在串口通讯时有字符和十六进制两种数据传输方式,不论使用哪种方式,只要能正确收到数据就是目的,至于收到数据后如何处理,就要根据具体的情况来定了。1.接收数据的方法:轮询和中断(利用windows消息激发事件)。1)轮询:每间隔一定的时间查询一下串口接收缓存中有无数据,有就读出来。这种方法是很毫资源的,即没事找事。2)中断:在控件中有OnTrigger事件,当串口收到数据后,即触发此事件,无数据时什么都不做,在这个事件中接收数据就比较科学了。所以,提倡使用控件中的OnTrigger事件接收数据。2.通讯协议的制定:接收数据的一般处理方法,最基本的思路就是通过协议进行分析,所以协议的制定是至关重要的 阅读全文
posted @ 2011-10-10 15:30 宋扬 阅读(931) 评论(1) 推荐(1) 编辑
摘要: SPComm读取数据问题SPCOMM 控件的属性设置很关键的,特别是使用事件驱动时接收大块数据时尤为明显,如果设置不当,接收到的数据可能严重出错。根据本人经验,要注意事项如下:ReadIntervalTimeout:=100SPCOMM 属性时,所有 可设置 True 和 False 的属性应当设置成 False;在接收数据时,应注意适当设置延时,见以下代码:procedure TCKFRM.SPCOMReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word);varTXT:string;I,L:INTEGER;RBUF:A 阅读全文
posted @ 2011-10-10 15:28 宋扬 阅读(1217) 评论(0) 推荐(0) 编辑
摘要: 为了实现PC与单片机8051之间的通讯,首先要调通它们之间的握手信号,假定它们之间的通讯协议是,PC到8051一帧数据6个字节, 8051到PC一帧数据也为6个字节,当PC发出(F0,01,FF,FF,01,F0)后能收到这样一帧(F0,01,FF,FF,01,F0),表示 数据通信握手成功,两者之间就可以按照协议相互传输数据。在PC方要发送及接受数据需要以下步骤:1.创建一个新的工程COMM.DPR,把窗体的NAME属性改为FCOMM,把窗体的标题改为测试通讯,添加控件。 对COMM1(黑色矩形围住的控件)进行属性设计,设波特率4800,校验位无,字节长度_8,停止位_1,串口选择COM1. 阅读全文
posted @ 2011-10-10 15:22 宋扬 阅读(1046) 评论(0) 推荐(0) 编辑
摘要: 1.属性CommName:填写COM1,COM2…等串口的名字,在打开串口前,必须填写好此值。BaudRate:设定波特率9600,4800等,根据实际需要来定,在串口打开后也可更改波特率,实际波特率随之更改。ParityCheck:奇偶校验。ByteSize:字节长度_5,_6,_7,_8等,根据实际情况设定。Parity:奇偶校验位pBits:停止位SendDataEmpty:这是一个布尔属性,为true时表示发送缓存为空,或者发送队列里没有信息;为False时表示表示发送缓存不为空,或者发送队列里有信息。2.方法 Startcomm过程用于打开串口,当打开失败时通常会报错,错误主要... 阅读全文
posted @ 2011-10-10 15:18 宋扬 阅读(1201) 评论(0) 推荐(1) 编辑
摘要: 用Delphi 实现串口通讯,常用的几种方法为:使用控件如MSCOMM和SPCOMM,使用API函数或者在Delphi 中调用其它串口通讯程序。利用API编写串口通信程序较为复杂,需要掌握大量通信知识,其优点是可实现的功能更强大,应用面更广泛,更适合于编写较为复杂 的低层次通信程序。相比较而言,利用SPComm控件则相对较简单,该控件具有丰富的与串口通信密切相关的属性及事件,提供了对串口的各种操作。 使用控件这一方法容易掌握,而SPCOMM支持多线程,所以SPCOMM控件的应用更加广泛。 阅读全文
posted @ 2011-10-10 15:16 宋扬 阅读(1307) 评论(0) 推荐(0) 编辑