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

串口编程问题

楼主liyitc()2003-12-02 12:34:40 在 C++ Builder / 基础类 提问

从   rs232发送   1200bps     1   位起始位   8位数据位   1   位停止位   无校验位   的数据   ,这些该怎么定义?请各位高手解答! 问题点数:100、回复次数:6Top

1 楼JedyWoody(学,然后知不足)回复于 2003-12-02 12:44:42 得分 0

搜索一下先。以前有很多这方面的帖子。Top

2 楼netsys2(来电!)回复于 2003-12-02 12:49:21 得分 0

用串口控件,如SPCOMM,它可以设置这些参数。  
   
  网上可以找到,如果没有,留言、留妹给我Top

3 楼chifengwatch(chifengwatch)回复于 2003-12-02 13:02:29 得分 100

大致如下:  
  HANDLE   hComm;  
      if   (hComm!=INVALID_HANDLE_VALUE)  
      {  
          CloseHandle(hComm);  
      }  
   
      char   *ComNo;  
      DCB   dcb;  
      ComNo   =   ComPort.c_str();  
      hComm   =   CreateFile(ComNo,GENERIC_READ   |   GENERIC_WRITE,  
                0,   NULL,   OPEN_EXISTING,   0,   0);  
      if   (hComm   !=   INVALID_HANDLE_VALUE)   //   如果COM未打开  
      {  
          //打开通信端口成功  
      }  
      else  
      {  
          //打开通信端口错误  
          return;  
      }  
   
      //   将dcb地址传入,以取得通信参数  
      GetCommState(hComm,&dcb);                                                   //   得知目前COM的状态  
      dcb.BaudRate   =   CBR_9600;                                                     //   设置波特率为9600  
      dcb.ByteSize   =   8;                                                                   //   字节为8   bit  
      dcb.Parity   =   NOPARITY;                                                         //   Parity   为   None  
      dcb.StopBits   =   ONESTOPBIT;                                                 //   1个Stop   bit  
      //   通信端口设置  
      if   (SetCommState(hComm,   &dcb))  
      {               //   设置COM的状态  
          //通信端口设置成功!  
   
          //启动侦听线程  
      }  
      else  
      {  
          //通信端口设置错误  
          CloseHandle(hComm);  
          return;  
      }  
  Top

4 楼chifengwatch(chifengwatch)回复于 2003-12-02 13:05:18 得分 0

//   送出数据  
   
      char   *SendData   =   "AT\r";        
      int     ln   ;  
      unsigned   long   lrc   ,   BS   ;  
   
      if   (   hComm   ==   0   )  
      {  
          return   ;   //   检查Handle值  
      }  
      //取得传送的字符串长度  
      BS   =   StrLen(SendData);  
      //   实际的传送动作  
      WriteFile(hComm,SendData,BS,   &lrc,NULL);   //   送出数据Top

5 楼zzjzln()回复于 2003-12-02 13:08:04 得分 0

HANDLE   hCom;   //串口句柄  
  DCB   dcb;  
  GetCommState(hCom,&dcb);  
  dcb.BaudRate=   1200;  
  ....  
  if(!SetCommState(hCom,&dcb)){  
        MessageBox(^_^);  
        return;        
  }  
  Top

6 楼chifengwatch(chifengwatch)回复于 2003-12-02 13:08:28 得分 0

//接收,一般在线程中  
      DWORD   nBytesRead,   dwEvent,   dwError;  
      char   inbuff[1024];  
      COMSTAT   cs;  
      if   (   hComm   ==   INVALID_HANDLE_VALUE   )  
      {  
          return;  
      }  
          //取得状态  
      ClearCommError(   hComm   ,   &dwError   ,   &cs   );  
      if   (   cs.cbInQue   ==   0   )//无数据  
      {  
          return   ;  
      }  
        //   数据是否大于我们所准备的Buffer  
      if   (   cs.cbInQue   >   sizeof(   inbuff   )   )  
      {  
          PurgeComm(   hComm   ,   PURGE_RXCLEAR   );     //   清除COM   数据  
          return;  
      }  
      ReadFile(   hComm   ,   inbuff   ,   cs.cbInQue   ,   &nBytesRead   ,   NULL   );   //   接收COM   的数  
              String   Temp   =   "";  
                //   转移数据到变量中  
              inbuff[cs.cbInQue]=   '\0';  
              for   (   unsigned   long   i   =   0   ;   i   <=   cs.cbInQue   ;   i++   )  
              {  
                  Temp   +=   char(inbuff[i]);  
              }  
              frm_main->Memo1->Lines->Add(   Temp   )   ;//显示  
  //用ClearCommError(   hComm   ,   &dwError   ,   &cs   )取得缓冲区的状态  
  Top

相关问题

  • 串口编程
  • -----串口编程
  • 串口编程
  • 串口编程
  • 串口MODEM编程
  • 关于串口编程
  • 串口编程的问题:(((
  • Win2000下串口编程
  • 求救! 串口编程?
  • 串口编程问题

关键词

  • 端口
  • 数据
  • 通信
  • null
  • hcomm
  • dcb
  • 串口
  • comno
  • cbinque
  • inbuff

得分解答快速导航

  • 帖主:liyitc
  • chifengwatch

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

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