CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  网络及通讯开发

一个串口通讯的简单问题

楼主jandger(壮壮)2005-05-12 16:59:11 在 C++ Builder / 网络及通讯开发 提问

小弟对C++Builder在串口方面的应用不慎了解,请各位大虾帮忙。  
  我接触了一个仪表与计算机通讯的问题,仪表需要用RS232串口与计算机相连,计算机每发一条指令,仪表回复一条信息,其读指令的格式为:仪表地址+'82'+参数代号+0+0+效验和(其中仪表地址两个字符,参数代号一个字符,校验和两个字符,共八个字符)。串口的通讯协议为8位数据位,2位停止位,无效验位。  
  请问这里的数据位和停止位(一共是10位)与计算机发送的指令的位数有没有关系?计算机的指令是由字符串数组成还是由位数组组成?指令里的校验和同通讯协议的校验位有没有关系? 问题点数:20、回复次数:9Top

1 楼fidt982(痴心绝对~0~)回复于 2005-05-12 19:56:11 得分 0

你只需设置你和仪表通迅部分的格式,  
  什么停止位校验位,串口自己负责Top

2 楼cb2005(cb)回复于 2005-05-13 09:07:25 得分 0

偶也是刚弄、这个,以后多关照..  
   
  我用的是char[]做的.收时也是这样.Top

3 楼cczlp(不惑)回复于 2005-05-13 10:36:10 得分 5

请问这里的数据位和停止位(一共是10位)与计算机发送的指令的位数有没有关系?  
  ===========================================================================  
  停止位是自动添加的,你不需要理会.   数据位是8位,可以正确发送字节数据,如果串口数据位小于8,  
  则只发送从低到高发送指定位数,如串口数据位7,则你要发送数据的最高一位丢失.  
   
  计算机的指令是由字符串数组成还是由位数组组成?  
  ================================================  
  不太明白你的意思.   计算机最后发送的都是0~255的ASCii   ,硬件转化为高低电平.  
   
  指令里的校验和同通讯协议的校验位有没有关系?  
  ============================================  
  没有  
   
  Top

4 楼jandger(壮壮)回复于 2005-05-13 10:47:39 得分 0

如何设置串口通讯的数据位,停止位?  
  我想设置为8位数据位,2位停止位。  
  用GetCommState(hComm,&dcb);  
      dcb.ByteSize=?      
      dcb.StopBits=?;Top

5 楼wilsonloveada(ada是MM)回复于 2005-05-13 11:14:39 得分 0

你用Pcomm试试,特别好用!Top

6 楼jandger(壮壮)回复于 2005-05-13 13:52:40 得分 0

Pcomm是什么呀,是C++Builder里的控件还是其他的什么软件?Top

7 楼leonatcs(LeonKennedy)(时常逛一逛csdn,有益身心健康。)回复于 2005-05-13 15:30:11 得分 5

串口编程的四种方法  
   
  1.使用win32API函数   同步读写的例子如下:  
   
   
  //Open   ComPort   -------Sync(namely   nonoverlaped)  
  HANDLE   hCom;  
  hCom   =   CreateFile(   "COM1",GENERIC_READ   |   GENERIC_WRITE,0,0,  
  OPEN_EXISTING,0,0);  
  if   (hCom   ==   INVALID_HANDLE_VALUE)   return;  
   
  //Set   DCB  
  TDCB   dcb1;  
  GetCommState(hCom,&dcb1);  
  dcb1.BaudRate   =   9600;  
  //and   other   settings...  
  SetCommState(hCom,&dcb1);  
   
  //Write   to   comport   -------Sync(namely   nonoverlaped)  
  unsigned   long   k   =   0;   //   use   by   WriteFile/ReadFile   function   to   return   how   many   bytes   are   written/read.  
  char   charY   =   'Y';   //char   to   send/receive  
  WriteFile(hCom,   &charY,   sizeof(char),   &k,   NULL);  
   
  //Sleep(2000);  
   
  //Read   from   comport   -------Sync(namely   nonoverlaped)  
  COMSTAT   ComStat;  
  DWORD   dwErrorFlags;  
  ClearCommError(hCom,&dwErrorFlags,&ComStat);  
  k   =   0;  
  if(   ComStat.cbInQue   >   0)   //cbInQue是输入队列的长度。  
  ReadFile(hCom,   &charY,   sizeof(char),   &k,   NULL);  
  if   (k)   Null;//something   been   read   into   tempchar  
  else   GetLastError();  
   
  //Close   Comport  
  CloseHandle(hCom);  
   
   
  //   几个易混的数据结构  
  //   TCommProp   通信接口的属性,定义了接口的能力,如最大波特率,通信设备类型。  
  //   COMSTATE   串口的通信状态,例如是否在等待CTS信号,输入输出队列是否有数据。  
  //   TDCB   串口的设备控制块,定义串口通信时使用的波特率,停止位,校验方法等。  
   
  Top

8 楼leonatcs(LeonKennedy)(时常逛一逛csdn,有益身心健康。)回复于 2005-05-13 15:31:14 得分 5

2.使用控件:  
              BCB:    
  TComThread   (http://www.mwowm.com/comthread/)  
  comm32bcb.zip  
  VictorComm  
            Delphi:  
  Spcomm    
            Both:  
  TurboPower   Async   Professional   (Apro)   功能最为复杂和强大  
  Dejan   Crnila's   ComPort  
              VC:  
  Zcommex  
              ActiveX:  
  MSComm32.ocx     简单,常用  
  3.嵌入汇编。  
   
  4.VxD  
  Top

9 楼leonatcs(LeonKennedy)(时常逛一逛csdn,有益身心健康。)回复于 2005-05-13 15:36:19 得分 5

上面说的控件网上都有的下,随便搜搜就可以。  
   
  具体可以参见下面这些书:(我就看的第一本:))  
  http://www.dearbook.com.cn/book/viewbook.aspx?pno=TS004952  
  http://www.dearbook.com.cn/book/viewbook.aspx?pno=TS0022958  
  http://www.dearbook.com.cn/book/viewbook.aspx?pno=TS001037Top

相关问题

  • 串口通讯。。很简单的
  • 串口通讯简单问题?
  • 求一简单的串口通讯程序。(MSComm)
  • 串口通讯
  • 串口通讯!!!
  • 串口通讯
  • 串口通讯
  • 串口通讯?[Delphi]
  • spcomm串口通讯
  • PB串口通讯?

关键词

  • c++builder
  • 指令
  • 数据
  • 计算机
  • 字符
  • dearbook
  • 控件
  • 位数
  • 通讯
  • 协议

得分解答快速导航

  • 帖主:jandger
  • cczlp
  • leonatcs
  • leonatcs
  • leonatcs

相关链接

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

广告也精彩

反馈

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