0520kuang 发表于 2010-8-25 14:46:04

??cport控件通过在edit1.Text上写数字发送到单片机的问题??

我想用cport控件通过在edit1.Text上写数字发送到单片机里,就用comport1.Writestr(edit1.Text);

可后来发现在edit1.Text:=1 的话,单片机接收的数字是:49,我要的是在edit1.Text写数字,单片机就接收同样的数字,不知道有什么的办法??

请各位路过的朋友帮帮忙。。。小弟无限感激。。。。

comport1.Writestr()返回的是string

0520kuang 发表于 2010-8-25 14:47:09

麻烦各位帮忙解决一下。。。

STM8L103 发表于 2010-8-25 17:45:52

delphi不懂。

C++builder上先把字符串转换成数子,再发送。

注意发送的时候发HEX码,还是ASCII码,根据实际情况选择。

0520kuang 发表于 2010-8-27 09:07:45

大虾们,都潜水???
麻烦大家指点一下。。

ibq3100 发表于 2010-8-27 09:25:17

edit1.Text是字符,用StrToInt()

0520kuang 发表于 2010-8-27 13:17:56

回复【4楼】ibq3100
-----------------------------------------------------------------------

这不行的,因为comport1.Writestr()返回的是string 。。。

0520kuang 发表于 2010-8-28 00:15:43

麻烦各位帮忙解决一下。。。

NJ8888 发表于 2010-8-28 07:13:07

1的ASEII=49,不知道你输入1想输出何值,也就是输入输入关系,如果1 单片机接收1,9接收9,你用STRTOINT(EDIT1.TXT)-48

0520kuang 发表于 2010-8-28 17:34:29

回复【7楼】888888888888
-----------------------------------------------------------------------
你好。。我的输入输出关系是,如果发送1 单片机接收1,发送9接收9 ,

comport1.Writestr(S:string) 返回的是string。。。

comport1.Writestr()输入的为string才行。。

STRTOINT(EDIT1.TXT)-48这得到是integer

NJ8888 发表于 2010-8-28 17:40:37

那我不知道了,我用的是WINIO,不了解CPORT数据调用结构

SkyGz 发表于 2010-8-28 18:48:03

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

很头晕,,,不玩了. 不明要求.自已都糊涂了...

0520kuang 发表于 2010-8-28 23:08:35

回复【10楼】SkyGz
-----------------------------------------------------------------------

多谢这位兄弟的指教。。。我想问问你有没有用过图形控件显示波形。。。如果用的话,你用什么图形控件。。

本人刚接触delphi不久,还有很多东西不明白。。。希望以后能互相交流下一。。。

SkyGz 发表于 2010-8-29 02:06:31

没用过

xbwpc 发表于 2010-8-29 09:25:41

必须用二进制发送
页: [1]
查看完整版本: ??cport控件通过在edit1.Text上写数字发送到单片机的问题??