SPCOMM通信不畅------------------------------(50分)

L

lbmjy

Unregistered / Unconfirmed
GUEST, unregistred user!
Spcomm与Moden通信没有问题,但与称量仪器(PT650C)通信是,直接通信不上,
如果用MsCom或者Async32打开过端口,在用Spcomm则没问题。
 
说什么呢?你问一下厂家通讯参数,很可能是端口设置问题。
 
通讯参数:COM1,9600,Event,7,1
读指令:READ<CR><LF>
 
你用串口精灵测试一下,有可能参数变了,我们公司梅特勒-托力多的地磅就是说明书
上的参数与实际的参数不符。
 
但是直接用mscomm控件按照这些参数通讯没问题。问题现象
1、用Spcomm通讯,读指令没反应;
2、关闭Spcomm程序,打开mscomm程序,打开端口通讯,结果OK;
3、关闭mscomm程序,用Spcomm通讯,此时通讯没问题
以上转换程序时,没修改任何参数,只要重新启动计算机都可重现此现象。
 
把你的代码贴出来吧。
 
//打开端口
COMM1.startcomm;
//发送读指令
var
s:string;
ps:pchar;
i:integer;
begin
s:='READ'+#13#10;
ps:=pchar(s);
i:=strlen(psstr);
COMM1.WriteCommData(ps,i);
end;

//接收数据在接受事件,但指令发送后没反应
 
comm1.startcomm;//不要放在form1.oncreate中;
 
comm1.startcomm;//不在form1.oncreate中
 
comm1.startcomm;与comm1.writecommdata不要放在一个事件中;如不行,请把VB
代码贴出来。
 
不好意思,没写清楚,comm1.startcomm;与comm1.writecommdata事件是分开的。
VB:
Private Sub Command1_Click()
MsCom.Settings="9600,E,7,1"
MsCom.CommPort=1
MsCom.PortOpen
End Sub
Private Sub Command2_Click()
MsCom.OutPut="READ"+vbCrLf
End Sub
 
var
s:string;
ps:pchar;
i:integer;
begin
s:='READ'+#13#10;
i:=length(s);
ps:=pchar(s);

COMM1.WriteCommData(ps,i);
end;
 
流控制注意了吗?
 
cao192:
能具体谈谈Spcomm与MsComm设置上的不同点。
 
我在用spcomm时也发现了这样一个问题,用acrii格式时一切正常,但用十六进制,同时字符串太长时,就会发现发送出去后没有返回,但只要关闭一下com口,重新打开又可以了!!真是奇怪!!
 
我只用过SPCOMM,与单片机通讯正常,如果有需要就和我联系。
 
to cao192兄 及各位DFW们,小弟急求一份SPCOMM多线程通信源程序!
因为不太清楚,既然SPCOMM已经是多线程,那么我的程序本身是否需要再开线程。
谢谢大家了,谢谢!-------------------穷翁上
 
to aswine:我现在用的SPCOMM是单线程的,多线程是否能用,没有试过。
如果有需要,请发cao192@163.net
 
关注此问题
 
顶部