关于SpComm的使用问题(50分)

  • 主题发起人 主题发起人 草在墙头
  • 开始时间 开始时间

草在墙头

Unregistered / Unconfirmed
GUEST, unregistred user!
我用SpComm和一台高压设备相连,通过串口来修改高压设备的参数,当发送一条命令过去,高压设备就返回一条数据回来。但有时高压设备出错,我这边怎么发数据,那边就是接受不到,但我关闭程序并重新打开程序时又能正常运行,可以从高压设备那边接受数据回来。为什么?我现在的做法是但一出错,就释放Comm控件并重新创建一个,可以解决问题,但为提究竟出在什么地方呢?
 
在onreceiveerror事件中添加
comm1.free;
comm1:=tcomm.create(self);
 
to dbb2tkw: 你说的方法是可以,但我很想知道错误究竟在什么地方,有没有别的更好的解决方法。
是不是在一些异常情况下,comm中的一些标志被置成了不可发送状态?请指教
 
设备有没有断过电诸如此类的?
 
断电后肯定是对设备重新初始化,在此不考虑设备断电。
 
在我使用spcomm的过程中,我发现了它的一个问题,就是当设备断电之后,再连上(恢复供电),它就不能再正常工作,必须重启程序才可以再接受数据。
我现在也不太清楚它是什么原因,但MsComm却没有这个问题。
 
试过不释放spcomm控件,而只是重新初始化一次串口吗?
 
to lawway:什么意思?能说明白一点吗?或用代码表示,谢谢!
 
你要修改一下参数
Inx_xonxoffflow:=true;
outx_xonxoffflow=false;
 
to Michalee:将这两个参数修改一下就行了?我现在不在设备边上,不能马上就试。
那么Outx_CtsFlow和Outx_DsrFlow属性对信息的发送和接受有没有影响呢?
 
Inx_xonxoffflow:=true;
输入时使用 XON/XOFF 握手协议
outx_xonxoffflow=false;
输出使用 XON/XOFF 握手协议
(以上两个是软件方式握手)

Outx_CtsFlow
输出用 CTS/RTS 握手
Outx_DsrFlow
输出用 DSR/DTR 握手
以上两个是硬件握手方式
 
能说一下在正常通讯的情况下,Inx_xonxoffflow,outx_xonxoffflow,Outx_CtsFlow,Outx_DsrFlow的值为什么?在出错的时候这些又可能会变成什么值?请指教。
 
不要王歪处想,在spcomm的事件中要避免一切异常,否则死翘翘!
 
那是握手协议
与你的设备有关
一般全为 false
出错时它们是不变的。
 
会不会串口资源的占用问题?
 
to lawway :你的意思是不是"spComm.StopComm;spComm.StartComm;"??
to Headchen:为什么出现异常就死翘翘?怎么避免?
to gggggg :若是资源占用问题,请问怎么解决?

敬请指教!
 
后退
顶部