程序原码如下:
var
CLOCK: array[0..11] of variant;//=($7B,$09,$00,$01,$43,$4C,$4F,$43,$4B,$2A,$A0,$7D];
CMENU: array[0..11] of olevariant;//= ($7B,$09.$00.$01.$43.$4D.$45.$4E.$55.$2A.$AC.$7D);
CRST: array[0..11] of variant;//=(7B,08,00,01,43,52,53,54,2A,6F,7D);
CSTOP: array[0..12] of variant;//=(7B,09,00,01,43,53,54,4F,50,2A,BD,7D);
CTENTER: array[0..13] of variant;//=(7B,0B,00,01,43,54,45,4E,54,45,52,2A,4B,7D);
CTEST: array[0..12] of variant;//=(7B,09,00,01,43,54,45,53,54,2A,B7,7D);
CUNLOCK: array[0..14] of variant;//=(7B,0B,00,01,43,55,4E,4C,4F,43,4B,2A,45,7D);
I:integer;
begin
clock[0] :=$7B;
clock[1] :=$09;
clock[2] :=$00;
clock[3] :=$01;
clock[4] :=$43;
clock[5] :=$4C;
clock[6] :=$4F;
clock[7] :=$43;
clock[8] :=$4B;
clock[9] :=$2A;
clock[10] :=$A0;
clock[11] :=$7D;
Mscomm1.Settings:='9600,n,8,1';
Mscomm1.CommPort:=1;
mscomm1.PortOpen:=true;
for i:=0 to 11 do
mscomm1.Output:=clock[i];
end;
请高手指点下呀,不知道错在什么地方?总说未知端口。但我用随便的'dffddd'什么换掉clock[i]都正常。
我要用MSCOMM控件向rs232输出7B 09 00 01 43 4C 4F 43 4B 2A A0 7D。请高手指点写用代码,谢谢

解决方案 »

  1.   

    var
    CLOCK: array[0..11] of olevariant;
    I:integer;
    begin
    clock[0] :=byte($7B);
    clock[1] :=byte($09);
    clock[2] :=byte($00);
    clock[3] :=byte($01);
    clock[4] :=byte($43);
    clock[5] :=byte($4C);
    clock[6] :=byte($4F);
    clock[7] :=byte($43);
    clock[8] :=byte($4B);
    clock[9] :=byte($2A);
    clock[10] :=byte($A0);
    clock[11] :=byte($7D);
    Mscomm1.Settings:='9600,n,8,1';
    Mscomm1.CommPort:=1;
    mscomm1.PortOpen:=true;
    for i:=0 to 11 do
    mscomm1.Output:=clock[i];
    end;
    不知道为什么总提示无效有端口?如果mscomm1.Output:=clock[i];换成mscomm1.Output:=‘gfhgf';没有错?
      

  2.   

    你是否设置了inputmode参考
    http://topic.csdn.net/t/20030605/17/1880509.html
    http://zhidao.baidu.com/question/69690172.html
      

  3.   

    mscomm的发送方式要么是文本,要么是二进制。不支持你这种方式的。
    你可以直接转成char型发送
      

  4.   

    var
    CLOCK: array[0..11] of char;//=($7B,$09,$00,$01,$43,$4C,$4F,$43,$4B,$2A,$A0,$7D];
    CMENU: array[0..11] of olevariant;//= ($7B,$09.$00.$01.$43.$4D.$45.$4E.$55.$2A.$AC.$7D); 
    CRST: array[0..11] of variant;//=(7B,08,00,01,43,52,53,54,2A,6F,7D);
    CSTOP: array[0..12] of variant;//=(7B,09,00,01,43,53,54,4F,50,2A,BD,7D); 
    CTENTER: array[0..13] of variant;//=(7B,0B,00,01,43,54,45,4E,54,45,52,2A,4B,7D);
    CTEST: array[0..12] of variant;//=(7B,09,00,01,43,54,45,53,54,2A,B7,7D);
    CUNLOCK: array[0..14] of variant;//=(7B,0B,00,01,43,55,4E,4C,4F,43,4B,2A,45,7D); 
    I:integer;
    begin
    clock[0] :=#$7B;
    clock[1] :=#$09;
    clock[2] :=#$00;
    clock[3] :=#$01;
    clock[4] :=#$43;
    clock[5] :=#$4C;
    clock[6] :=#$4F;
    clock[7] :=#$43;
    clock[8] :=#$4B;
    clock[9] :=#$2A;
    clock[10] :=#$A0;
    clock[11] :=#$7D;
    Mscomm1.Settings:='9600,n,8,1';
    Mscomm1.CommPort:=1;
    mscomm1.PortOpen:=true;
    for i:=0 to 11 do
    mscomm1.Output:=clock[i];
      

  5.   

    可以考虑用array[0..11] of byte类型发送.
      

  6.   

    一直在使用SPCOMM,没有用过MSCOMM,做同样的东西,顶一下
      

  7.   

    现在结贴了.弄了几天我给出正确的
    var 
    CLOCK: array[0..11] of olevariant; 
    I:integer; 
    sendss:string;
    begin 
    clock[0] :=byte($7B); 
    clock[1] :=byte($09); 
    clock[2] :=byte($00); 
    clock[3] :=byte($01); 
    clock[4] :=byte($43); 
    clock[5] :=byte($4C); 
    clock[6] :=byte($4F); 
    clock[7] :=byte($43); 
    clock[8] :=byte($4B); 
    clock[9] :=byte($2A); 
    clock[10] :=byte($A0); 
    clock[11] :=byte($7D); 
    sendss:='';
    Mscomm1.Settings:='9600,n,8,1'; 
    Mscomm1.CommPort:=1; 
    mscomm1.PortOpen:=true; 
    for i:=0 to 11 do 
    sendss:=sendss+clock[i];
    mscomm1.Output:=sendss; 
    end; 
    就没有问题了