昨天工作用到了串口通信,MMP的,昨天懵逼了一下午,今天终于整通了,身为菜鸟,大师们是不懂这些心痛的。

进入主题:使用BCB提供的控件TComm编程方便且简单,TComm位于System分类里面。   / /备注(网友说这种方式可以用,当要求高的时候还是不够用的。)

1、窗口拖入一个TComm控件

2、属性框参数设置。

     / /备注(常需设置的参数:CommName串口名 、BaudRate波特率、ByteSize、Parity校验、ReadIntervalTimeout读串口时两字符时间间隔)

3、接收数据并处理

  BCB提供了 OnReceiveData()自动接收来自串口的数据

//备注(typedef void* Pointer;//标准定义的

void __fastcall cm1ReceiveData(TObject *Sender, Pointer Buffer,  // Buffer存放着读取的数据
WORD BufferLength); //Bufferlength 存放着 读取的数据的长度

4、发送数据  

  用串口对象调用写数据函数

function TComm.WriteCommData( pDataToWrite: PChar; dwSizeofDataToWrite: Word ): Boolean; // 参数一:发送的数据;参数二:发送的数据的长度

5、具体使用串口

TComm * cm1;
//1、打开串口
try
{
cm1->StartComm(); //函数会让程序挂掉,不知道为什么 try catch可规避,不影响使用
CM1PortOpenSucccessFlag=true;
}
catch(...)
{
m_step = -;
//Application->MessageBoxA("OK","串口打开失败",MB_OK|MB_SYSTEMMODAL);
} //2、发送的数据
  char * cmd;
  cmd="MCH\r\n"; //注意:命令MCH末尾要跟着\r\n不然串口不回数据,至于为什么,各位开脑洞吧
  bool rtn = cm1->WriteCommData(cmd,strlen(cmd)); //注意:第二个参数如果按照函数定义那样用sizeof函数是有问题的,sizeof求的是所占空间,而不是字符个数 //3、睡眠等待Sleep(500);
    发送数据后,接着要使用cm1ReceiveData串口返回的数据,需要等待一些时间。如果不等待,一直不等的 writeCommData将会出错。 //4、接收函数(自动接收)
void __fastcall TparaForm::cm1ReceiveData(TObject *Sender, Pointer Buffer,
      WORD BufferLength)
{
  char recvData[100];
  unsigned char revBuffer[100];
  memset(recvData, 0, 100);
  //AnsiString str;
  for(int i=0; i<BufferLength; i++, ((BYTE *)Buffer)++)
  {
    revBuffer[i] = *(BYTE *)Buffer ;
    recvData[i] = revBuffer[i];
  }
//得到char* 的recvData接收数据之后,根据需要使用,下面是个例子
    m_readData=recvData; //成员变量
    m_readDataLength=BufferLength;
} //5、使用完,关闭串口
cm1->StopComm();

工作小助攻:AccessPort串口监视软件 易学易用

参考链接:http://www.myexception.cn/h/530898.html(串口各项参数解释)

        https://bbs.csdn.net/topics/310121049(串口监视工具)

      https://blog.csdn.net/Tercel99/article/details/46690921(这个详细)

        http://ascii.911cha.com/(Ascii值对照表)

        http://www.cnblogs.com/azbane/p/8710064.html(AnsiString与各种数据类型间的相互转换)

棒棒哒~~么么哒

