??cport控件通过在edit1.Text上写数字发送到单片机的问题??
我想用cport控件通过在edit1.Text上写数字发送到单片机里,就用comport1.Writestr(edit1.Text);可后来发现在edit1.Text:=1 的话,单片机接收的数字是:49,我要的是在edit1.Text写数字,单片机就接收同样的数字,不知道有什么的办法??
请各位路过的朋友帮帮忙。。。小弟无限感激。。。。
comport1.Writestr()返回的是string 麻烦各位帮忙解决一下。。。 delphi不懂。
C++builder上先把字符串转换成数子,再发送。
注意发送的时候发HEX码,还是ASCII码,根据实际情况选择。 大虾们,都潜水???
麻烦大家指点一下。。 edit1.Text是字符,用StrToInt() 回复【4楼】ibq3100
-----------------------------------------------------------------------
这不行的,因为comport1.Writestr()返回的是string 。。。 麻烦各位帮忙解决一下。。。 1的ASEII=49,不知道你输入1想输出何值,也就是输入输入关系,如果1 单片机接收1,9接收9,你用STRTOINT(EDIT1.TXT)-48 回复【7楼】888888888888
-----------------------------------------------------------------------
你好。。我的输入输出关系是,如果发送1 单片机接收1,发送9接收9 ,
comport1.Writestr(S:string) 返回的是string。。。
comport1.Writestr()输入的为string才行。。
STRTOINT(EDIT1.TXT)-48这得到是integer 那我不知道了,我用的是WINIO,不了解CPORT数据调用结构 Function StrToHexStr(Const S: String): String;
//字符串转换成16进制字符串
Var
I: Integer;
Begin
For I := 1 To Length(S) Do
Begin
If I = 1 Then
Result := IntToHex(Ord(S), 2)
Else Result := Result + ' ' + IntToHex(Ord(S), 2);
End;
End;
Function HexStrToStr(Const S: String): String;
//16进制字符串转换成字符串
Var
t: Integer;
ts: String;
M, Code: Integer;
Begin
t := 1;
Result := '';
While t <= Length(S) Do
Begin
While (t <= Length(S)) And (Not (S In ['0'..'9', 'A'..'F', 'a'..'f'])) Do
Inc(t);
If (t + 1 > Length(S)) Or (Not (S In ['0'..'9', 'A'..'F', 'a'..'f'])) Then
ts := '$' + S
Else
ts := '$' + S + S;
Val(ts, M, Code);
If Code = 0 Then
Result := Result + Chr(M);
Inc(t, 2);
End;
End;
发送HEX格式的字串,随手搞的, 不知对不对.
edit1.text:='1234'; //把文本字符当做HEX来发送, 收到的也就是1234了.
cport1.WriteStr(HexStrToStr(edit1.text));
//////////////////
var i:Integer; s:string;
begin
s:='12';
i:=StrToInt(s);
comport1.Write(I, SizeOf(byte));
end;
单片机里例如是
uchar ch;
那么ch收到的内容就是0x0C
很头晕,,,不玩了. 不明要求.自已都糊涂了... 回复【10楼】SkyGz
-----------------------------------------------------------------------
多谢这位兄弟的指教。。。我想问问你有没有用过图形控件显示波形。。。如果用的话,你用什么图形控件。。
本人刚接触delphi不久,还有很多东西不明白。。。希望以后能互相交流下一。。。 没用过 必须用二进制发送
页:
[1]