通讯串口:VB/C++/C#串口通信源代码+详细注释用的是axMSComm控件,通信方式...
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
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。