BCB 串口控件的使用 TComm的更多相关文章

  1. cport串口控件的应用

    cport是一个很强大的串口控件.支持delphi/bcb.最新版本是v4.10.官网下载地址是:http://sourceforge.net/projects/comport/files/compo ...

  2. Victor 串口 VCL 控件 - 简单实用, 功能强大的 C++ Builder 串口控件!

    源:Victor 串口 VCL 控件 - 简单实用, 功能强大的 C++ Builder 串口控件! 2014年02月06日发布控件的重要更新版本: Victor 串口控件 1.5.0.2 版本 (包 ...

  3. delphi SPCOMM串口控件

    在Delphi7.0中安装Spcomm串口通信控件的方法为:选择Delphi7.0的“Component”菜单,点击“Install Component...”菜单项,然后在弹出的Into exist ...

  4. bcb安装控件方法汇总

    1.BCB 菜单: Project->Options->Packages->Add[喝小酒的网摘]http://blog.const.net.cn/a/8496.htm如果是BCB6 ...

  5. C# 实现串口发送数据(不用串口控件版)

    参考:https://blog.csdn.net/mannix_lei/article/details/79979432 https://www.cnblogs.com/ElijahZeng/p/76 ...

  6. winform串口控件serialPort1的使用

    serialPort1 控件使用的关键点主要有三: 1.配置串口号2.配置数据接收事件3.打开串口 关键代码如下: private void Form1_Load(object sender, Eve ...

  7. BCB:WebBrowser 控件说明

      控件文件:system32\shdocvw.oca  shdocvw.dll 注册:regsvr32 shdocvw.dll WebBrowser 是 IE 内核做的 VB 控件, WebBrow ...

  8. VS2013+MFC串口控件的简单上位机

    因为做东西,正好用到这里.所以就上传了文件分享一下. 利用VS带的MFC库,用起来还是比较方便的.空间的程序构架都是自动生成的,具体的程序自己加进去就行. 里面有整个的工程 还带有一个生成的EXE文件 ...

  9. BCB TLable控件透明背景属性

    当我们希望一个Label适应它父窗口的背景时,设置Tranparent属性值就OK Transparent:true 透明  false 不透明

随机推荐

  1. create-react-app项目中的eslint

    "no-multi-spaces": 1, //禁止多个空格 "jsx-quotes": 1, //此规则强制在JSX属性中一致使用双引号或单引号 " ...

  2. LeetCode 41 First Missing Positive(找到数组中第一个丢失的正数)

    题目链接: https://leetcode.com/problems/first-missing-positive/?tab=Description   给出一个未排序的数组,求出第一个丢失的正数. ...

  3. jvisualvm连接远程应用终于成功,附踩大坑记录!!(二:jmx方式)

    一.问题概述 参考前一篇: jvisualvm连接远程应用终于成功,附踩大坑记录!!(一:jstatd方式) 这篇主要讲讲jmx方式. 二.启动前设置jmx参数 我这边拿tomcat举例,其余java ...

  4. 添加Net4CollectionTypeFactory的原因

    .NET4.0已经实现了该功能 http://jahav.com/blog/nhibernate-using-net-4-iset/ NHibernate using .NET 4 ISet 0 Co ...

  5. 【CF840C】On the Bench DP

    [CF840C]On the Bench 题意:给你一个长度为n的数组{ai},定义一个1到n的排列是合法的,当且仅当对于$1\le i <n$,$a_i\times a_{i+1}$不是完全平 ...

  6. Cocoa Touch框架

    iOS – Cocoa Touch简介: iOS 应用程序的基础 Cocoa Touch 框架重用了许多 Mac 系统的成熟模式,但是它更加专注于触摸的接口和优化.UIKit 为开发者提供了在 iOS ...

  7. jenkins之另辟蹊径实现根据svn项目实现智能选择

    项目要求,根据svn选择的trunk或branches及tags里的各分支,动态选择参数.一开始认为很简单,直接用jenkins中的List Subversion tags插件及active choi ...

  8. eclipse使用maven打包时去掉测试类

    eclipse使用maven打包时去掉测试类 在pom.xml文件中增加如下配置: <plugin> <groupId>org.apache.maven.plugins< ...

  9. jsp页面获取参数的方法(url解析、el表达式赋值、session取值)【原创】

    最近使用myEclispse做网站,使用jsp+js+css做页面,网站中常用到从列表进入详情页面的跳转,下面对详情页面的值填充方式做一个简单总结: 1.url中使用request获取参数 jsp上方 ...

  10. 7.20python线程(2)

    RLock 递归锁 线程事件