搜索
bottom↓
回复: 13

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

[复制链接]

出0入0汤圆

发表于 2010-8-25 14:46:04 | 显示全部楼层 |阅读模式
我想用cport控件通过在edit1.Text上写数字发送到单片机里,就用comport1.Writestr(edit1.Text);

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

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

comport1.Writestr()返回的是string

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2010-8-25 14:47:09 | 显示全部楼层
麻烦各位帮忙解决一下。。。

出0入0汤圆

发表于 2010-8-25 17:45:52 | 显示全部楼层
delphi不懂。

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

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

出0入0汤圆

 楼主| 发表于 2010-8-27 09:07:45 | 显示全部楼层
大虾们,都潜水???
麻烦大家指点一下。。

出0入0汤圆

发表于 2010-8-27 09:25:17 | 显示全部楼层
edit1.Text是字符,用StrToInt()

出0入0汤圆

 楼主| 发表于 2010-8-27 13:17:56 | 显示全部楼层
回复【4楼】ibq3100
-----------------------------------------------------------------------

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

出0入0汤圆

 楼主| 发表于 2010-8-28 00:15:43 | 显示全部楼层
麻烦各位帮忙解决一下。。。

出0入0汤圆

发表于 2010-8-28 07:13:07 | 显示全部楼层
1的ASEII=49,不知道你输入1想输出何值,也就是输入输入关系,如果1 单片机接收1,9接收9,你用STRTOINT(EDIT1.TXT)-48

出0入0汤圆

 楼主| 发表于 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

出0入0汤圆

发表于 2010-8-28 17:40:37 | 显示全部楼层
那我不知道了,我用的是WINIO,不了解CPORT数据调用结构

出0入70汤圆

发表于 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[1]), 2)
    Else Result := Result + ' ' + IntToHex(Ord(S[I]), 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[t] In ['0'..'9', 'A'..'F', 'a'..'f'])) Do
      Inc(t);
    If (t + 1 > Length(S)) Or (Not (S[t + 1] In ['0'..'9', 'A'..'F', 'a'..'f'])) Then
      ts := '$' + S[t]
    Else
      ts := '$' + S[t] + S[t + 1];
    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

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

出0入0汤圆

 楼主| 发表于 2010-8-28 23:08:35 | 显示全部楼层
回复【10楼】SkyGz
-----------------------------------------------------------------------

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

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

出0入70汤圆

发表于 2010-8-29 02:06:31 | 显示全部楼层
没用过

出0入0汤圆

发表于 2010-8-29 09:25:41 | 显示全部楼层
必须用二进制发送
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-3 07:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表