我现在有一个万用表,万用表自己带了一个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;下面的是我找的一些资料,希望各位大侠给点意见,给点指导;读取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