1.假如妳現在正在學習VC串口編程,強烈建議妳安裝壹個“虛擬串口軟件vspdxp.exe”,再找個“sscom3.2串口通訊調試工具”。之後就可以完全用軟件模擬串口通信來調試妳的vc程序,很方便
2.我自己寫了個程序實現妳的要求,vc6下測試通過,工程下載地址:/site/qiujiejia1/Home/BaiDu_Answer_VC_SERIAL_2.zip
3. 萍水e相逢 推薦的 “ 龔建偉的個人主頁,www.gjwtech.com ”絕對是學習串口通信的好網站,望有空多上去看看。
4.以下是主要代碼,僅供參考。
/****************************************************************************
在OnInitDialog()裏初始化
****************************************************************************/
BOOL CCommTest::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
//Initial COM
m_ctrlComm.SetCommPort(1); //選擇com1
m_ctrlComm.SetSettings("9600,n,8,1"); //通信參數設置 波特率9600,無校驗,8個數據位,1個停止位
m_ctrlComm.SetInBufferSize(1024); //指定接收緩沖區大小
m_ctrlComm.SetRThreshold(1); //參數1表示每當串口接收緩沖區中有多於或等於1個字符時將引發壹個接收數據的OnComm事件
m_ctrlComm.SetInputMode(1); //定義Input屬性獲取數據的方式(為0:文本方式;為1:二進制方式)。
m_ctrlComm.SetInputLen(0); //設置每次Input讀入的字符個數,缺省值為0,表明讀取接收緩沖 區中的全部內容。
m_ctrlComm.SetInBufferCount(0); //清空接收緩沖區
m_ctrlComm.SetPortOpen(TRUE); //打開串口
return TRUE; // return TRUE unless you set the focus to a control
}
/****************************************************************************
接收函數
****************************************************************************/
void CCommTest::OnComm()
{
char Rec_Data_Array[2048]; //用於接受數據
if (m_ctrlComm.GetCommEvent() == 2) //事件值為2表示接收緩沖區內有字符
{
VARIANT ReceiveData = m_ctrlComm.GetInput(); //獲取數據
int Data_Len = ReceiveData.parray->rgsabound->cElements; //取出壹維的數據個數
memcpy(Rec_Data_Array, (char*) ReceiveData.parray->pvData, Data_Len); //拷貝出數據
Rec_Data_Array[Data_Len] = 0;
}
//將獲取的字符串顯示在edit框裏
::SetWindowText(::GetDlgItem(m_hWnd,IDC_EDIT_RXDATA),Rec_Data_Array);
}
/****************************************************************************
發送函數
****************************************************************************/
void CCommTest::OnTransmit()
{
char buf[100]={0};
::GetWindowText(::GetDlgItem(m_hWnd,IDC_EDIT_TXDATA),buf,sizeof(buf));
m_ctrlComm.SetOutput(COleVariant(buf));//發送數據
}