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()) //如果串口已經(jīng)打開,則關(guān)閉。
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個數(shù)據(jù)位,1個停止位
m_ctrlComm.SetInputMode(1); //1:表示以二進制方式檢取數(shù)據(jù)
m_ctrlComm.SetRThreshold(1);
//參數(shù)1表示每當串口接收緩沖區(qū)中有多于或等于1個字符時將引發(fā)一個接收數(shù)據(jù)的OnComm事件
m_ctrlComm.SetInputLen(0); //設(shè)置當前接收區(qū)數(shù)據(jù)長度為0
m_ctrlComm.GetInput(); //先預讀緩沖區(qū)以清除殘留數(shù)據(jù)
/****************************************************************/
C#
if
(this.axMSComm1.PortOpen == true)
this.axMSComm1.PortOpen = false;
this.axMSComm1.CommPort = 1;//端口
this.axMSComm1.Settings =
"9600,n,8,1";//通信參數(shù)
this.axMSComm1.InputMode =
MSCommLib.InputModeConstants.comInputModeBinary;//接收數(shù)據(jù)的類型
this.axMSComm1.RThreshold = 1;
//接收緩沖區(qū)中接收到一個字符,就產(chǎn)生一次OnComm事件
//this.axMSComm1.OnComm += new
EventHandler(axMSComm1_OnComm); //注冊一個OnComm事件
this.axMSComm1.SThreshold =
0;//當發(fā)送緩沖區(qū)中字符數(shù)小于該值時,MSComm控件設(shè)置Commevent屬性為ComEvSend,并產(chǎn)生OnComm事件。若Sthreshold屬性設(shè)置為0,則不產(chǎn)生OnComm事件
this.axMSComm1.RTSEnable = true;//啟用請求發(fā)送
this.axMSComm1.DTREnable =
true;//接收就緒
this.axMSComm1.InputLen = 0;//一次從接收緩沖區(qū)中讀取字節(jié)數(shù),//
使用Input時為讀取全部資料
this.axMSComm1.NullDiscard =
false;
this.axMSComm1.PortOpen = true;
//打開端口