问题出在那里???

zephyr518 2005-01-26 10:51:37
///////////////////////////////////////////////////////
// 名 称: OpenPort()
//----------------------------------------------------
// 功 能: 打开串口
// 参 数: 无
//
// 返 回:FALSE:失 败
// TRUE: 成 功
////////////////////////////////////////////////////////
BOOL CLpControlCtrl::OpenPort(short nCom)
{
//初始化COMM控件
m_Comm.SetRThreshold(1);
m_Comm.SetInBufferSize(1024);
m_Comm.SetSettings("2400,n,8,1");
if (m_Comm.GetPortOpen())
m_Comm.SetPortOpen (FALSE);
m_Comm.SetCommPort(nCom);
if(m_Comm.GetPortOpen())
{
m_bOpenPort=FALSE;
m_Comm.SetPortOpen (FALSE);
return FALSE;
}
else
{
m_bOpenPort=TRUE;
m_Comm.SetPortOpen (TRUE);
m_Comm.GetInput();
m_Comm.SetInputLen(0);
return TRUE;
}
}
这段程序哪里出错?为什么始终返回FALSE?我的目的是当打开串口nCom时返回TRUE;否则返回FALSE。
(m_Comm串口通讯控件MScomm.)
...全文
118 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
MuseIn 2005-01-29
  • 打赏
  • 举报
回复
m_Com.SetCommPort(1);
if (!m_Com.GetPortOpen())
{
m_Com.SetSettings("2400,N,8,1");
m_Com.SetPortOpen(true);
m_Com.SetInBufferCount(0);
SetTimer(1,10,NULL);
InBuffer.bstrVal=new unsigned short[MESSAGELENGTH];
OutBuffer.bstrVal=new unsigned short[MESSAGELENGTH];
OutBuffer.vt=VT_BSTR;
}


// 一般写在 定时器
if (m_Com.GetInBufferCount()>=MESSAGELENGTH) {
InBuffer=m_Com.GetInput();
// handle the InBuffer.
// Fill the OutBuffer.
m_Com.SetOutput(OutBuffer);

zephyr518 2005-01-29
  • 打赏
  • 举报
回复
怎么没有人会呢?
zephyr518 2005-01-28
  • 打赏
  • 举报
回复
怎么没有人会?
zephyr518 2005-01-28
  • 打赏
  • 举报
回复
完成了
zephyr518 2005-01-26
  • 打赏
  • 举报
回复
补充一下。我的工程是ACtievX工程。
joachern 2005-01-26
  • 打赏
  • 举报
回复
可能你的 m_Comm 对象没有初始化完成,你看看最前面的代码

m_Comm.SetRThreshold(1);

是不是有错误!
zhaogaojian 2005-01-26
  • 打赏
  • 举报
回复
用一个串口调试工具看看
kingzai 2005-01-26
  • 打赏
  • 举报
回复
::CoInitalize(NULL)
AfxEnableControlContainer();

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