A:我自己用SPCOMM写的和下位机通信的程序
B:别人写的和下位机通信的程序(不知道用什么写的)
C:别人用SPCOMM写的串口通信的程序
D:别人用VC写的和串口通信的程序A 只要打开一次串口再关闭,B 就运行不正常。B 可以打开串口,也可以发数据,也可以收到下位机回过来的数据,但是数据总是缺几位。正常情况下,B 接收到的数据长度是1020字节,我的程序运行一遍之后,接收到的数据都是1009字节。D 打开,发送和A 相同的命令,关闭。B 运行正常C 运行一遍之后,B 就不能正常工作,现象和 A 运行之后一样。但是用AccessPort打开一次串口,再关闭。A 和 C 对 B 的影响就没了,B 就可以正常运行,接收到1020字节的数据。因此,我怀疑是我的串口资源没有释放干净,我用的stopcomm来释放资源,没有进行别的操作。但是我又没有占用串口,不然其他程序根本无法打开串口。我想知道的是,除了串口,还有什么资源是我执行stopcomm之后,仍然没有回收的,或者说有什么改变可以影响到下一个程序的运行?难道一个程序用了串口再关掉,还有什么属性或者数据残留会影响其他程序?请高手指教!!另外附带一个问题,为什么我登陆了CSDN,也点选了2周内不用重复登录,我也没有清理我的COOKIES,当我要进行什么操作的时候,CSDN总是反复让我登录呢?很不方便,请指教!

解决方案 »

  1.   

    毕竟SpComm是第三方的控件,我觉得从你的问题描述来看可能是spComm本身有些问题。建议使用MSComm,毕竟用着放心,问题也比较少。MSComm通常的问题是发送不了大于127的十六进制数据,但是这个问题是用法不正确,而不是控件本身有问题。(MSComm发送大于127的十六进制数据要求待发送的是Variant类型的数据,而不能是PChar类型或Byte及Byte数组的类型)
      

  2.   

    SPCOMM有源码,可以自己跟一下
      

  3.   

    我找到原因了,但是暂时不说,看有没有高手知道,嘿嘿,不要扔砖头另外,我补充的那个问题也很想知道:
    我登陆了CSDN,也点选了2周内不用重复登录,我也没有清理我的COOKIES,当我要进行什么操作的时候,CSDN总是反复让我登录
      

  4.   

    一直用spcomm,没遇到上述问题,静候楼主发布答案
      

  5.   

    SPCOMM通讯我一直用,主要是注意要发送的长度,长度写错会有异常。静候楼主发布答案结贴。
      

  6.   

        Inx_XonXoffFlow  := False;
        Outx_XonXoffFlow := False;这个问题?
      

  7.   

      if cmFTComm.Handle<>0 then
      begin
        cmFTComm.StopComm;
      end;
      if cmFTComm.Handle=0 then
      begin
        cmFTComm.CommName:='\\.\'+Trim(cbb_Com.Text);
        try
          cmFTComm.StartComm;
      

  8.   

    nrcomm SPcomm MScomm我都用过 觉得串口通讯控件都不很好使!
      

  9.   

    nrcomm SPcomm MScomm我都用过 觉得串口通讯控件都不很好使!
    没错,好痛苦的过程。
      

  10.   

    那是一个握手的控件属性,你只是stopcomm和控件自身的属性没有关系。他是对每次通讯都做检测。
    另外我觉得你说的问题应该是B程序上有问题。估计是找不到起始符或结束符造成B出错。
      

  11.   

    outx_xonxoffflow 和 inx_xonxoffflow 
     他们为true时, 将#13 和 #11 作为了控制字符
      

  12.   

    一般来说流控制主要是用于解决快速设备和慢速设备之间的通讯同步问题的, 
    spcomm这个属性是 
    Inx_XonXoffFlow 
    Outx_XonXoffFlow 
    Outx_CtsFlow 
    Outx_Dsrflow 
    前两个属性是软件流控制,后两个属性是硬件流控制。 
    硬件流控制主要是5线制通讯时用 2,3,4,5,7针 
    软件流控制主要是3线制通讯 2,3,5针。 
    但很多设备在一般情况下是把流控制设成none 
      

  13.   

    推荐可以用一下TurboPower公司的ApdComPort,我感觉 这个控件还是可以的。
    MSComm用得不是很爽
      

  14.   

    串口API编程的方法或者代码,谁能给我?
    代码无论长短,一定要思路清晰,先做什么后做什么,先后的依赖关系一定要清楚
    让我可以照着写出通信程序,且理解这个过程的
    网上找了很多,不合用
    实在是想结贴了……