将8031实时采集到的数据发送到上位机,是16位的双字节数,由于有3个采样通道,所以8031每一次送到上位机的数据有3个。单片程序已经写好了,没有问题。现在准备使用SPCOMM控件来实现串行通讯。功能是:
   对收到的数据进行转换,成为浮点数;
   将处理后的数据存储到实时的数据库中;
请问:对SPCOMM要怎么操作实现数据的接受?
   那位高手可以点拨一下,最好有比较详细的代码,谢谢!

解决方案 »

  1.   

    我用的是comportlib,我想SPCOMM也一样有相关的函数我这里读串口的函数是:
      Read
      ReadAsync
      ReadStr
      ReadStrAsync
    写串口的是:
      Write
      WriteAsync
      WriteStr
      WriteStrAsync
      

  2.   

    我以前毕业设计做过这样的程序,
    但是发送数据时使用的定时器;
    接收时,在空件的一个事件了写接收处里(好像时onrecive...)
    对不起,毕业很长时间了都网光了;
    注意:波特率太高会丢失数据;
    我测试过的;
      

  3.   

    lchy20cn(小猫Pisceslc) :
    SPCOMM里面主要就是writecomdata,onreceievedata这两个。我也看过不少文章,可写的时候就是有点搞不清。sunssc(大虾) :
    我8031的波特率是4800,太高了是容易出问题的。关键是上位机接受到的是字节(16位),怎么接受和转换为浮点数啊?
    有没有详细的代码啊?
      

  4.   

    你把发送的数据个给我传送一份,我帮你做个接收和控制的程序,我用的是PComm
      

  5.   

    feifa(孤程) :
    比如每次送3个数(每个都是双字节的):I0,I1,I2;
    时刻1为I0=0001001100000010,I1=1011001101010010,I2=0000001000101110
    希望上位机用SPCOMM收到这3个双字节数,SPCOMM的事件应该怎么写?
    结果显示的应该是3个浮点数/
      

  6.   

    port : LongInt;//串口定义port :=  2;
    ret := sio_open ( port );
    if ret <> SIO_OK then
    begin
    { Open fail }
    end;
    //以上为串口打开
    ret := sio_DTR ( port, 1 );
    if ret <> SIO_OK then
    begin
    { Fail }
    end;
    ret := sio_RTS ( port, 1 );
    if ret <> SIO_OK then
    begin
    { Fail }
    end;//设置DTR,RTS{
    baud = (bits/sec)0 = 50 6 = 600 12 = 9600 18 = 460800
    1 = 75 7 = 1200 13 = 19200 19 = 9216002 = 110 8 = 1800 14 = 38400
    3 = 134.5 9 = 2400 15 = 57600
    4 = 150 10 = 4800 16 = 115200
    5 = 300 11 = 7200 17 = 230400}
    //波特率的数值
    ret := sio_ioctl ( 2, B38400, P_NONE or BIT_8 or STOP_1 );
    //B38400的数值为14
    if ret <> SIO_OK then
    begin
    { Setting fail }
    end;//以下为接收部分
    ch : Longint;ch := sio_getch( port );
    if ch < 0 then
    begin
    { Fail }
    end
    else
    begin
       //处理接受到的字节(一个字节)
    end;
    //以上过程点到为止,需要你到 www.moxa.com.tw网站下载PcommLite,安装后又delphi编程说明,需要在主文件 Use Pcomm;Pcomm是调用的Pcomm.dll文件,我用此已经完成了多个串口控制项目,特别稳定,别的方式都有缺陷
      

  7.   

    我放到网站上了一份Pcomm的下载,http://www.rmd.com.cn/downloads/PCCOM.exe
      

  8.   

    你使用的是PCOMM,我到www.moxa.com.tw下栽了,可是这不是个DELPHI的VCL控件啊/
    会不会使我的程序变的复杂那?
    能给点详细的解释吗?
      

  9.   

    spcomm不能在Win2k下运行,最好不要用,
    就用ComPortLib吧,很好用,还有例子,一看就会用了,
    你的那些功能,用它很好实现了,
    只要用writestr,发送到缓存上,
    然后在它的OnRxChar接收就可以了
      

  10.   

    同意freex07(自由猫)建议,我用的也是Writestr,和write这两个函数来发送数据但这个控件也有个漏洞,就是ONCHAR函数,在数据交换较频繁情况下有不响应情况
      

  11.   

    谢谢楼上的二位的建议,我现在不用SPCOMM了,采用一个叫PCOMM的VCL,也很好用。:)看来SPCOMM还有许多要改进的地方!
      

  12.   

    开玩笑!我的SPCOMM为什么在win2k下用的很好啊?
      

  13.   

    >>spcomm不能在Win2k下运行,最好不要用,
    >>就用ComPortLib吧,很好用,还有例子,一看就会用了,
    >>你的那些功能,用它很好实现了,
    >>只要用writestr,发送到缓存上,
    >>然后在它的OnRxChar接收就可以了
    这是谁说的,你在两千下用过吗