我现在需要串口通信的资料,
情况:
一个带有串口的万用表,连接到计算机。
我使用什么办法可以检测他传递的数据。
万用表型号 : ut70d

解决方案 »

  1.   

    串口通讯可以用MSCOMM这个OCX来实现,windows自带。关键你要找出万用表的数据通讯格式,否则一切免谈
      

  2.   

    SPcomm我已经下载了,就是没有她的资料不知道怎么用,有谁可以给我关于SPcomm的资料 吗?
      

  3.   

    SPCOMM的属性、方法和事件 
     
    1.属性 
     
    ●CommName:表示 COM1、 COM2等串口的名字; 
     
    ●BaudRate:根据实际需要设定的波特率,在串口打开后也可更改此值,实际波特率随之更改; 
     
    ●ParityCheck:表示是否需要奇偶校验; 
     
    ●ByteSize:根据实际情况设定的字节长度; 
     
    ●Parity:奇偶校验位; 
     
    ●StopBits:停止位; 
     
    ●SendDataEmpty:这是一个布尔型属性,为 true时表示发送缓存为空,或者发送队列里没有信息;为 false时表示发送缓存不为空,或者发送队列里有信息。 
     
    2.方法 
     
    ●Startcomm方法用于打开串口,当打开失败时通常会报错。错误主要有 7种:⑴串口已经打开;⑵打开串口错误;⑶文件句柄不是通信句柄;⑷不能够安装通信缓存;⑸不能产生事件;⑹不能产生读进程;⑺不能产生写进程; 
     
    ●StopComm方法用于关闭串口,没有返回值; 
     
    ●WriteCommData(pDataToWrite: PChar;dwSizeofDataToWrite:Word )方法是个带有布尔型返回值的函数,用于将一个字符串发送到写进程,发送成功返回 true,发送失败返回 false。执行此函数将立即得到返回值,发送操作随后执行。该函数有两个参数,其中 pDataToWrite是要发送的字符串, dwSizeofDataToWrite是发送字符串的长度。 
     
    3.事件 
     
    ●OnReceiveData :procedure (Sender: TObject;Buffer: Pointer;BufferLength: Word) of object 
     
    当有数据输入缓存时将触发该事件,在这里可以对从串口收到的数据进行处理。 Buffer中是收到的数据, BufferLength是收到的数据长度。 
     
    ●OnReceiveError : procedure(Sender: TObject; EventMask : DWORD) 
     
    当接收数据出现错误时将触发 
    //---------------------------------------------------------------来自:http://www.gjwtech.com
      

  4.   

    你的万用表带串口?真高档。我都是自己做一根线,用我的COM1和COM2来通信。
      

  5.   

    http://218.56.9.158/default.aspx
    主页上就有!
      

  6.   

    我不知道那个万用表的数据格式,有什么办法知道他的格式吗?
    ut70d的万用表.希望各位支持.我需要万用表测量的数据.这个万用表自带的软件有我所需要的功能.怎么能把这些功能加入到我自己的程序中.因为我要定时执行他的任务.
      

  7.   

    我现在有他的通讯协议,能不能给一个具体的例子。重谢。例如:读入目前显示值的软体键   byte/cmd  100-01001b,hex/pc cmd 89 case/uP 9
    那么我怎么做,才可以接受到信号,并且处理.我在一个按钮中写 发送命令如下:a := '10001001';
    Comm1.StartComm;
    comm1.WriteCommData(a,length(a));
    这样写错误在那里。
    我怎么发送了命令之后,接受不到数据啊。最好可以给出一个具体的小例子。谁先给出,分全给他。
      

  8.   

    使用portmon.
    后台串口监测,满意了吧!
      

  9.   

    参考一下吧。
    关于delphi中串口通讯控件的选择
    mscomm:微软的东西,ActivX控件,使用简单,在VB中带的,性能一般,由于是ActivX控件,打包时需要注册好多信息,不推荐使用。
    spcomm:比较好的vcl,算是比较专业的,解剖了一下,功能比较完善。
    TurboPower:公认的专业通讯控件。可以到其站点下载,开放源码了。
    我在制作串口通讯软件时三种都用过,最终全部使用TurboPower!所以也推荐大家使用它。
    写了个例子,基本的串口通讯都可以实现,可提供参考。
    下载地址:http://www.kaer.cn/default.aspx(网站安全性较差,经常当机,如果急用,mail我)
    多多指正:[email protected]
      

  10.   

    我用SPCOMM写过一个通信程序,我发给你好了!
      

  11.   

    怎么说呢?你可以用个多线程的,用WINAPI来实现,无非是ReadFile,WriteFile
      

  12.   

    说白了,就是我发一个信号给万用表,然后读出万用表显示的数据,万用表自己带;一个RC232的口,我可以连接到COM1上,我现在需要控制这个万用表,并且是很容易的控制,我只需要读出数据就可以了.急1
      

  13.   

    我找到的一些资料,不知道是否又用,给各位大侠过目.读取FS970x及输出计算值及软体键 作用 Bytel/Cmd Hex/PC Cmd case/uP
    读取FS970x Sum1——直接读值 100-00000b 80 0
    读取FS970x Sum2——直接读值 100-00010b 82 2
    读取FS970x 正Peak——直接读值 100-00100b 84 4
    读取FS970x 负Peak——直接读值 100-00110b 86 6
    读取FS970x Ktb及Ksg 100-01000b 88 8
    读取目前显示值 100-01001b 89 9
    读取Bar Graph值 100-01010b 8a 10
    读取Dual显示值 100-01011b 8b 11
    Range Key按一秒 101-0000-0b A0 23
    Range Key按一次 101-0000-1b A1 23uP->PC传回资料格式 作用 1 2~5 6~ ck* 0ah
    传回FS970x Sum1——直接读值 100-00000b st1~st4 [格式一] Byte 10 Byte 11
    传回FS970x Sum2——直接读值 100-00010b st1~st4 [格式一] Byte 10 Byte 11
    传回FS970x 正Peak——直接读值 100-00100b st1~st4 [格式一] Byte 10 Byte 11
    传回FS970x 负Peak——直接读值 100-00110b st1~st4 [格式一] Byte 10 Byte 11
    传回FS970x Ktb及Ksg 100-01000b st1~st4 [格式二] Byte 14 Byte 15
    传回目前显示值 100-01001b st1~st4 [格式三] Byte 11 Byte 12
    传回Bar Graph值 100-01010b st1~st4 [格式四] Byte 7 Byte 8
    传回Dual显示值 100-01011b st1~st4 [格式三] Byte 11 Byte 12注1:st1~st4的设定值如下:
    bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
    st1 1 st(RFS) st(RFS) st(RFS) st(RFS) st(Sel) st(Sel) st(Sel)
    st2 1 st(Rng) st(Rng) st(Rng) st(Rng) st(Hz) st(Hz) st(Hz)
    st3 1 st(Rec) st(Rec) st(Rec) st(Rec) st(Rel) st(Rel) st(Rel)
    st4 1 fgAuto fgLb fgSn fgOL fgHV st(AH) st(AH)          stRng=Dis1_Val_R in uP
    for Dual: stRng=Dis2_Val_R in uP
    1) fgOL: 1=OL,0=not OL
    2) fgSn: 1=负数,0=正数
    3) fgLb: 1=Low Battery
    4) fgAuto: 1=Menu Range,0=AutoRange
    5) fgHV: 1=Hi Voltage,0=Normal注2:传回资料格式说明格式一:(此表格要从上到下直看)
    Byte6 1,0,b23,b22,b21,b20,b19,b18
    Byte7 1,0,b17,b16,b15,b14,b13,b12
    Byte8 1,0,b11,b10,b9,b8,b7,b6
    Byte9 1,0,b5,b4,b3,b2,b1,b0格式二:(此表格要从上到下直看)
    Ktb Byte6 1,0,b23,b22,b21,b20,b19,b18
    Ktb Byte7 1,0,b17,b16,b15,b14,b13,b12
    Ktb Byte8 1,0,b11,b10,b9,b8,b7,b6
    Ktb Byte9 1,0,b5,b4,b3,b2,b1,b0
    Ksg Byte10 1,0,b23,b22,b21,b20,b19,b18
    Ksg Byte11 1,0,b17,b16,b15,b14,b13,b12
    Ksg Byte12 1,0,b11,b10,b9,b8,b7,b6
    Ksg Byte13 1,0,b5,b4,b3,b2,b1,b0格式三:
    6 7 8 9 10
    计算值 ASCII字串的数字
    时间 ASCII字串的数字 'S'/'M'
    Duty ASCII字串的数字 '0'
    *计算值:无小数点、正负号、最高为固定放在Byte6,其后不足位数补0
    *时间:ex:12分37秒->'1','2','3','7','S'
               1小时48分->'0','1','4','8','M'
    *Duty:62.52%->'6','2','5','2','0'格式四:
             6
    100-b4,b3,b2,b1,b0
      

  14.   

    我现在有一个万用表,万用表自己带了一个rs-232c接口,可以和计算机连接,万用表带自带一个小软件,可以时时反映完用表的数据.
    我现在的要求事这样的,通过那个rs-232c接口,自己写程序控制,例如定时检测等功能,当然,最重要的功能事我要可以自己写程序读出万用表现在测量的数据.
    我现在用SPCOMM,可是我以下的代码根本得不到返回值.不知道为什么,是程序错了,还是思路错误.程序:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    s : pchar;
    begin
       s := '10001001';
       Comm1.WriteCommData(s,8);
    end;procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
      BufferLength: Word);
    var
        s:   string;
    begin
        SetLength(S, BufferLength); //接收RS232的数据并显示Memo1上。
        Move(Buffer^, PChar(S)^, BufferLength);
        Memo1.Lines.Add(S);
        Memo1.Invalidate;end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
       Comm1.StopComm;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    Comm1.StartComm;
    end;