各位大侠,我初学delphi,用spcomm控件有些疑问,还望大侠指点。
网上下载了最新的SPCOMM控件源码,就是修正了COM10以上串口不能用的那个源码,install component时,有如下提示
  1) 一些函数SetupReadEvent(),HandleReadEvent()提示PChar类型和PAnsiChar类型不匹配,我于是把这些函数的PChar()类型映射改成了了PAnsiChar()
  2)重新编译后,可以成功安装SPComm控件,但是还有两个警告:symbol 'Resume' is deprecated。意思是说Resume函数已经弃用了,建议我用新的线程调度函数。网上查了一下,有的说直接改成Start,有的说改成Mutex来同步。
   我现在有如下疑问:
1)这个Resume警告不管的话,是否有潜在问题?
2)我修改的PChar()改成PAnsiChar()是否正确?如果哪位大侠有修改过的经过验证的适用XE2的SPCOMM代码,如果不吝提供一下的话,我也感激不尽,多谢多谢。

解决方案 »

  1.   

    楼主,若必须用SPComm,还是delphi老一点的版本吧。
    现成的资料一大堆,控件也可直接用。
    D2006应该就可以了。实在不行用D7,其实这两个版本用的人还是相当多的。
      

  2.   

    Lz可以看看你下载的地方是否有说支持哪几个版本呢?
    如果说支持XE2的话,那应该也不会出现安装时就有类型有误的提示吧
    现在用XE2的人还不多,建议楼主自己用spcomm做几个简单的例子,如果可以正常使用的话不就OK了
      

  3.   

    其他略去, 重要的一点就是: 不用流控就设置成false.
    之前有个项目搞死我了.  它默认是true的.
      

  4.   

    现在的问题就是因为网上下载的代码大多没有平台描述。
    我用spcomm测试了一下,有如下问题:
    1)发送的时候是按WideChar发送的,也就是如果我传递给WriteCOMData()的数据时0x01,0x02,0x03的话,它发出去的是0x01,0x00,0x02,0x00,0x03,0x00。也就是按照WideChar的方式来发送的。这是有问题的。
    2)基本发送/接受逻辑看起来是正确的。另外老实说,做了这么多年技术,我是比较排斥靠尝试来判断东西是否好用的,因为那样风险太不可控。理想的方式是我自己review一下代码,来判断代码是否完善,可惜我从学delphi语法到现在大概还不到10天,所以才想找一些经过大家实践检验的的稳定的代码来做。看来只能靠自己从review SPCOMM的代码入手了。
      

  5.   

    是这样的,我特别注意了SPCOMM的默认值,流控是打开的,所以我小心的关闭了他。基本发送/接收看起来是没问题的。现在的2个问题,一个是SPCOMM控件放在MainFrame中,subFrame无法共享的问题,一个是SPCOMM在XE2下发送按WideChar来发送的问题。至于是否会丢数,是否稳定,我就拿不准了。