本人没有受过计算机系统教育,又天生愚笨,现请教spcomm发送问题。奸笑了。 (300分)

  • 主题发起人 主题发起人 zhaohai9
  • 开始时间 开始时间
Z

zhaohai9

Unregistered / Unconfirmed
GUEST, unregistred user!
spcomm串口通讯:
soh:=$1;
stx:=$2;
etx:=$3;
strTemp := SOH + '001' + '100' + STX + edit1.Text + ETX;
comm1.writecommdata(pchar(strtemp),length(strtemp));
此段程序发送的是pchar字符串,但我的仪表要接受的是ASCII码,我该如何发送?
edit1.text是个不定长的字符串如(W820=20.3或X086或X077或X023“ESC”ACDEFDFDFFFFF等等)
以上为例,如何改写发送?
 
pchar就是0~255的ascii,不知道你说的什么
 
是啊,难道ASCII就不能用编码表示?
例如'0'是48, '1'是49
???????????
 
别人VB做的测试程序
我查到他发送的是1 30 30 30 31 30 30 2 57 30 38 36 3 31 54
 
chenlili:
是不是这样:
strtemp1:='';
for i:=1 to length(edit1.text) do
strtemp1:=strtemp1+inttoHEX(ord(strtemp),2);
strTemp := SOH + '303031313030'+ STX + strtemp1+ ETX;
 
strTemp := #1#30#30#30#31#30#30#2#57#30#38#36#3#31#54;
comm1.writecommdata(pchar(strtemp),length(strtemp));
 
注意:我的strtemp1是个变化的字符串,你这样发我知道。
 
byte(str[1])
 
如何修改上面的程序??请写出代码。
 
???????????????????????
 
var i : integer;
strTemp := #1#30#30#30#31#30#30#2#57#30#38#36#3#31#54;
strTemp[3] := #21;
i := 30;
StrTemp[4] := chr(i);[blue]//想怎么改都行[/blue]
comm1.writecommdata(pchar(strtemp),length(strtemp));
 
接受答案了.
 
后退
顶部