DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: palmcivetcn1
今日帖子: 18
在线用户: 6
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 zzacomp (zzacomp) ★☆☆☆☆ -
普通会员
2004/2/16 14:07:42
标题:
串口编程求助 浏览:1182
加入我的收藏
楼主: 我用SPComm编了个串口通讯程序,可在MEMO控件里显示出来的是乱码,我是按网上的例子做的:
procedure TForm1.Comm2ReceiveData(Sender: TObject; Buffer: Pointer;
  BufferLength: Word);
   var StrReceive:string;
 
begin
        SetLength(StrReceive,BufferLength);
        Move(Buffer^,Pchar(StrReceive)^,BufferLength);
        memo1.Lines.Add(StrReceive);
end;
请问是什么原因导致乱码出现?该如何解决呢?谢谢!


----------------------------------------------
-
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/2/16 14:17:52
1楼: var
    p:pchar;
    //RevP : array [1..4096] of byte;
    i : integer;
    s : byte;
    CommRevStr : String;
begin
     p:=buffer;
     //Move(IArr(buffer)^,Revp,bufferLength);
    CommrevStr:=';
   For i:=1 to BufferLength do
    begin
     s:=ord(p^);
     CommrevStr:=CommrevStr+inttostr(s)+' ';
     inc(p);
    end;
  Memo2.Lines.Add(CommrevStr);
  StatusBar1.Panels[2].Text := '串口2正在接收数据';
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 bjdribllec ( ) ★☆☆☆☆ -
盒子活跃会员
2004/2/16 14:20:46
1楼: Memo显示的只是文本,那么如果您从COMM里接收到Ascii值在[#0..#31,#128..#160]在显示时一定是读不懂的东西。
如果您能确定接收到的是纯文本,那样定代码没问题!
如若不是,就需要变换一个(如 #23 => 17H )格式;不然也成,只要...(你知我不知)
----------------------------------------------
-
作者:
男 zzacomp (zzacomp) ★☆☆☆☆ -
普通会员
2004/2/17 9:06:56
2楼: 我用bios贴出的那段程序,发现如果单片机发送的数据值小于0x80,则显示的数据
会在原值得基础上加0x80,即如果单片及发送0x1f,在memo里显示为159(即0x9f),
如果单片机发送的数据在0x80-0xff之间,则显示正常,请问这其中的原因是什么?
如何解决呢?









----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行70.3125毫秒 RSS