现象:
将Tcomport(版本:ComPort Library ver. 3.0 )封装在DLL中,进行串口通讯时,无法接收数据!
解决办法:
在创建组件时,只需要更改一个属性的设置就可以了。如下所示:
//DLL入口
talencaport:=ttalencaport.Create(nil);
talencaport.port:='COM1';
talencaport.SyncMethod:=smWindowSync;
talencaport.OnRxChar:=talencaport.readbuf;
红色加粗的代码就是关键的一句代码!加入此句代码后,在DLL中发送与接收数据就与在窗体上使用一样。
分析:
由于工作需要,一直使用DELPHI5,DELPHI7两个版本进行开发。在DELPHI5中,将TCOMPORT封装在DLL中使用,没有任何的异常。后来抱成DELPHI7后,当时以为,同样的代码,应当没有什么问题。于是,编译。成功!哈!原来版本升级这么容易!也没有多想,没有测试,就把这事情放在了脑后。-_-!!
时间过了一个月,公司有设备要进行测试,因此,自己很高兴地把新的东西用来测试,结果,所有的通讯指令均是失败(无数据)!头顿时就要炸了。。。。。。
还好,是自己测试,有问题还算是可以补救的。仔细看源码,与DELPHI5下的源码是一样的,为什么在DELPHI7下就接收不到数据呢?看来问题还是在TCOMPORT本身上。(:),偶还是粉相信DELPHI实力的!:))