分享

通讯串口:VB/C++/C#串口通信源代码+详细注释用的是axMSComm控件,通信方式...

 orion360doc 2010-12-27

VB
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
MSComm1.CommPort = i1
MSComm1.PortOpen = True

    MSComm1.InputMode = comInputModeBinary
MSComm1.InBufferCount = 0
MSComm1.InputLen = 0
MSComm1.Settings = "9600,N,8,1"
MSComm1.RThreshold = 1
MSComm1.OutBufferCount = 0

C++
/****************************************************************/
//串行口初始化
if(m_ctrlComm.GetPortOpen())    //如果串口已经打开,则关闭。
m_ctrlComm.SetPortOpen(FALSE);
m_ctrlComm.SetCommPort(1);     //选择com1
if( !m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(TRUE);   //打开串口
else
AfxMessageBox("不能打开串行口!");
m_ctrlComm.SetSettings("9600,n,8,1"); //波特率9600,无校验,8个数据位,1个停止位
m_ctrlComm.SetInputMode(1);     //1:表示以二进制方式检取数据
m_ctrlComm.SetRThreshold(1);     //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
m_ctrlComm.SetInputLen(0);     //设置当前接收区数据长度为0
m_ctrlComm.GetInput();      //先预读缓冲区以清除残留数据
/****************************************************************/

C#
if (this.axMSComm1.PortOpen == true)
this.axMSComm1.PortOpen = false;
this.axMSComm1.CommPort = 1;//端口
this.axMSComm1.Settings = "9600,n,8,1";//通信参数   
this.axMSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeBinary;//接收数据的类型
this.axMSComm1.RThreshold = 1; //接收缓冲区中接收到一个字符,就产生一次OnComm事件
//this.axMSComm1.OnComm += new EventHandler(axMSComm1_OnComm); //注册一个OnComm事件
this.axMSComm1.SThreshold = 0;//当发送缓冲区中字符数小于该值时,MSComm控件设置Commevent属性为ComEvSend,并产生OnComm事件。若Sthreshold属性设置为0,则不产生OnComm事件
this.axMSComm1.RTSEnable = true;//启用请求发送
this.axMSComm1.DTREnable = true;//接收就绪            
this.axMSComm1.InputLen = 0;//一次从接收缓冲区中读取字节数,// 使用Input時為讀取全部資料
this.axMSComm1.NullDiscard = false;
this.axMSComm1.PortOpen = true; //打开端口

来自: http://hi.baidu.com/mrmobilerobot/blog/item/d8b3577ba6e21dff0bd18779.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多