SPcomm组件和ComPort组件使用

前段时间一直使用SPcomm组件对串口发送数据。可以最近遇到一点问题,数据开始发送后,利用其SendDataEmpty属性,判断数据是否发送完成,可是如果发送的数据较长时,SendDataEmpty属性能够反映出实际情况,发送数据较短时,SendDataEmpty属性总是表示数据未发送完成,致使程序无法知道什么时候发送结束了,没有时间去仔细研究的根源在哪里,所以决定改用其它通信组件来代替此组件。

经过一般时间上网,找到了ComPort 3.1组件,于是用ComPort 3.1试了一下,还可以,就用ComPort 3.1替换了spcomm组件,经过一试,又出现了其它问题:

我的程序要求:Button在OnMouseDown事件中发送一串字符,在OnMouseUp事件中发送另一串字符,可是如果ComPort 3.1在OnMouseDown事件中出现错误,没有打开串口,或者发送数据失败,则程序不响应OnMouseUp事件,致使程序出现逻辑混乱,不知如何是好。

 

SPCOMM的主要属性,方法和事件 1.属性 CommName:填写COM1,COM2…等串口的名字,在打开串口前,必须填写好此值。 BaudRate:设定波特率9600,4800等,根据实际需要来定,在串口打开后也可更改波特率,实际波特率随之更改。 ParityCheck:奇偶校验。 ByteSize:字节长度_5,_6,_7,_8等,根据实际情况设定。 Parity:奇偶校验位 pBits:停止位 SendDataEmpty:这是一个布尔属性,为true时表示发送缓存为空,或者发送队列里没有信息;为False时表示表示发送缓存不为空,或者发送队列里有信息。 2.方法 Startcomm过程用于打开串口,当打开失败时通常会报错,错误主要有7种: ⑴串口已经打开 ; ⑵打开串口错误 ; ⑶文件句柄不是通讯句柄; ⑷不能够安装通讯缓存; ⑸不能产生事件 ; ⑹不能产生读进程; ⑺不能产生写进程; StopComm过程用于关闭串口,没有返回值。 函数WriteCommData(pDataToWrite: PChar;dwSizeofDataToWrite:Word ): boolean 用于发送一个字符串到写线程,发送成功返回true,发送失败返回false, 执行此函数将立即得到返回值,发送操作随后执行。函数有两个参数,其中 pdatatowrite是要发送的字符串,dwsizeofdatatowrite 是发送的长度。 3.事件 OnReceiveData : procedure (Sender: TObject;Buffer: Pointer;BufferLength: Word) of object 当输入缓存有数据时将触发该事件,在这里可以对从串口收到的数据进行处理。Buffer中是收到的数据,bufferlength是收到的数据长度。 OnReceiveError : procedure(Sender: TObject; EventMask : DWORD) 当接受数据时出现错误将触发该事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值