用VS2013編輯了一個串口程式,問題是原來電腦里有一個COM1,新加入的串口是COM3,用的是mscomm這個串口控制元件,在沒有COM2的情況下,COM3可以被識別但是打不開啊。。好煩躁,求大神指導!!
另外我加入了自動識別已有串口的程式。默認選擇COM1。
我感覺是這行程式有問題:
m_mscom.put_CommPort((m_comb.GetCurSel() + 1));
uj5u.com熱心網友回復:
(m_comb.GetCurSel() + 1)對不對先寫死看看
uj5u.com熱心網友回復:
你之前有沒有get_PortOpenuj5u.com熱心網友回復:
前面有的
if (!m_mscom.get_PortOpen())
{
m_comb2.GetLBText(m_comb2.GetCurSel(), str1); //取得所選的字串,并存放在str1里面
str1 = str1 + ',' + 'm' + ',' + '8' + ',' + '1'; //波特率str1,mark校驗,8個資料位,1個停止位(這是系統已經設定好了,無需自己再添加)
m_mscom.put_CommPort((m_comb.GetCurSel() + 1)); //選擇串口
m_mscom.put_InputMode(1); //設定輸入方式為二進制方式
m_mscom.put_Settings(str1); //波特率為(波特率組合框),無校驗,8資料位,1個停止位
m_mscom.put_InputLen(1); //設定讀取當前接收區所有資料
m_mscom.put_SThreshold(0); //一次發送所有資料,發送時不產生OnCommMscomm1事件
m_mscom.put_RThreshold(1); //緩沖區一個字符引發事件
m_mscom.put_RTSEnable(1); //設定RT允許
m_mscom.put_PortOpen(true); //打開串口
uj5u.com熱心網友回復:
把(m_comb.GetCurSel() + 1) 這里面的+1換成+3就可以直接打開COM3.因為m_comb.GetCurSel() 這個值是0uj5u.com熱心網友回復:
直接從ComboBox字符中提取
int iPort = 0;
int iSel = m_comb.GetCurSel();
if(iSel != CB_ERR)
{
CString szPort;
m_comb.GetLBText(iSel, szPort);
_stscanf(szPort, _T("COM%d"), &iPort);
TRACE(_T("Port = %d\n"), iPort);
}
uj5u.com熱心網友回復:
您好,我這邊又出現新問題了,在讀取資料時候,之前一直好好的get_Input這個函式突然不動了,單步除錯也是一直卡在這句話上,求救啊uj5u.com熱心網友回復:
判斷 ComEvent 是 2 了么?uj5u.com熱心網友回復:
判斷了的,請問能不能加您的QQ詳細的請教呢,我的QQ494375498.萬分感謝uj5u.com熱心網友回復:
你跟別人說話也得參考別人,你這樣直接說,別人不會提示的,哪還記得回來看自己回過的帖子呢
uj5u.com熱心網友回復:
http://blog.csdn.net/cvbtvbwu/article/details/24694739可以用這個串口例子
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/131315.html
標籤:基礎類
