关于spcomm控件的一个简单问题!(50分)

  • 主题发起人 主题发起人 ll710915
  • 开始时间 开始时间
L

ll710915

Unregistered / Unconfirmed
GUEST, unregistred user!
我在将串口动态设置时使用的comm1.commname:='com2';不起作用,如果我的设备连的是comm2
而程序启动时打开的com口是comm1,该如何用语句修改啊?我用comm1.stopcomm;
comm1.commname:='com2';
comm1.startcomm;
也没有用?用mscomm就没问题,请帮帮我!!!!
 
如果你单独打开COM2呢?如果单独打开COM2都有问题,还是先检查下你的硬件。
如果没问题,我建议你在comm1.stopcomm后面加个sleep(200)延时200ms试试。
 
先把串口自环一下,然后试验你的串口是不是好的。
 
串口是好的,问题在于在窗口启动中改变有效,但在按钮中执行就没效,在按钮中改变串口
该如何做呢?你们可以实验一下!
 
Button1Click(...)
begin
comm1.stopcomm;
end;

Button2Click(...)
begin
comm1.commname:='com2';
comm1.startcomm;
end;
一般中间都要隔上一会
 
谢谢cook,如果我想自动判断客户采用的是哪个串口,该如何做?
我的下位机协议为:当接收到#0字符便发数据。
只要回答,马上给分!
 
你可以将#0分别向COM1和COM2送出,然后在COM1和COM2上同时取数据,取到数据的口即是
下位机连接的口,我的程序就是这样做的,不过多加了一个检测信号。
例:上位机发送指定数据串#6#6#6#6#6,下位机若接收到#6#6#6#6#6,就返回#6#6#6#6#6,
我的上位机程序运行后,在form.onshow里向各COM口发送#6#6#6#6#6,然后在几个COM口接收数据,
接收到返回数据的串口就是下位机连接的COM口啦,还有不明白的,请到QQ:584740
 
你先往com1发送,如果下位机有反应会触发一个事件,
这样下位机接的就是com1,如果过一段时间,比如1秒钟,
重发,一般重发三次,如果都没有回应,
往com2发,方法同上,如果三次没有回应,下位机可能没有开或者通讯有故障,
报警后再发com1,如此循环,只要下位机接到了某一上,3秒内你就知道了,
而且两个串口是备用的。
 
多人接受答案了。
 
后退
顶部