CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

串口通讯问题,为何DELPHI中的串口通讯不能输出128及以上Ascii码?谢谢!!!!!!

楼主wwbjt(Owen[欧文])2002-01-29 11:04:31 在 Delphi / VCL组件开发及应用 提问

我用Mscomm和SPComm两个控件均做了通讯程序,  
  可是就是不能输出128以上的Ascii码,  
  用了二进制数组输出值还是不行,希望得到大家的帮助,谢谢! 问题点数:10、回复次数:6Top

1 楼dy2712(大头)回复于 2002-01-29 11:09:15 得分 0

可以用WINDOWS   API来做,WriteFile和ReadFileTop

2 楼wwbjt(Owen[欧文])回复于 2002-01-29 11:15:17 得分 0

SPComm里用的就是API函数Top

3 楼dy2712(大头)回复于 2002-01-29 11:23:53 得分 10

我做过好多串口设备的通讯,都是这么做的,没问题啊,空间我没用过,不知道怎么样。  
   
  Function   OpenCommPort(const   CommStr:array   of   char):   integer;  
  var  
      sDcb:TDCB;  
      cComBuf:array[0..10]of   char;  
  begin  
      lstrcpy(cCombuf,CommStr);  
      gComID   :=   CreateFile(cCombuf,  
                                  GENERIC_READ   or   GENERIC_WRITE,  
                                  0,         //   comm   devices   must   be   opened   w/exclusive-access  
                                  nil,   //   no   security   attrs  
                                  OPEN_EXISTING,   //   comm   devices   must   use   OPEN_EXISTING  
                                  0,         //   not   overlapped   I/O  
                                  0);     //   hTemplate   must   be   NULL   for   comm   devices  
   
      if   gComID   <   0   then   begin  
          Result   :=   ERROR_ICURS232OPEN;  
          exit;  
      end;  
   
      SetupComm(gComID,1024,1024);  
   
      GetCommState(gComID,sDcb);  
   
      sDcb.BaudRate   :=   CBR_9600;  
      sDcb.ByteSize   :=   7;  
      sDcb.parity   :=   EVENPARITY;  
      sDcb.stopbits   :=   ONESTOPBIT;  
      SetCommState(gComID,sDcb);  
   
      SetRWTimeOut(COMM_CHARTO,   COMM_MUTITO,   COMM_CONSTTO_DEFAULT);  
      Result   :=   gComID;  
   
  end;  
   
  procedure   CloseCommPort;  
  begin  
      CloseHandle(gComId);  
  end;  
   
   
   
  Function   Send232Data(const   SendStr:array   of   char;const   SendLen:integer):integer;  
  var  
      iSendNums:   Cardinal;  
  begin  
   
      PurgeComm(gComID,   PURGE_TXCLEAR   or   PURGE_RXCLEAR);  
   
      if   not   WriteFile(gComId,SendStr,SendLen,iSendNums,nil)   then   begin  
          Result   :=   ERROR_ICURS232WRITE;  
          exit;  
      end;  
      if   (int(iSendNums)   <>   SendLen)   then   begin  
            Result   :=   ERROR_ICURS232WRITEBADDATA;  
            exit;  
      end;  
      Result   :=   iSendNums;  
  end;  
  Top

4 楼wwbjt(Owen[欧文])回复于 2002-01-29 11:40:23 得分 0

能介绍一下接收过程的处理吗?  
  也就是怎么通知程序有数据需要接收,谢谢Top

5 楼youou(红麦子&猪格格)回复于 2002-01-29 12:04:57 得分 0

这两个控件我都用过了,不会有这种问题发生的!Top

6 楼wwbjt(Owen[欧文])回复于 2002-01-31 08:32:57 得分 0

现在我才发现是MODEN在处理128以上字节出了问题,给分!Top

相关问题

  • 串口通讯?[Delphi]
  • Delphi串口通讯(RS-232)的问题
  • 急需串口通讯开发包,C++、Delphi均可以
  • 用delphi开发串口通讯程序,使用spcomm组件
  • 串口通讯
  • 串口通讯!!!
  • 串口通讯
  • 串口通讯
  • 如何用DELPHI的API函数编写串口通讯软件(需多线程)?
  • 谁用 MSCOMM 和 Delphi 开发过串口通讯程序------在线等待!!!!

关键词

  • ccombuf
  • comm devices
  • open

得分解答快速导航

  • 帖主:wwbjt
  • dy2712

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo